From 6b6633821e207ad8e411e8dabf7772b3d2ef7953 Mon Sep 17 00:00:00 2001 From: Mrugesh Mohapatra Date: Thu, 22 Oct 2020 07:43:50 +0530 Subject: [PATCH] chore: sync-up translations from Crowdin --- docs/i18n/Afrikaans/FAQ.md | 61 +- docs/i18n/Afrikaans/_sidebar.md | 21 +- docs/i18n/Afrikaans/devops.md | 489 +++++++++++- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ .../Afrikaans/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../how-to-work-on-coding-challenges.md | 101 ++- .../how-to-work-on-the-docs-theme.md | 22 +- .../how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Afrikaans/index.md | 38 +- .../moderator-handbook.md | 170 ++++- docs/i18n/Arabic/FAQ.md | 113 ++- docs/i18n/Arabic/_sidebar.md | 51 +- docs/i18n/Arabic/devops.md | 705 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 327 -------- .../flight-manuals/using-reply-templates.md | 128 ---- .../working-on-virtual-machines.md | 478 ------------ .../how-to-catch-outgoing-emails-locally.md | 88 +-- .../how-to-help-with-video-challenges.md | 222 +++--- .../i18n/Arabic/how-to-open-a-pull-request.md | 178 ++--- .../how-to-setup-freecodecamp-locally.md | 482 ++++++------ docs/i18n/Arabic/how-to-setup-wsl.md | 108 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 467 +++++++----- .../Arabic/how-to-work-on-the-docs-theme.md | 58 +- .../Arabic/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Arabic/index.md | 48 +- .../moderator-handbook.md | 170 ++++- docs/i18n/Catalan/FAQ.md | 61 +- docs/i18n/Catalan/_sidebar.md | 21 +- docs/i18n/Catalan/devops.md | 489 +++++++++++- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ .../Catalan/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../how-to-work-on-coding-challenges.md | 101 ++- .../Catalan/how-to-work-on-the-docs-theme.md | 22 +- .../Catalan/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Catalan/index.md | 38 +- .../moderator-handbook.md | 170 ++++- docs/i18n/Chinese/FAQ.md | 105 ++- docs/i18n/Chinese/_sidebar.md | 51 +- docs/i18n/Chinese/devops.md | 709 +++++++++++++++--- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ .../how-to-catch-outgoing-emails-locally.md | 107 +-- .../how-to-help-with-video-challenges.md | 194 ++--- .../Chinese/how-to-open-a-pull-request.md | 174 ++--- .../how-to-setup-freecodecamp-locally.md | 480 ++++++------ docs/i18n/Chinese/how-to-setup-wsl.md | 108 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 435 ++++++----- .../Chinese/how-to-work-on-the-docs-theme.md | 56 +- .../Chinese/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Chinese/index.md | 50 +- .../moderator-handbook.md | 170 ++++- docs/i18n/Czech/FAQ.md | 99 +-- docs/i18n/Czech/_sidebar.md | 51 +- docs/i18n/Czech/devops.md | 693 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 481 ------------ .../how-to-catch-outgoing-emails-locally.md | 74 +- .../how-to-help-with-video-challenges.md | 178 ++--- docs/i18n/Czech/how-to-open-a-pull-request.md | 138 ++-- .../how-to-setup-freecodecamp-locally.md | 446 +++++------ docs/i18n/Czech/how-to-setup-wsl.md | 92 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../Czech/how-to-work-on-coding-challenges.md | 419 ++++++----- .../Czech/how-to-work-on-the-docs-theme.md | 56 +- .../Czech/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Czech/index.md | 50 +- docs/i18n/Czech/moderator-handbook.md | 456 +++++++++++ docs/i18n/Danish/FAQ.md | 99 +-- docs/i18n/Danish/_sidebar.md | 47 +- docs/i18n/Danish/devops.md | 687 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 481 ------------ .../how-to-catch-outgoing-emails-locally.md | 82 +- .../how-to-help-with-video-challenges.md | 214 +++--- .../i18n/Danish/how-to-open-a-pull-request.md | 146 ++-- .../how-to-setup-freecodecamp-locally.md | 440 +++++------ docs/i18n/Danish/how-to-setup-wsl.md | 94 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 429 ++++++----- .../Danish/how-to-work-on-the-docs-theme.md | 54 +- .../Danish/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Danish/index.md | 50 +- docs/i18n/Danish/moderator-handbook.md | 456 +++++++++++ docs/i18n/Dutch/FAQ.md | 103 ++- docs/i18n/Dutch/_sidebar.md | 49 +- docs/i18n/Dutch/devops.md | 699 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 325 -------- .../flight-manuals/using-reply-templates.md | 128 ---- .../working-on-virtual-machines.md | 476 ------------ .../how-to-catch-outgoing-emails-locally.md | 84 +-- .../how-to-help-with-video-challenges.md | 180 ++--- docs/i18n/Dutch/how-to-open-a-pull-request.md | 152 ++-- .../how-to-setup-freecodecamp-locally.md | 452 +++++------ docs/i18n/Dutch/how-to-setup-wsl.md | 96 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../Dutch/how-to-work-on-coding-challenges.md | 429 ++++++----- .../Dutch/how-to-work-on-the-docs-theme.md | 56 +- .../Dutch/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Dutch/index.md | 50 +- docs/i18n/Dutch/moderator-handbook.md | 456 +++++++++++ docs/i18n/Finnish/FAQ.md | 99 +-- docs/i18n/Finnish/_sidebar.md | 49 +- docs/i18n/Finnish/devops.md | 689 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 481 ------------ .../how-to-catch-outgoing-emails-locally.md | 80 +- .../how-to-help-with-video-challenges.md | 228 +++--- .../Finnish/how-to-open-a-pull-request.md | 134 ++-- .../how-to-setup-freecodecamp-locally.md | 436 +++++------ docs/i18n/Finnish/how-to-setup-wsl.md | 96 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 439 ++++++----- .../Finnish/how-to-work-on-the-docs-theme.md | 54 +- .../Finnish/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Finnish/index.md | 50 +- docs/i18n/Finnish/moderator-handbook.md | 456 +++++++++++ docs/i18n/French/FAQ.md | 99 +-- docs/i18n/French/_sidebar.md | 51 +- docs/i18n/French/devops.md | 691 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 325 -------- .../flight-manuals/using-reply-templates.md | 128 ---- .../working-on-virtual-machines.md | 482 ------------ .../how-to-catch-outgoing-emails-locally.md | 74 +- .../how-to-help-with-video-challenges.md | 165 ++-- .../i18n/French/how-to-open-a-pull-request.md | 148 ++-- .../how-to-setup-freecodecamp-locally.md | 452 +++++------ docs/i18n/French/how-to-setup-wsl.md | 88 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 452 ++++++----- .../French/how-to-work-on-the-docs-theme.md | 52 +- .../French/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/French/index.md | 50 +- docs/i18n/French/moderator-handbook.md | 456 +++++++++++ docs/i18n/German/FAQ.md | 103 ++- docs/i18n/German/_sidebar.md | 51 +- docs/i18n/German/devops.md | 686 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 325 -------- .../flight-manuals/using-reply-templates.md | 125 --- .../working-on-virtual-machines.md | 482 ------------ .../how-to-catch-outgoing-emails-locally.md | 76 +- .../how-to-help-with-video-challenges.md | 108 +-- .../i18n/German/how-to-open-a-pull-request.md | 140 ++-- .../how-to-setup-freecodecamp-locally.md | 444 +++++------ docs/i18n/German/how-to-setup-wsl.md | 90 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 377 ++++++---- .../German/how-to-work-on-the-docs-theme.md | 54 +- .../German/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/German/index.md | 50 +- docs/i18n/German/moderator-handbook.md | 456 +++++++++++ docs/i18n/Greek/FAQ.md | 61 +- docs/i18n/Greek/_sidebar.md | 21 +- docs/i18n/Greek/devops.md | 489 +++++++++++- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ docs/i18n/Greek/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../Greek/how-to-work-on-coding-challenges.md | 101 ++- .../Greek/how-to-work-on-the-docs-theme.md | 22 +- .../Greek/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Greek/index.md | 38 +- docs/i18n/Greek/moderator-handbook.md | 456 +++++++++++ docs/i18n/Hebrew/FAQ.md | 61 +- docs/i18n/Hebrew/_sidebar.md | 21 +- docs/i18n/Hebrew/devops.md | 489 +++++++++++- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ .../i18n/Hebrew/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../how-to-work-on-coding-challenges.md | 101 ++- .../Hebrew/how-to-work-on-the-docs-theme.md | 22 +- .../Hebrew/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Hebrew/index.md | 38 +- docs/i18n/Hebrew/moderator-handbook.md | 456 +++++++++++ docs/i18n/Hindi/FAQ.md | 61 +- docs/i18n/Hindi/_sidebar.md | 29 +- docs/i18n/Hindi/devops.md | 489 +++++++++++- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ docs/i18n/Hindi/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../Hindi/how-to-work-on-coding-challenges.md | 101 ++- .../Hindi/how-to-work-on-the-docs-theme.md | 34 +- .../Hindi/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Hindi/index.md | 38 +- docs/i18n/Hindi/moderator-handbook.md | 456 +++++++++++ docs/i18n/Hungarian/FAQ.md | 61 +- docs/i18n/Hungarian/_sidebar.md | 21 +- docs/i18n/Hungarian/devops.md | 489 +++++++++++- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ .../Hungarian/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../how-to-work-on-coding-challenges.md | 101 ++- .../how-to-work-on-the-docs-theme.md | 22 +- .../how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Hungarian/index.md | 38 +- docs/i18n/Hungarian/moderator-handbook.md | 456 +++++++++++ docs/i18n/Italian/FAQ.md | 99 +-- docs/i18n/Italian/_sidebar.md | 51 +- docs/i18n/Italian/devops.md | 681 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 325 -------- .../flight-manuals/using-reply-templates.md | 128 ---- .../working-on-virtual-machines.md | 482 ------------ .../how-to-catch-outgoing-emails-locally.md | 78 +- .../how-to-help-with-video-challenges.md | 224 +++--- .../Italian/how-to-open-a-pull-request.md | 134 ++-- .../how-to-setup-freecodecamp-locally.md | 430 +++++------ docs/i18n/Italian/how-to-setup-wsl.md | 92 +-- .../how-to-use-docker-on-windows-home.md | 12 +- .../how-to-work-on-coding-challenges.md | 420 ++++++----- .../Italian/how-to-work-on-the-docs-theme.md | 52 +- .../Italian/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Italian/index.md | 50 +- docs/i18n/Italian/moderator-handbook.md | 456 +++++++++++ docs/i18n/Japanese/FAQ.md | 99 +-- docs/i18n/Japanese/_sidebar.md | 51 +- docs/i18n/Japanese/devops.md | 689 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 328 -------- .../flight-manuals/using-reply-templates.md | 124 --- .../working-on-virtual-machines.md | 482 ------------ .../how-to-catch-outgoing-emails-locally.md | 78 +- .../how-to-help-with-video-challenges.md | 78 +- .../Japanese/how-to-open-a-pull-request.md | 146 ++-- .../how-to-setup-freecodecamp-locally.md | 446 ++++++----- docs/i18n/Japanese/how-to-setup-wsl.md | 84 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 388 ++++++---- .../Japanese/how-to-work-on-the-docs-theme.md | 68 +- .../Japanese/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Japanese/index.md | 50 +- docs/i18n/Japanese/moderator-handbook.md | 456 +++++++++++ docs/i18n/Korean/FAQ.md | 61 +- docs/i18n/Korean/_sidebar.md | 21 +- docs/i18n/Korean/devops.md | 489 +++++++++++- .../flight-manuals/moderator-handbook.md | 325 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 476 ------------ .../i18n/Korean/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../how-to-work-on-coding-challenges.md | 101 ++- .../Korean/how-to-work-on-the-docs-theme.md | 22 +- .../Korean/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Korean/index.md | 38 +- docs/i18n/Korean/moderator-handbook.md | 456 +++++++++++ docs/i18n/Norwegian/FAQ.md | 103 ++- docs/i18n/Norwegian/_sidebar.md | 49 +- docs/i18n/Norwegian/devops.md | 695 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 481 ------------ .../how-to-catch-outgoing-emails-locally.md | 88 +-- .../how-to-help-with-video-challenges.md | 223 +++--- .../Norwegian/how-to-open-a-pull-request.md | 156 ++-- .../how-to-setup-freecodecamp-locally.md | 456 +++++------ docs/i18n/Norwegian/how-to-setup-wsl.md | 98 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 411 ++++++---- .../how-to-work-on-the-docs-theme.md | 52 +- .../how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Norwegian/index.md | 50 +- docs/i18n/Norwegian/moderator-handbook.md | 456 +++++++++++ docs/i18n/Polish/FAQ.md | 99 +-- docs/i18n/Polish/_sidebar.md | 51 +- docs/i18n/Polish/devops.md | 691 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 325 -------- .../flight-manuals/using-reply-templates.md | 128 ---- .../working-on-virtual-machines.md | 478 ------------ .../how-to-catch-outgoing-emails-locally.md | 80 +- .../how-to-help-with-video-challenges.md | 195 ++--- .../i18n/Polish/how-to-open-a-pull-request.md | 148 ++-- .../how-to-setup-freecodecamp-locally.md | 462 ++++++------ docs/i18n/Polish/how-to-setup-wsl.md | 98 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 439 ++++++----- .../Polish/how-to-work-on-the-docs-theme.md | 54 +- .../Polish/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Polish/index.md | 50 +- docs/i18n/Polish/moderator-handbook.md | 456 +++++++++++ docs/i18n/Portuguese/FAQ.md | 103 ++- docs/i18n/Portuguese/_sidebar.md | 51 +- docs/i18n/Portuguese/devops.md | 691 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ .../how-to-catch-outgoing-emails-locally.md | 83 +- .../how-to-help-with-video-challenges.md | 178 ++--- .../Portuguese/how-to-open-a-pull-request.md | 142 ++-- .../how-to-setup-freecodecamp-locally.md | 458 +++++------ docs/i18n/Portuguese/how-to-setup-wsl.md | 102 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 501 +++++++------ .../how-to-work-on-the-docs-theme.md | 54 +- .../how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Portuguese/index.md | 50 +- docs/i18n/Portuguese/moderator-handbook.md | 456 +++++++++++ docs/i18n/Romanian/FAQ.md | 101 +-- docs/i18n/Romanian/_sidebar.md | 51 +- docs/i18n/Romanian/devops.md | 689 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 481 ------------ .../how-to-catch-outgoing-emails-locally.md | 86 +-- .../how-to-help-with-video-challenges.md | 231 +++--- .../Romanian/how-to-open-a-pull-request.md | 140 ++-- .../how-to-setup-freecodecamp-locally.md | 450 +++++------ docs/i18n/Romanian/how-to-setup-wsl.md | 104 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 429 ++++++----- .../Romanian/how-to-work-on-the-docs-theme.md | 56 +- .../Romanian/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Romanian/index.md | 50 +- docs/i18n/Romanian/moderator-handbook.md | 456 +++++++++++ docs/i18n/Russian/FAQ.md | 113 ++- docs/i18n/Russian/_sidebar.md | 51 +- docs/i18n/Russian/devops.md | 685 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 325 -------- .../flight-manuals/using-reply-templates.md | 128 ---- .../working-on-virtual-machines.md | 482 ------------ .../how-to-catch-outgoing-emails-locally.md | 78 +- .../how-to-help-with-video-challenges.md | 171 ++--- .../Russian/how-to-open-a-pull-request.md | 142 ++-- .../how-to-setup-freecodecamp-locally.md | 464 ++++++------ docs/i18n/Russian/how-to-setup-wsl.md | 96 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 454 ++++++----- .../Russian/how-to-work-on-the-docs-theme.md | 52 +- .../Russian/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Russian/index.md | 50 +- docs/i18n/Russian/moderator-handbook.md | 456 +++++++++++ docs/i18n/Serbian/FAQ.md | 61 +- docs/i18n/Serbian/_sidebar.md | 21 +- docs/i18n/Serbian/devops.md | 489 +++++++++++- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ .../Serbian/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../how-to-work-on-coding-challenges.md | 101 ++- .../Serbian/how-to-work-on-the-docs-theme.md | 22 +- .../Serbian/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Serbian/index.md | 38 +- docs/i18n/Serbian/moderator-handbook.md | 456 +++++++++++ docs/i18n/Spanish/FAQ.md | 61 +- docs/i18n/Spanish/_sidebar.md | 21 +- docs/i18n/Spanish/devops.md | 489 +++++++++++- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ .../Spanish/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../how-to-work-on-coding-challenges.md | 101 ++- .../Spanish/how-to-work-on-the-docs-theme.md | 22 +- .../Spanish/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Spanish/index.md | 38 +- docs/i18n/Spanish/moderator-handbook.md | 456 +++++++++++ docs/i18n/Swahili/FAQ.md | 82 ++ docs/i18n/Swahili/_sidebar.md | 39 + docs/i18n/Swahili/devops.md | 708 +++++++++++++++++ .../how-to-catch-outgoing-emails-locally.md | 100 +++ .../how-to-help-with-video-challenges.md | 199 +++++ .../Swahili/how-to-open-a-pull-request.md | 179 +++++ .../how-to-setup-freecodecamp-locally.md | 546 ++++++++++++++ docs/i18n/Swahili/how-to-setup-wsl.md | 129 ++++ .../how-to-use-docker-on-windows-home.md | 15 + .../how-to-work-on-coding-challenges.md | 622 +++++++++++++++ .../Swahili/how-to-work-on-the-docs-theme.md | 54 ++ .../Swahili/how-to-work-on-the-news-theme.md | 99 +++ docs/i18n/Swahili/index.md | 43 ++ docs/i18n/Swahili/moderator-handbook.md | 456 +++++++++++ docs/i18n/Swedish/FAQ.md | 99 +-- docs/i18n/Swedish/_sidebar.md | 51 +- docs/i18n/Swedish/devops.md | 695 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 481 ------------ .../how-to-catch-outgoing-emails-locally.md | 88 +-- .../how-to-help-with-video-challenges.md | 218 +++--- .../Swedish/how-to-open-a-pull-request.md | 158 ++-- .../how-to-setup-freecodecamp-locally.md | 466 ++++++------ docs/i18n/Swedish/how-to-setup-wsl.md | 96 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 443 ++++++----- .../Swedish/how-to-work-on-the-docs-theme.md | 52 +- .../Swedish/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Swedish/index.md | 50 +- docs/i18n/Swedish/moderator-handbook.md | 456 +++++++++++ docs/i18n/Turkish/FAQ.md | 61 +- docs/i18n/Turkish/_sidebar.md | 21 +- docs/i18n/Turkish/devops.md | 489 +++++++++++- .../flight-manuals/moderator-handbook.md | 325 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 476 ------------ .../Turkish/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../how-to-work-on-coding-challenges.md | 101 ++- .../Turkish/how-to-work-on-the-docs-theme.md | 22 +- .../Turkish/how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Turkish/index.md | 38 +- docs/i18n/Turkish/moderator-handbook.md | 456 +++++++++++ docs/i18n/Ukrainian/FAQ.md | 111 ++- docs/i18n/Ukrainian/_sidebar.md | 51 +- docs/i18n/Ukrainian/devops.md | 685 ++++++++++++++--- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 481 ------------ .../how-to-catch-outgoing-emails-locally.md | 82 +- .../how-to-help-with-video-challenges.md | 194 ++--- .../Ukrainian/how-to-open-a-pull-request.md | 140 ++-- .../how-to-setup-freecodecamp-locally.md | 456 +++++------ docs/i18n/Ukrainian/how-to-setup-wsl.md | 104 +-- .../how-to-use-docker-on-windows-home.md | 14 +- .../how-to-work-on-coding-challenges.md | 401 ++++++---- .../how-to-work-on-the-docs-theme.md | 54 +- .../how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Ukrainian/index.md | 50 +- docs/i18n/Ukrainian/moderator-handbook.md | 456 +++++++++++ docs/i18n/Vietnamese/FAQ.md | 61 +- docs/i18n/Vietnamese/_sidebar.md | 21 +- docs/i18n/Vietnamese/devops.md | 489 +++++++++++- .../flight-manuals/moderator-handbook.md | 326 -------- .../flight-manuals/using-reply-templates.md | 126 ---- .../working-on-virtual-machines.md | 475 ------------ .../Vietnamese/how-to-open-a-pull-request.md | 4 +- .../how-to-setup-freecodecamp-locally.md | 12 +- .../how-to-work-on-coding-challenges.md | 101 ++- .../how-to-work-on-the-docs-theme.md | 22 +- .../how-to-work-on-the-news-theme.md | 101 ++- docs/i18n/Vietnamese/index.md | 38 +- docs/i18n/Vietnamese/moderator-handbook.md | 456 +++++++++++ 442 files changed, 49506 insertions(+), 41411 deletions(-) delete mode 100644 docs/i18n/Afrikaans/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Afrikaans/flight-manuals/working-on-virtual-machines.md rename docs/i18n/Afrikaans/{flight-manuals => }/moderator-handbook.md (84%) delete mode 100644 docs/i18n/Arabic/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Arabic/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Arabic/flight-manuals/working-on-virtual-machines.md rename docs/i18n/{Catalan/flight-manuals => Arabic}/moderator-handbook.md (84%) delete mode 100644 docs/i18n/Catalan/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Catalan/flight-manuals/working-on-virtual-machines.md rename docs/i18n/{Greek/flight-manuals => Catalan}/moderator-handbook.md (84%) delete mode 100644 docs/i18n/Chinese/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Chinese/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Chinese/flight-manuals/working-on-virtual-machines.md rename docs/i18n/{Hebrew/flight-manuals => Chinese}/moderator-handbook.md (84%) delete mode 100644 docs/i18n/Czech/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Czech/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Czech/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Czech/moderator-handbook.md delete mode 100644 docs/i18n/Danish/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Danish/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Danish/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Danish/moderator-handbook.md delete mode 100644 docs/i18n/Dutch/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Dutch/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Dutch/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Dutch/moderator-handbook.md delete mode 100644 docs/i18n/Finnish/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Finnish/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Finnish/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Finnish/moderator-handbook.md delete mode 100644 docs/i18n/French/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/French/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/French/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/French/moderator-handbook.md delete mode 100644 docs/i18n/German/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/German/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/German/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/German/moderator-handbook.md delete mode 100644 docs/i18n/Greek/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Greek/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Greek/moderator-handbook.md delete mode 100644 docs/i18n/Hebrew/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Hebrew/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Hebrew/moderator-handbook.md delete mode 100644 docs/i18n/Hindi/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Hindi/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Hindi/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Hindi/moderator-handbook.md delete mode 100644 docs/i18n/Hungarian/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Hungarian/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Hungarian/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Hungarian/moderator-handbook.md delete mode 100644 docs/i18n/Italian/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Italian/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Italian/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Italian/moderator-handbook.md delete mode 100644 docs/i18n/Japanese/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Japanese/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Japanese/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Japanese/moderator-handbook.md delete mode 100644 docs/i18n/Korean/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Korean/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Korean/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Korean/moderator-handbook.md delete mode 100644 docs/i18n/Norwegian/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Norwegian/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Norwegian/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Norwegian/moderator-handbook.md delete mode 100644 docs/i18n/Polish/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Polish/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Polish/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Polish/moderator-handbook.md delete mode 100644 docs/i18n/Portuguese/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Portuguese/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Portuguese/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Portuguese/moderator-handbook.md delete mode 100644 docs/i18n/Romanian/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Romanian/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Romanian/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Romanian/moderator-handbook.md delete mode 100644 docs/i18n/Russian/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Russian/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Russian/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Russian/moderator-handbook.md delete mode 100644 docs/i18n/Serbian/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Serbian/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Serbian/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Serbian/moderator-handbook.md delete mode 100644 docs/i18n/Spanish/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Spanish/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Spanish/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Spanish/moderator-handbook.md create mode 100644 docs/i18n/Swahili/FAQ.md create mode 100644 docs/i18n/Swahili/_sidebar.md create mode 100644 docs/i18n/Swahili/devops.md create mode 100644 docs/i18n/Swahili/how-to-catch-outgoing-emails-locally.md create mode 100644 docs/i18n/Swahili/how-to-help-with-video-challenges.md create mode 100644 docs/i18n/Swahili/how-to-open-a-pull-request.md create mode 100644 docs/i18n/Swahili/how-to-setup-freecodecamp-locally.md create mode 100644 docs/i18n/Swahili/how-to-setup-wsl.md create mode 100644 docs/i18n/Swahili/how-to-use-docker-on-windows-home.md create mode 100644 docs/i18n/Swahili/how-to-work-on-coding-challenges.md create mode 100644 docs/i18n/Swahili/how-to-work-on-the-docs-theme.md create mode 100644 docs/i18n/Swahili/how-to-work-on-the-news-theme.md create mode 100644 docs/i18n/Swahili/index.md create mode 100644 docs/i18n/Swahili/moderator-handbook.md delete mode 100644 docs/i18n/Swedish/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Swedish/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Swedish/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Swedish/moderator-handbook.md delete mode 100644 docs/i18n/Turkish/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Turkish/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Turkish/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Turkish/moderator-handbook.md delete mode 100644 docs/i18n/Ukrainian/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Ukrainian/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Ukrainian/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Ukrainian/moderator-handbook.md delete mode 100644 docs/i18n/Vietnamese/flight-manuals/moderator-handbook.md delete mode 100644 docs/i18n/Vietnamese/flight-manuals/using-reply-templates.md delete mode 100644 docs/i18n/Vietnamese/flight-manuals/working-on-virtual-machines.md create mode 100644 docs/i18n/Vietnamese/moderator-handbook.md diff --git a/docs/i18n/Afrikaans/FAQ.md b/docs/i18n/Afrikaans/FAQ.md index be0299b973..e6ef4fed0d 100644 --- a/docs/i18n/Afrikaans/FAQ.md +++ b/docs/i18n/Afrikaans/FAQ.md @@ -1,24 +1,12 @@ -### I am new to GitHub and Open Source, where should I start? +### I am new to GitHub and Open Source. Where should I start? -Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. ### Can I translate freeCodeCamp's curriculum? -We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts. - -We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese. - -**Why are you focusing on Chinese curriculum first?** - -China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n. - -We will focus on Latin America as the demographic region for Portuguese and Spanish. - -We do not have any plans for i18n to any other languages other than the above for the foreseeable future. - -We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. ### How can I report a new bug? @@ -26,19 +14,17 @@ If you think you've found a bug, first read the ["Help I've Found a Bug"](https: If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. ### How can I report a security issue? Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### I am a student, can I or our team work on a feature for academic credits? +### I am a student. Can I work on a feature for academic credits? -Yes, sure. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all. - -We request you to plan ahead and work on a feature with this in mind. +We request you to plan ahead and work on code contributions with this in mind. ### What do these different labels that are tagged on issues mean? @@ -48,42 +34,37 @@ The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_man You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### I found a typo, should I report an issue before I can make a pull request? +### I found a typo. Should I report an issue before I can make a pull request? -For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### How do I get an issue assigned to me? +### How can I get an issue assigned to me? -We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. The first pull request for any issue is preferred to be merged. -2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: - Did you include tests? - Did you catch all usecases? - - Did you ensure all tests pass, and you confirmed everything works locally? -3. Finally, we favor pull requests which follow our recommended guidelines. + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. - Did you follow the pull request checklist? - - Did you name your pull request title meaningfully? - -You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier. - -Follow the guidelines carefully and open a pull request. + - Did you give your pull request a meaningful title? ### I am stuck on something that is not included in this documentation. **Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. **Additional Assistance:** diff --git a/docs/i18n/Afrikaans/_sidebar.md b/docs/i18n/Afrikaans/_sidebar.md index 5ddccb9711..1b5bda2bdc 100644 --- a/docs/i18n/Afrikaans/_sidebar.md +++ b/docs/i18n/Afrikaans/_sidebar.md @@ -1,8 +1,8 @@ - **Getting Started** - - [Introduction](index) + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") - [Frequently Asked Questions](FAQ.md) - **Code Contribution** -- - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) - [Open a pull request](how-to-open-a-pull-request.md) - [Work on coding challenges](how-to-work-on-coding-challenges.md) - [Work on video challenges](how-to-help-with-video-challenges.md) @@ -14,18 +14,21 @@ --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- - **Flight Manuals** (for Staff & Mods) - - [Moderator Handbook](flight-manuals/moderator-handbook.md) - - [Reply Templates](flight-manuals/using-reply-templates.md) - - [DevOps Overview](devops.md) - - [Working on Servers](flight-manuals/working-on-virtual-machines.md) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- diff --git a/docs/i18n/Afrikaans/devops.md b/docs/i18n/Afrikaans/devops.md index ff7eec13cb..46fb8b5382 100644 --- a/docs/i18n/Afrikaans/devops.md +++ b/docs/i18n/Afrikaans/devops.md @@ -1,10 +1,10 @@ -# Developer Operations at freeCodeCamp.org +# DevOps Handbook This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. Let us know, if you have feedback or queries, and we will be happy to clarify. -## How do we build, test and deploy the codebase? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. @@ -46,7 +46,7 @@ The build pipeline goes on to trigger a corresponding release pipeline if it com Status of builds and releases are [available here](#build-test-and-deployment-status). -## Triggering a build, test and deployment. +## Trigger a build, test and deploy Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). @@ -218,10 +218,491 @@ There are some known limitations and tradeoffs when using the beta version of th - #### Sign page may look different than production - We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. ## Reporting issues and leaving feedback Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

https://amplify.nginx.com

+### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Afrikaans/flight-manuals/using-reply-templates.md b/docs/i18n/Afrikaans/flight-manuals/using-reply-templates.md deleted file mode 100644 index ced39a3641..0000000000 --- a/docs/i18n/Afrikaans/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Using Reply Templates - -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. - -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. - -### Thank you - -```markdown -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Thank you and congrats - -> For thanking and encouraging first-time contributors. - -```markdown -Hi @username. Congrats on your first pull request (PR)! 🎉 - -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Build Error - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -Once you resolve these issues, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -``` - -### Syncing Fork - -> When PR is not up to date with the `master` branch. - -``````markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. - -To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. - -Using the command line, you can do this in three easy steps: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. - -Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` - -### Merge Conflicts - -> When PR has merge conflicts that need to be resolved.¹ - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ - -Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 - ---- - -> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` -¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. - -### Duplicate - -> When PR is repetitive or a duplicate. - -```markdown -Hey @username - -It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 - -If you feel you have more to add, please feel free to open up a new PR. - -Thanks again! 😊 - ---- - -> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬 -``` - -### Closing invalid pull requests - -> When PR is invalid. - -```markdown -Hey @username - -You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️ - -Feel free to open another PR though! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Afrikaans/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Afrikaans/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Afrikaans/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

https://amplify.nginx.com

-## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Afrikaans/how-to-open-a-pull-request.md b/docs/i18n/Afrikaans/how-to-open-a-pull-request.md index ced6082c8a..2729cd6237 100644 --- a/docs/i18n/Afrikaans/how-to-open-a-pull-request.md +++ b/docs/i18n/Afrikaans/how-to-open-a-pull-request.md @@ -1,6 +1,6 @@ # How to open a Pull Request (PR) -A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. ## Prepare a good PR title @@ -72,7 +72,7 @@ Some examples of good PRs titles would be: Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. diff --git a/docs/i18n/Afrikaans/how-to-setup-freecodecamp-locally.md b/docs/i18n/Afrikaans/how-to-setup-freecodecamp-locally.md index 1b5573ce07..619db733cf 100644 --- a/docs/i18n/Afrikaans/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Afrikaans/how-to-setup-freecodecamp-locally.md @@ -1,18 +1,18 @@ Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > > [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare your local machine +### How to prepare your local machine Start by installing the prerequisite software for your operating system. -We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). @@ -147,7 +147,7 @@ Now that you have a local copy of freeCodeCamp, you can follow these instruction If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/pFspAhS), for quick queries. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > @@ -541,6 +541,6 @@ The first time setup can take a while depending on your network bandwidth. Be pa ## Getting Help -If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Afrikaans/how-to-work-on-coding-challenges.md b/docs/i18n/Afrikaans/how-to-work-on-coding-challenges.md index 568913de3b..2b95545e91 100644 --- a/docs/i18n/Afrikaans/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Afrikaans/how-to-work-on-coding-challenges.md @@ -2,11 +2,15 @@ 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, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like 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. -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. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions. +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/). + +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 [our Discord server](https://discord.gg/pFspAhS). With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. @@ -210,12 +214,15 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an Here are specific formatting guidelines for challenge text and examples: - Language keywords go in `` tags. For example, HTML tag names or CSS property names -- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags - References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: -- Use parseInt to convert the variable realNumber into an integer. -- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -See example below: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md The following is an example of code: @@ -229,7 +236,9 @@ The following is an example of code: - Additional information in the form of a note should be formatted `Note: Rest of note text...` - If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. -- Use double quotes where applicable +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests @@ -246,9 +255,81 @@ Here are specific formatting guidelines for the challenge seed code: - Use two spaces to indent - JavaScript statements end with a semicolon - Use double quotes where applicable -- Comments made should have a space between the comment characters and the comment themselves - `// Fix this line` +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
+ { /* Change code below this line */ } + + { /* Change code above this line */ } +

{this.state.text}

+
+ ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions @@ -261,7 +342,7 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca Take the following steps when adding a new challenge hints/solutions related topic. 1. Start by following the same steps for creating a new topic but review the next for creating the title. -2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". 3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. 4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. diff --git a/docs/i18n/Afrikaans/how-to-work-on-the-docs-theme.md b/docs/i18n/Afrikaans/how-to-work-on-the-docs-theme.md index 8de043746f..bf8bf8f6c9 100644 --- a/docs/i18n/Afrikaans/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Afrikaans/how-to-work-on-the-docs-theme.md @@ -20,21 +20,35 @@ Typically you would not need to change any configuration or build the site local Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` Install `docsify`: -```sh +```console npm install -g docsify ``` and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Afrikaans/how-to-work-on-the-news-theme.md b/docs/i18n/Afrikaans/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Afrikaans/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Afrikaans/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Afrikaans/index.md b/docs/i18n/Afrikaans/index.md index 11297b4a0d..1c4add4ab3 100644 --- a/docs/i18n/Afrikaans/index.md +++ b/docs/i18n/Afrikaans/index.md @@ -1,45 +1,43 @@ -Die [freeCodeCamp.org](https://freecodecamp.org) gemeenskap is moontlik vanweë duisende vriendelike vrywilligers soos jy. Ons welkom enige en al gemeenskapsbydraes, en ons is opgewonde om jou aan boord te verwelkom. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. Happy contributing. You are welcome to: -- Create, update and fix bugs in our [coding challenges](#coding-challenges). +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). - _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Coding Challenges +## Curriculum -All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** ## Learning Platform -Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Broadly, +Broadly, we use -- We have a Node.js based API server. -- A set of React-based client applications. -- A script that we use to evaluate our front-end projects. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. +If you want to help us improve our codebase... -**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts a ready-to-code dev environment for freeCodeCamp in your browser.) +Or you can... -OR - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Afrikaans/flight-manuals/moderator-handbook.md b/docs/i18n/Afrikaans/moderator-handbook.md similarity index 84% rename from docs/i18n/Afrikaans/flight-manuals/moderator-handbook.md rename to docs/i18n/Afrikaans/moderator-handbook.md index 5916fb23de..126794b1a2 100644 --- a/docs/i18n/Afrikaans/flight-manuals/moderator-handbook.md +++ b/docs/i18n/Afrikaans/moderator-handbook.md @@ -22,7 +22,7 @@ freeCodeCamp is an inclusive community, and we need to keep it that way. We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). -# Moderating GitHub +## Moderating GitHub Moderators have the ability to close issues and accept or close pull requests. @@ -31,11 +31,11 @@ Moderators have two primary responsibilities regarding GitHub: 1. QA'ing and merging pull requests 2. Evaluating and responding to issues -## Moderating Pull Requests +### Moderating Pull Requests Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. -### Types of Pull Requests +#### Types of Pull Requests 1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: @@ -49,7 +49,7 @@ Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's reposi 3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. -### How to merge or close pull requests +#### How to merge or close pull requests First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. @@ -63,7 +63,7 @@ If the pull request looks ready to merge (and doesn't require approval from @rai You should then comment on the pull request, thanking the contributor in your own personal way. -If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: ![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) @@ -83,11 +83,11 @@ In both of these situations, you should go ahead and close their pull request an If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. -## Moderating GitHub Issues +### Moderating GitHub Issues freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. -### Types of GitHub Issues +#### Types of GitHub Issues 1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. @@ -95,7 +95,7 @@ freeCodeCamp is an active open source project. We get new issues every day, all > > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. > - > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. > > Thank you and happy coding. @@ -120,15 +120,15 @@ freeCodeCamp is an active open source project. We get new issues every day, all > > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. -### Closing Stale, Outdated, Inactive Issues and Pull Requests +#### Closing Stale, Outdated, Inactive Issues and Pull Requests -- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. - Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. - If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. -### Other guidelines for Moderators on GitHub +#### Other guidelines for Moderators on GitHub Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. @@ -136,7 +136,7 @@ Also, you should never accept your own PRs. They must be QA'd by another moderat If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. -# Moderating the Forum +## Moderating the Forum As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. @@ -182,7 +182,7 @@ Please rejoin once you have reached at least 13 years of age. Thank you for understanding. ``` -# Moderating Facebook +## Moderating Facebook If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. @@ -190,7 +190,7 @@ Sometimes people will post things that they think are funny. They don't realize But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. -# Moderating Discord +## Moderating Discord Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: @@ -267,7 +267,7 @@ In all other situations - even situations where the code of conduct is violated 10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. -# How to become a moderator +## How to become a moderator If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. @@ -275,7 +275,7 @@ If you are approved, we will add you to our Moderator Teams on [GitHub](https:// > [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. -# How we retire inactive moderators +## How we retire inactive moderators Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: @@ -283,17 +283,17 @@ Please note that we will frequently remove mods whom we think are inactive. When > If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. -# How our Contributors room works +## How our Contributors room works Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. -# Dealing with solicitors +## Dealing with solicitors You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). -# Dealing with (mental) health inquiries +## Dealing with (mental) health inquiries You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! @@ -315,7 +315,7 @@ Helpful URLs: http://www.suicide.org/international-suicide-hotlines.html -# A note on free speech +## A note on free speech Sometimes people will defend something offensive or incendiary that they said as "free speech." @@ -324,3 +324,133 @@ This XKCD comic perfectly summarizes most communities' thoughts on free speech.
Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Arabic/FAQ.md b/docs/i18n/Arabic/FAQ.md index b7e06a9286..e6ef4fed0d 100644 --- a/docs/i18n/Arabic/FAQ.md +++ b/docs/i18n/Arabic/FAQ.md @@ -1,101 +1,82 @@ -### أنا جديد على GitHub و Open Source، أين يجب أن أبدأ؟ +### I am new to GitHub and Open Source. Where should I start? -اقرأ ["كيفية المساهمة في دليل المصدر المفتوح"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). إنه مورد جامع من أول مشاريع ومبادئ توجيهية ملائمة للتوقيت +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### هل يمكنني ترجمة المنهج التعليمي لـ FreCodeCamp؟ +### Can I translate freeCodeCamp's curriculum? -سنقوم بإطلاق جهود التوطين على FreCodeCamp بدءاً ب **الصينية** أولاً. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -ونحن نعتزم جعل المنهاج الدراسي متاحا بمزيد من اللغات، ولكن لا يمكننا الالتزام بأي مواعيد نهائية حتى الآن. وتؤدي عدة قيود تشغيلية مثل الموظفين والمساهمين النشطين وتكاليف حواسيب الخدمة دورا في دفع جهود التدويل (18 سنة). +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -ونحن نعتزم البدء في بذل جهود في إطار برنامج العمل 18n بهذه اللغات: العربية والبرتغالية. الروسية والإسبانية (دون ترتيب محدد) بعد أن أصدرنا المنهج الدراسي باللغة الصينية. +### How can I report a new bug? -**لماذا تركز على المناهج الصينية أولاً؟** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -الصين هي أكبر المناطق الديمغرافية، في جمهورنا غير الناطقين بالإنجليزية الأصلية. حاليا، لدينا مئات الآلاف من المستخدمين باستخدام نسخة قديمة من المنصة. والتركيز على المنهج الدراسي الصيني سيعطينا تقديرا للسوقيات المشاركة في الـ i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -وسوف نركز على أمريكا اللاتينية بوصفها المنطقة الديمغرافية للبرتغالية والإسبانية. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -وليس لدينا أي خطط لـ i18n في المستقبل المنظور لأي لغة أخرى غير ما ورد أعلاه. +### How can I report a security issue? -ونحن لا نشجعكم على العمل بشأن الـ i18 باللغات المذكورة أعلاه. ويمكننا أن نقبل طلبات السحب دون أن نتوقع أي مواعيد زمنية لنشر القوات. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### كيف يمكنني الإبلاغ عن خطأ جديد؟ +### I am a student. Can I work on a feature for academic credits? -إذا كنت تعتقد أنك وجدت خطأ، اقرأ أولاً مقالة ["ساعدني في العثور على بوج"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) واتبع تعليماتها. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -إذا كنت واثقا من أنه خطأ جديد، قم بالمضي قدما و أنشئ مشكلة GitHub جديدة. تأكد من تضمين أكبر قدر ممكن من المعلومات حتى نتمكن من تكرار الخطأ. لدينا نموذج مشكلة محدد مسبقاً لمساعدتك من خلال هذا. +We request you to plan ahead and work on code contributions with this in mind. -يرجى ملاحظة أنه سيتم إغلاق أي مشاكل تبحث عن مساعدة في الترميز في التحدي. أما تعقب القضايا فيتعلق حصراً بالقضايا والمناقشات ذات الصلة بالترادف. كلما كان هناك شك، يجب عليك [طلب المساعدة في المنتدى](https://forum.freecodecamp.org) قبل إعداد التقرير. +### What do these different labels that are tagged on issues mean? -### كيف يمكنني الإبلاغ عن مسألة أمنية؟ +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -الرجاء عدم إنشاء مشاكل GitHub للمشاكل الأمنية. بدلاً من ذلك، يرجى إرسال بريد إلكتروني إلى `security@freecodecamp.org` وسوف ننظر فيه فوراً. +### Where do I start if I want to work on an issue? -### أنا طالب، هل يمكنني أو فريقنا العمل على ميزة للائتمانات الأكاديمية؟ +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -نعم، بالتأكيد. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -وفي حين أننا منفتحون على جميع المساهمات، يرجى ملاحظة أننا غير قادرين على الالتزام بأي جداول زمنية قد تكون مطلوبة في الكلية أو الجامعة الخاصة بك. ونحن نتلقى العديد من طلبات السحب وإسهامات الرموز من مطوري المتطوعين، ونحن نحترم وقتهم وجهودهم. ولن يكون بوسعنا أن نولي أي رأي رسمي أي اهتمام خاص ليكون منصفا للجميع. +### I found a typo. Should I report an issue before I can make a pull request? -ونطلب منكم أن تخطططوا مسبقا وأن تعملوا على وضع هذه الميزة نصب أعيننا. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### ماذا تعني هذه التسميات المختلفة الموسومة على المشكلات؟ +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -مشرفو التعليمات البرمجية [مقارنة](https://en.wikipedia.org/wiki/Software_bug#Bug_management) يصدرون الطلبات ويسحبون الطلبات بناء على أولويتهم وشدتهم وعوامل أخرى. يمكنك [العثور على مسرد كامل لمعانيهم هنا](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### أين أبدأ إذا أردت أن أعمل بشأن إحدى القضايا؟ +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -يجب أن تمر عبر [**`المساعدة المطلوبة`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) أو [**`المؤقت الأول فقط`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) من أجل نظرة عامة سريعة لما هو متاح لك للعمل عليه. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!تلميح] **`ساعد`** المشكلات المطلوبة ، ولا تحتاج إلى البحث عن إذن قبل العمل عليها. ومع ذلك، فإن المشكلات مع **`التسمية الأولى فقط`** محفوظة للأشخاص الذين لم يساهموا في رمز FreCodeCamp من قبل. وإذا كانت هذه المسائل تفتقر إلى الوضوح بشأن ما ينبغي عمله، فلا تتردد في طرح الأسئلة في التعليقات. +### I am stuck on something that is not included in this documentation. -### وجدت طابعاً، هل يجب أن أبلغ عن مشكلة قبل أن أتمكن من تقديم طلب سحب؟ - -بالنسبة للطباعيات وغيرها من التغييرات في الصياغة، يمكنك فتح طلبات السحب مباشرة دون إنشاء مشكلة أولاً. أما القضايا فتتعلق بقدر أكبر بمناقشة المشاكل الأكبر المرتبطة بالجوانب البرمجية أو الهيكلية للمناهج الدراسية. - -ومع ذلك، يرجى ذكر التفاصيل، والسياق، وما إلى ذلك في مجال وصف طلب السحب لمساعدتنا على فهم واستعراض مساهمتك حتى من أجل إجراء تغييرات طفيفة. - -### كيف أحصل على مشكلة تم تعيينها لي؟ - -وعادة ما لا نحيل المسائل إلى أي شخص آخر غير المساهمين منذ وقت طويل لتجنب العروض الغامضة التي لا تظهر على الإطلاق. وبدلا من ذلك، نتبع السياسة التالية لتكون عادلة للجميع: - -1. يفضل دمج طلب السحب الأول لأي مشكلة. -2. في حالة طلبات السحب المتعددة لنفس المشكلة، نعطي الأولوية لجودة الرمز في طلبات السحب . - - هل قمت بإدراج اختبارات؟ - - هل حصلت على جميع الاستخدامات؟ - - هل تأكد من مرور جميع الاختبارات، وأكدت أن كل شيء يعمل محليا؟ -3. وأخيرا، نحن نؤيد طلبات السحب التي تتبع مبادئنا التوجيهية الموصى بها. - - هل اتبعت قائمة طلب السحب؟ - - هل قمت بتسمية عنوان طلب السحب الخاص بك؟ - -أنت لست بحاجة إلى أي إذن للمشكلات التي تم وضع علامة عليها `المساعدة المطلوبة` أو `المؤقت الأول فقط` كما هو موضح سابقاً. - -اتبع المبادئ التوجيهية بعناية وفتح طلب الجذب. - -### وأنا عالقة بشأن شيء غير مدرج في هذه الوثائق. - -**لا تتردد في طلب المساعدة في:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -ونحن متحمسون لمساعدتك في المساهمة في أي من المواضيع التي تودون العمل بشأنها. لا تتردد في طرح أسئلة علينا بشأن المواضيع ذات الصلة، وسوف يسعدنا أن نوضح ذلك. تأكد من البحث عن استفسارك قبل نشر استعلام جديد. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -كن مهذباً وصبراً. مجتمعنا من المتطوعين والمديرين دائمًا ما يدور لإرشادك من خلال الاستفسارات الخاصة بك. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**المساعدة الإضافية** +**Additional Assistance:** -إذا كان لديك استفسارات حول المكدس ، هندسة الكود ، لا تتردد في التواصل مع فريق موظفينا: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| الموظفون | إرسال رسالة في المنتدى | -|:-------------------- |:---------------------------------------------------------------------------- | -| مروجيش محباترا | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | -| أحمد عبد الشاب | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | -| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | -| توم موندلوك | [@moT01](https://forum.freecodecamp.org/u/moT01) | -| أوليفر إيتون ويليامز | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | -| رانديل داوسون | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | +| Staff | Send message on Forum | +|:--------------------- |:---------------------------------------------------------------------------- | +| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | +| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | +| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | +| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | +| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | +| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**يمكنك إرسال بريد إلكتروني لموظفي المطور في: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Arabic/_sidebar.md b/docs/i18n/Arabic/_sidebar.md index c7a44ce9ce..1cc0b94c4b 100644 --- a/docs/i18n/Arabic/_sidebar.md +++ b/docs/i18n/Arabic/_sidebar.md @@ -1,36 +1,39 @@ -- **بدء العمل** - - [مقدمة](index 'المساهمة في مجتمع FreCodeCamp.org') - - [الأسئلة المتكررة](FAQ.md) -- **مساهمة الرمز** -- - [إعداد FreCodeCamp محليا](how-to-setup-freecodecamp-locally.md) - - [فتح طلب سحب](how-to-open-a-pull-request.md) - - [العمل على تحديات البرمجة](how-to-work-on-coding-challenges.md) - - [العمل المتعلق بتحديات الفيديو](how-to-help-with-video-challenges.md) - - [العمل المتعلق بموضوع الأخبار](how-to-work-on-the-news-theme.md) - - [العمل في موضوع المستندات](how-to-work-on-the-docs-theme.md) -- **أدلة اختيارية** - - [التقط رسائل البريد الإلكتروني الصادرة محليا](how-to-catch-outgoing-emails-locally.md) - - [إعداد freeCodeCamp على WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [إعداد freeCodeCamp محليا](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **دليل الرحلات الجوية** (للموظفين & موحد) - - [دليل المشرف](flight-manuals/moderator-handbook.md) - - [قوالب الرد](flight-manuals/using-reply-templates.md) - - [استعراض DevOps](devops.md) - - [العمل على الخوادم](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **مجتمعنا** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**منتدى الخطاب**](https://freecodecamp.org/forum/c/contributors) - - [**دردشة Gitter**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Arabic/devops.md b/docs/i18n/Arabic/devops.md index f836743ee8..46fb8b5382 100644 --- a/docs/i18n/Arabic/devops.md +++ b/docs/i18n/Arabic/devops.md @@ -1,227 +1,708 @@ -# عمليات المطور في freeCodeCamp.org +# DevOps Handbook -هذا الدليل سيساعدك على فهم مكدس البنية التحتية الخاص بنا وكيف نحافظ على المنصات الخاصة بنا. ورغم أن هذا الدليل لا يتضمن تفاصيل شاملة عن جميع العمليات، فإنه يمكن استخدامه كمرجع لفهمكم للنظم. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -دعونا نعلم، إذا كان لديكم تغذية مرتدة أو استفسارات، وسيكون من دواعي سرورنا أن نوضح ذلك. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## كيف يمكننا أن نبني ونختبر وننشر الكود البرمجي؟ +# Flight Manual - Code deployments -يتم بناء هذا المستودع بشكل مستمر واختباره ونشره في **مجموعات منفصلة من البنية التحتية (سيرفرات وقواعد البيانات وCDN، وما إلى ذلك)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -وينطوي ذلك على ثلاث خطوات يتعين اتباعها بالتسلسل: +This involves three steps to be followed in sequence: -1. يتم دمج التغييرات الجديدة (الإصلاحات والميزات) في فرع التطوير الأساسي الخاص بنا (`الرئيسية`) عن طريق طلبات السحب. -2. وتجري هذه التغييرات من خلال سلسلة من الاختبارات المؤتمتة. -3. وبمجرد اجتياز الاختبارات نعلن عن التغييرات (أو تحديثها إذا اقتضى الأمر) لنشرها على بنيتنا التحتية. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### بناء الشريط البرمجي - رسم خرائط فروع Git للنشر. +#### Building the codebase - Mapping Git Branches to Deployments. -عادةً، [`سيد`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (فرع التطوير الافتراضي) يدمج في [`تجهيز الإنتاج`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) فرع مرة واحدة في اليوم ويطلق في بنية تحتية معزولة. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -هذا هو الإصدار الوسيط للمطورين والمساهمين المتطوعين. كما أنه يعرف باسم "الإنتظار" أو "بيتا". +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -إنه مطابق لبيئتنا الإنتاجية الحية في `freeCodeCamp.org`، بخلاف ذلك باستخدام مجموعة منفصلة من قواعد البيانات، الخوادم، وكلاء الويب، إلخ. تتيح لنا هذه العزلة اختبار التطوير المستمر والميزات في "الإنتاج" مثل السيناريو، دون التأثير على المستخدمين المنتظمين للمنصات الرئيسية لـ freeCodeCamp.org. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -مرة واحدة فريق المطور [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) سعيد بالتغييرات على منصة التجهيز ، يتم نقل هذه التغييرات كل بضعة أيام إلى فرع [`الإنتاج الحالي`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -هذا هو الإصدار النهائي الذي ينقل التغييرات إلى منصات الإنتاج لدينا على freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### اختبار التغييرات - اختبار التكامل وقبول المستخدم. +#### Testing changes - Integration and User Acceptance Testing. -نحن نستخدم مختلف مستويات اختبار التكامل والقبول للتحقق من جودة الشفرة. تتم جميع اختباراتنا من خلال برمجيات مثل [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) و [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -لدينا اختبارات وحدة لاختبار حلول التحدي الخاصة بنا، واجهات برمجة تطبيقات الخادم وواجهة مستخدم العميل. هذه تساعدنا على اختبار التكامل بين المكونات المختلفة. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!ملحوظة] نحن أيضا في عملية كتابة اختبارات المستخدم النهائي التي ستساعد في تكرار سيناريوهات العالم الحقيقي مثل تحديث البريد الإلكتروني أو إجراء مكالمة إلى خدمات API أو طرف ثالث. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -وتساعد هذه الاختبارات معا في منع المشاكل من تكرار نفسها والتأكد من أننا لا ندخل خلل أثناء العمل على خلل آخر أو ميزة أخرى. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### نشر التغييرات - دفع التغييرات إلى الخوادم. +#### Deploying Changes - Pushing changes to servers. -لقد قمنا بتكوين برنامج التوصيل المستمر لدفع التغييرات إلى خوادم التطوير والإنتاج لدينا. +We have configured continuous delivery software to push changes to our development and production servers. -وبمجرد دفع التغييرات إلى فروع الإفراج المحمية، يبدأ تشغيل خط أنابيب البناء تلقائياً للفرع. وخطوط أنابيب البناء مسؤولة عن بناء الأعمال الفنية وإبقائها في مخزن بارد لاستخدامها في وقت لاحق. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -ويمضي خط أنابيب البناء لتفعيل خط أنابيب الإفراج المقابل إذا أنجز عملية تشغيل ناجحة. وخطوط أنابيب الإصدار مسؤولة عن جمع فنون البناء، ونقلها إلى الخوادم، والسير على قيد الحياة. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -حالة الإنشاءات والإصدارات [متاحة هنا](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## تنشيط البناء والاختبار والنشر. +## Trigger a build, test and deploy -وفي الوقت الراهن، لا يستطيع سوى الأعضاء في فريق المطور الدفع إلى فروع الإنتاج. التغييرات في فروع `الإنتاج *` يمكن أن تهبط فقط عن طريق الدمج السريع للأمام إلى [`أعلى`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!ملحوظة] في الأيام القادمة سنقوم بتحسين هذا التدفق ليتم عن طريق طلبات الجذب، لتحسين إدارة الوصول والشفافية. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### دفع التغييرات إلى التطبيقات المرحلية. +### Pushing changes to Staging Applications. -1. تكوين أجهزة التحكم الخاصة بك بشكل صحيح. +1. Configure your remotes correctly. ```sh - git البعيد -v + git remote -v ``` - **النتائج:** + **Results:** ``` - الأصل git@github.com:raisedadead/freeCodeCamp.git (fetch) - الأصل git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. تأكد من أن فرع `الرئيسي` الخاص بك نقي وفي تزامن مع البث. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh - git قم بالدفع الرئيسي - git يجلب --كل --prune + git checkout master + git fetch --all --prune git reset --hard upstream/master ``` -3. تحقق من أن ترافيس سي يقوم بتمرير فرع `الرئيسي` للتبسيط. +3. Check that the Travis CI is passing on the `master` branch for upstream. - يجب أن تكون اختبارات [الدمج المستمر](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) خضراء و باسينغ `لفرع`. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
التحقق من الحالة على Travis CI (لقطة الشاشة) +
Checking status on Travis CI (screenshot)
- ![تحقق من حالة البناء على Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
- إذا فشل هذا يجب عليك التوقف والتحقيق في الأخطاء. + If this is failing you should stop and investigate the errors. -4. تأكد من أنك قادر على بناء المستودع محلياً. +4. Confirm that you are able to build the repository locally. ``` - npm تشغيل نظيف وتطوير + npm run clean-and-develop ``` -5. نقل التغييرات من `الرئيسي` إلى `تجهيز الإنتاج` عبر دمج سريع للأمام +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` - git الدفع بالإنتاج - مرحلة التجهيز - git master دمج + git checkout production-staging + git merge master git push upstream ``` - > [!ملاحظة] لن تكون قادراً على فرض الدفع وإذا قمت بإعادة كتابة السجل على أي حال فإن هذه الأوامر ستخطأ. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > إذا فعلوا ذلك، ربما تكون قد فعلت شيئا خاطئا وينبغي أن تبدأ من جديد. + > If they do, you may have done something incorrectly and you should just start over. -الخطوات المذكورة أعلاه ستفعل تلقائياً تشغيل على خط أنابيب البناء لفرع `الإنتاج الحالي`. بمجرد أن تصبح أداة البناء جاهزة، فإنها ستؤدي إلى تشغيل على خط أنابيب الإطلاق. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -يتم تشغيل خط أنابيب الإطلاق تلقائياً عند توفر أداة جديدة من خط أنابيب البناء المتصل. بالنسبة لمنصات التجهيز، هذه العملية لا تنطوي على موافقة يدوية ويتم دفع التحف إلى خوادم العميل CDN و API. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!تلميح: تقديرات] عادة ما يستغرق تشغيل البناء 20-25 دقيقة لإكمال عملية الإصدار التي تستغرق 15-20 دقيقة للعميل، و ~5-10 دقائق لـ API لتكون متاحة على قيد الحياة. من دفع التعليمات البرمجية إلى الحياة على منصات التجهيز تستغرق العملية بأكملها **~35-45 دقيقة** في المجموع. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### دفع التغييرات إلى تطبيقات الإنتاج. +### Pushing changes to Production Applications. -وهذه العملية هي في معظمها نفس منصات التجهيز، مع إجراء عدد قليل من عمليات التحقق الإضافية. هذا فقط لتأكيد، نحن لا نكسر أي شيء على FreCodeCamp.org الذي يمكنه رؤية مئات المستخدمين يستخدمونه في أي لحظة. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| لا تقم بتنفيذ هذه الأوامر إلا إذا تحققت من أن كل شيء يعمل على منصة التجهيز. لا يجب عليك تجاوز أو تخطي أي اختبار عند التجهيز قبل المضي قدماً. | -|:-------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. تأكد من أن فرع `تجهيز الإنتاج` الخاص بك هو فرع نقدي ومتزامن مع الجزء العلوي. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh - git الخروج من الإنتاج وتجهيز - git جلب --كل --prune - git إعادة تعيين --upstream/production-packging + git checkout production-staging + git fetch --all --prune + git reset --hard upstream/production-staging ``` -2. نقل التغييرات من `الإنتاج التجهيز` إلى `الإنتاج الحالي` عبر دمج سريع للأمام +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` - git دفع الانتاج-الحالي - git دمج الانتاج - التجهيز + git checkout production-current + git merge production-staging git push upstream ``` - > [!ملاحظة] لن تكون قادراً على فرض الدفع وإذا قمت بإعادة كتابة السجل على أي حال فإن هذه الأوامر ستخطأ. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > إذا فعلوا ذلك، ربما تكون قد فعلت شيئا خاطئا وينبغي أن تبدأ من جديد. + > If they do, you may have done something incorrectly and you should just start over. -الخطوات المذكورة أعلاه ستفعل تلقائياً تشغيل على خط أنابيب البناء لفرع `انتاج - تجهيز` بمجرد اكتمال البناء، يتم حفظ التحف كملفات `.zip` في وحدة تخزين باردة لاسترجاعها واستخدامها لاحقاً. بمجرد أن تصبح أداة البناء جاهزة، فإنها ستؤدي إلى تشغيل على خط أنابيب الإطلاق. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!تلميح: تقديرات] عادة ما يستغرق تشغيل البناء 20-25 دقيقة لإكماله. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**خطوات إضافية لعمل الموظفين** +**Additional Steps for Staff Action** -يتم تشغيل إحدى عمليات الإصدار، سيتلقى أعضاء فريق الموظفين المطورين رسالة إلكترونية يدوية للتدخل. يمكنهم إما _الموافقة على_ أو _رفض_ تشغيل الإصدار. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -إذا كانت التغييرات تعمل بشكل جيد وتم اختبارها على منصة التجهيز، فيمكن الموافقة عليها. ويجب منح الموافقة في غضون 4 ساعات من تاريخ إطلاق الإصدار قبل أن يتم رفضها تلقائياً. ويمكن للموظفين أن يعيدوا تحريك عملية الإفراج يدويا لطلبات الترحيل المرفوضة، أو أن ينتظروا الدورة التالية من عملية الترحيل. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -لاستعمال الموظفين: +For staff use: -| تحقق من بريدك الإلكتروني للحصول على رابط مباشر أو [انتقل إلى لوحة تحكم الإصدار](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) بعد اكتمال تشغيل البناء. | -|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -وبمجرد موافقة أحد الموظفين على الإصدار، فإن خط الأنابيب سيدفع التغييرات مباشرة إلى خوادم CDN و API الخاصة بإنتاج freeCodeCamp.org. عادة ما يستغرق ~15-20 دقيقة للعملاء، و ~5 دقائق لخوادم API لتكون متاحة على قيد الحياة. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!تلميح: تقديرات] عملية الإصدار تستغرق عادة 15-20 دقيقة لكل نموذج من نماذج العميل، و ~5-10 دقائق لكل نموذج API لتكون متاحة للحياة. من دفع التعليمات البرمجية إلى أن تكون حية على منصات الإنتاج تستغرق العملية بأكملها **~90-120 دقيقة** في المجموع (بدون حساب وقت الانتظار للحصول على موافقة الموظفين). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## بناء واختبار ونشر حالة +## Build, Test and Deployment Status -وفيما يلي الاختبار الحالي وحالة البناء والنشر لهذا الدماغ. +Here is the current test, build and deployment status of the codebase. -| نوع | فرع | الحالة | لوحة التحكم | -|:--------------- |:---------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------ | -| اختبار CI | [`سيد`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![حالة بناء CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [الذهاب إلى لوحة التحكم الحالة](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| اختبار CI | [`انتاج التجهيز`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![حالة بناء CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [الذهاب إلى لوحة التحكم الحالة](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| بناء خط أنابيب | [`انتاج التجهيز`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![حالة البناء](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [الذهاب إلى لوحة التحكم الحالة](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| إصدار خط أنابيب | [`انتاج التجهيز`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [الذهاب إلى لوحة التحكم الحالة](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| اختبار CI | [`الانتاج-الحالي`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![حالة بناء CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [الذهاب إلى لوحة التحكم الحالة](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| بناء خط أنابيب | [`الانتاج-الحالي`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![حالة البناء](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [الذهاب إلى لوحة التحكم الحالة](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| إصدار خط أنابيب | [`الانتاج-الحالي`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [الذهاب إلى لوحة التحكم الحالة](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## الوصول المبكر واختبار بيتا +## Early access and beta testing -نحن نرحب بك لاختبار هذه الإصدارات في وضع **"اختبار تجريبي عام"** والحصول على الوصول المبكر إلى الميزات القادمة إلى المنصات. أحياناً يشار إلى هذه الميزات/التغييرات باسم **التالي، بيتا، الإنتخاب،** إلخ. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -إسهاماتك عن طريق الإفادة المرتدة وتقارير الإصدار سوف تساعدنا في إنشاء منصات الإنتاج في `freeCodeCamp. rg` أكثر **مرونة**و **ثابت** و **مستقر** للجميع. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -نشكرك على الإبلاغ عن الأخطاء التي تواجهك ومساعدتك في جعل CodeCamp.org أفضل. أنت صخر! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### تحديد النسخة القادمة من المنصات +### Identifying the upcoming version of the platforms -يتوفر حاليا إصدار اختبار تجريبي عام في: +Currently a public beta testing version is available at:

freecodecamp.dev

-> NoTE] اسم النطاق مختلف عن **`freeCodeCamp.org`**. وهذا متعمد لمنع فهرسة محرك البحث وتجنب اللبس للمستخدمين المنتظمين للمنصة. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### تحديد النسخة الحالية من المنصات +### Identifying the current version of the platforms -**النسخة الحالية من المنصة متوفرة دائما في [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -يدمج فريق إدارة الإنتاج التغييرات من فرع `التجهيز الإنتاجي` إلى `التيار الإنتاجي` عند تحرير التغييرات. يجب أن يكون الالتزام الأعلى ما ترونه مباشرة على الموقع. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -يمكنك تحديد النسخة الدقيقة المنشورة عن طريق زيارة سجلات البناء والنشر المتاحة في قسم الحالة. بدلاً من ذلك، يمكنك أيضاً ربطنا في [غرفة الدردشة المساهمين](https://gitter.im/FreeCodeCamp/Contributors) لتأكيدها. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### القيود المعروفة +### Known Limitations -هناك بعض القيود المعروفة والمقايضات عند استخدام الإصدار التجريبي من المنصة. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### جميع البيانات / التقدم الشخصي على هذه المنصات التجريبية `لن يتم حفظها أو نقلها` إلى الإنتاج. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **المستخدمين على إصدار بيتا سيكون لديهم حساب منفصل عن الإنتاج.** النسخة التجريبية تستخدم قاعدة بيانات منفصلة ماديا عن الإنتاج. وهذا يعطينا القدرة على منع أي خسارة عرضية للبيانات أو التعديلات. قد يقوم فريق ديف بتطهير قاعدة البيانات على نسخة بيتا هذه حسب الحاجة. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### لا توجد ضمانات بشأن الوقت الإضافي للمنصات التجريبية وموثوقيتها. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - ومن المتوقع أن يكون الانتشار متكررا ومتكررا بسرعة، وأحيانا عدة مرات في اليوم. ونتيجة لذلك، سيكون هناك توقف غير متوقع في بعض الأحيان أو وظائف معطلة على النسخة التجريبية. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### لا ترسل المستخدمين المنتظمين إلى هذا الموقع كتدبير لتأكيد إصلاح +- #### Do not send regular users to this site as a measure of confirming a fix - وموقع بيتا كان ولا يزال دائما يتمثل في زيادة التنمية والاختبار المحليين، لا شيء آخر. إنه ليس بوعد بما هو قادم، ولكن لمحة عما يجري العمل عليه. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### قد تبدو صفحة تسجيل الدخول مختلفة عن الإنتاج +- #### Sign page may look different than production - نحن نستخدم مستأجر اختبار لـ freecodecamp.dev على Auth0، وبالتالي ليس لدينا القدرة على تعيين نطاق مخصص. هذا يجعل من الممكن أن تظهر جميع إعادة توجيه المكالمات وصفحة تسجيل الدخول في نطاق افتراضي مثل: `https://freecodecamp-dev.auth0.com/`. وهذا لا يؤثر على هذه الوظيفة التي تقترب من الإنتاج بقدر ما يمكننا الحصول عليه. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## المسائل المتعلقة بالإبلاغ وترك التعليقات +## Reporting issues and leaving feedback -الرجاء فتح مشكلات جديدة للمناقشات والإبلاغ عن الأخطاء. يمكنك تسميتهم كـ **[`الإصدار: التالي/التجريبي`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** للتجربة. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -يمكنك إرسال بريد إلكتروني إلى `dev[at]freecodecamp.org` إذا كان لديك أي استفسار. كما هو الحال دائمًا يجب إبلاغ جميع نقاط الضعف الأمنية إلى `الأمن[at]freecodecamp.org` بدلاً من تعقب الجمهور والمنتدى العام. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

https://amplify.nginx.com

+### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Arabic/flight-manuals/moderator-handbook.md b/docs/i18n/Arabic/flight-manuals/moderator-handbook.md deleted file mode 100644 index 9a9e91a5eb..0000000000 --- a/docs/i18n/Arabic/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,327 +0,0 @@ -# دليل مشرف FreCodeCamp الرسمي. - -هذا سيساعدك على ضبط أماكن مختلفة في مجتمعنا، بما في ذلك: - -- مشاكل GitHub & طلبات السحب -- المنتدى وغرف الدردشة ومجموعات الفيسبوك وغيرها من أماكن الاجتماعات على الإنترنت -- المناسبات الشخصية مثل المجموعات الدراسية، والهاكاثون, والمؤتمرات - -**جميع مشرفي FreCodeCamp هم مشرفون على نطاق المجتمع. وهذا يعني أننا نثق بأنكم ستشرفون على أي من هذه الأماكن.** - -هذا، يمكنك أن تعمل كمشرف في أي مكان من الأماكن التي تهمك. بعض المشرفين يساعدون فقط على GitHub. ويساعد آخرون فقط في المنتدى. بعض المشرفين ناشطون في كل مكان. - -وخلاصة القول أننا نريدك أن تستمتع بأن تكون مشرفا، واستثمر وقتك الشحيح في الأماكن التي تهمك. - -> [!ملحوظة] "مع القوة العظيمة تأتي مسؤولية عظيمة." - العم بن - -وبوصف درجة الحرارة مشرفة، فإن درجة الحرارة أهم من المهارة التقنية. - -اسمع. كن مساعداً. لا تسيء استخدام قوتك. - -FreCodeCamp هو مجتمع شامل، ونحن بحاجة إلى الحفاظ عليه بهذه الطريقة. - -ولدينا مدونة سلوك واحدة تحكم مجتمعنا بأسره. وكلما قلّت القواعد سهولة تذكرها. يمكنك قراءة هذه القواعد وإلزامها بالذاكرة [هنا](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -المشرفين لديهم القدرة على إغلاق المشكلات وقبول طلبات السحب أو إغلاقها. - -ويضطلع المشرفون بمسؤوليتين رئيسيتين فيما يتعلق بـ GitHub: - -1. QA'ing و دمج طلبات السحب -2. تقييم المسائل والاستجابة لها - -## اعداد طلبات السحب - -طلبات السحب هي كيف يقوم المساهمون بإرسال تغييرات إلى مستودع رمز مجاني. من المهم أن ننفذ ضمان الجودة (QA) عند طلبات السحب قبل أن نقرر ما إذا كنا سندمجها أو نغلقها. - -### أنواع طلبات السحب - -1. **تعديلات تعليمات التحدي** هذه تغييرات على نص التحديات - الوصف أو التعليمات أو نص الاختبار. يمكنك أيضًا مراجعة هذه الحقوق على GitHub والبت فيما إذا كان سيتم دمجها. نحن بحاجة إلى أن نكون أكثر حذرا بشأن هذه المسائل، لأن ملايين الناس سيواجهون هذا النص وهم يعملون من خلال منهج FreCodeCamp الدراسي. هل طلب السحب يجعل النص أكثر وضوحا دون جعله أطول بكثير؟ هل التعديلات ذات صلة وليست مفرطة في الدردشة؟ تذكر أن هدفنا هو أن تكون التحديات واضحة وقصيرة قدر الإمكان. إنهم ليسوا المكان للحصول على تفاصيل غامضة. وقد يحاول المساهمون أيضا إضافة روابط إلى الموارد إلى التحديات. يمكنك إغلاق طلبات السحب هذه والرد عليها بهذا: - - > شكرا لك على طلب السحب الخاص بك. - > - > وأغلق طلب السحب هذا. الرجاء إضافة روابط وتفاصيل أخرى لمقالة الدليل المقابلة للطعن بدلاً من ذلك. - > - > إذا كنت تعتقد أنني مخطئ في إغلاق هذه المشكلة، يرجى إعادة فتحها وإضافة المزيد من الإيضاحات. شكرا لك و البرمجة السعيدة. - -2. **تعديل كود التحدي** هذه تغييرات على التعليمات البرمجية في تحد - بذور التحدي، حل التحدي، سلاسل الاختبار. يجب سحب طلبات السحب هذه من GitHub واختبارها على جهاز الكمبيوتر المحلي الخاص بك للتأكد من أنه لا يزال من الممكن اجتياز اختبارات التحدي مع الحل الحالي، والشفرة الجديدة لا تقدم أي أخطاء. وقد يحاول بعض المساهمين إضافة اختبارات إضافية لتغطية حالات الزاوية الأطلسية. ونحن بحاجة إلى توخي الحذر لكي لا نجعل التحدي أكثر تعقيدا. وينبغي أن تكون هذه التحديات واختباراتها بسيطة وبديهية قدر الإمكان. بغض النظر عن تحديات الخوارزمية وقسم إعداد المقابلات، يجب أن يكون المتعلمون قادرين على حل كل تحد في غضون دقيقتين تقريبا. - -3. **تغييرات Codebase** هذه التعليمات البرمجية تغير وظيفة منصة FreCodeCamp نفسها. في بعض الأحيان يحاول المساهمون إجراء تغييرات بدون الكثير من التفسير، ولكن بالنسبة للتغييرات البرمجية نحتاج إلى التأكد من وجود حاجة حقيقية للتغيير. لذا يجب أن تشير طلبات السحب هذه إلى مشكلة GitHub الحالية حيث تناقش أسباب التغيير. ثم يمكنك فتح طلب السحب على جهاز الكمبيوتر الخاص بك واختباره محلياً. بعد أن فعلت ذلك، إذا كانت التغييرات تبدو جيدة، لا تدمجها بعد. يمكنك التعليق على طلب السحب الذي يقول "LGTM"، ثم ذكر @raisedadead حتى يتمكن من إلقاء نظرة نهائية. - -### كيفية دمج أو إغلاق طلبات السحب - -بادئ ذي بدء، عندما تختار طلب سحب إلى الجودة، يجب عليك تعيين نفسك لها. يمكنك القيام بذلك بالنقر على رابط "تعيين نفسك" أسفل الجزء "المحال إليه" في العمود الأيمن من واجهة GitHub. - -وتبعا لنوع طلب السحب، يتبع القواعد المقابلة المذكورة أعلاه. - -قبل دمج أي طلب سحب، تأكد من أن GitHub لديه علامات فحص خضراء لكل شيء. إذا كان هناك أي X'، فحصها أولاً واكتشف كيفية تحويلها إلى علامات فحص خضراء أولاً. - -في بعض الأحيان سيكون هناك صراع للدمج. وهذا يعني أن طلب سحب آخر قد أدخل تغييرا على نفس الجزء من نفس الملف بالضبط. GitHub لديه أداة لمعالجة تناقضات الدمج هذه مباشرة على GitHub. يمكنك محاولة معالجة هذه الصراعات. فقط استخدم أفضل حكمك. التغييرات في طلب السحب ستكون في الأعلى، وستصبح التغييرات في الفرع الرئيسي في الأسفل. في بعض الأحيان ستكون هناك معلومات زائدة عن الحاجة يمكن حذفها. قبل أن تنتهي، تأكد من حذف `<<<<<<`، `=====`، و `>>>>>>` الذي يضيفه Git للإشارة إلى مناطق الصراع. - -إذا بدا طلب السحب جاهزا للدمج (ولا يتطلب الموافقة من @raisedadead)، يمكنك المضي قدما ودمجه. تأكد من استخدام وظيفة "سكواش ودمج" الافتراضية على GitHub. هذا سوف يهدم جميع طلبات السحب التي تلتزم في التزام واحد، مما يجعل تاريخ Git أسهل بكثير للقراءة. - -يجب عليك التعليق على طلب السحب، وشكر المساهم بطريقتك الشخصية. - -إذا كان مؤلف طلب السحب "أول مساهم" فيجب عليك أيضاً تهنئتهم على أول طلب سحب مدمج إلى المستودع. يمكنك النظر إلى الزاوية اليمنى العليا في هيئة PR's لتحديد المساهم لأول مرة. سوف تظهر `مساهم لأول مرة` كما هو موضح أدناه: - -![copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_request__20615_%C%B7_freeCodeCamp_freeCodeCamp 690x281](https://i.imgur.com/dTQMjGM.png) - -إذا كان طلب السحب لا يبدو جاهزاً للدمج، يمكنك الرد بأدب على إخبار مقدم البلاغ بما ينبغي أن يفعله للحصول على الجهاز. ويؤمل أن يجيبوا وأن يجعلوا طلب السحب أقرب إلى الجاهزة. - -ومن الواضح أن أي طلب للسحب سيكون في كثير من الأحيان منخفضا للجهد. يمكنك في كثير من الأحيان إخبار هذا على الفور عندما لم يقم المساهم بالتحقق من خانات الاختيار في قالب طلب السحب، أو استخدم عنوان طلب سحب عام مثل "إجراء تغييرات" أو "تحديث فهرس. د". - -وهناك أيضا حالات يحاول فيها المساهم إضافة رابط إلى موقع الويب الخاص به، أو تضمين مكتبة أنشأوها بأنفسهم، أو لديها تحرير تافهة لا يساعد أي شخص إلا بأنفسهم. - -وفي كلتا الحالتين، ينبغي أن تمضي قدما وأن تغلق طلب السحب والرد بهذه الرسالة القياسية: - -> شكرا لك على فتح طلب السحب هذا. -> -> هذه رسالة قياسية تخبرك أننا راجعنا طلب السحب الخاص بك وقررنا عدم دمجه. ونحن نرحب بطلبات السحب في المستقبل منكم. -> -> شكرا لك و البرمجة السعيدة. - -إذا كنت بحاجة إلى رأي ثان بشأن طلب الجذب، فأمضي قدماً وتترك تعليقاتك على طلب الجذب، ثم أضف تسمية "مناقشة" إلى طلب السحب. - -## إدارة مشكلات GitHub - -FreCodeCamp مشروع نشط مفتوح المصدر. إننا نحصل على قضايا جديدة كل يوم، وكلها تحتاج إلى تجربتها ووضع علامات عليها. - -### أنواع مشاكل GitHub - -1. **طلبات مساعدة التعليمات البرمجية**، والتي قام الناس بالخطأ بإنشاء مشاكل GitHub لها. إذا كان شخص ما يطلب المساعدة، قم بلصق الرسالة التالية، ثم أغلق المشكلة. - - > شكرا لك على الإبلاغ عن هذه المشكلة. - > - > هذه رسالة قياسية تخبرك أن هذه المشكلة تبدو وكأنها طلب للمساعدة. بدلاً من طلب المساعدة هنا، يرجى النقر على زر \*\*"مساعدة"\*\* على التحدي في معسكر البرمجيات الحرة، والذي سيساعدك على إنشاء سؤال في الجزء الصحيح من المنتدى. عادة ما يقوم المتطوعون في المنتدى بالرد على الأسئلة في غضون ساعات قليلة ويمكنهم المساعدة في تحديد ما إذا كانت هناك مشكلة في التعليمات البرمجية الخاصة بك أو اختبارات التحدي. - > - > إذا قرر أعضاء المنتدى أنه لا يوجد خطأ في التعليمات البرمجية، يمكنك طلب إعادة فتح هذه المشكلة. - > - > شكرا لك و البرمجة السعيدة. - -2. **مشكلات الخطأ أو التوضيح** حاول تكرار الخطأ بنفسك إذا استطعت. إذا لم يكن الأمر كذلك، اسألهم عن الخطوات التي تمكنهم من إعادة إنتاج الخطأ، وما إذا كان لديهم أي لقطات شاشة، مقاطع الفيديو، أو التفاصيل الإضافية التي يمكن أن تساعدك على إعادة نشر المشكلة. بمجرد أن تتمكن من تكرار المشكلة - أو على الأقل تأكيدها مشكلة قانونية - قم بتسميتها `مؤكدة`. ثم: - -- إذا كان الأمر بسيطاً إلى تحدي قائم، قم بتسمية `الموقت الأول فقط`، وإلا تم تسميته ب `المساعدة المطلوبة`. استخدام تسميات أخرى حسب الاقتضاء. -- إذا كانت المشكلة أكثر أهمية، علم كخطأ ``.   إذا كان هناك أي غموض فيما يتعلق بالمسار الصحيح للعمل بشأن مسألة ما. لا تتردد في وسم @raisedadead حول المسألة والحصول على رأيه بشأنها، ثم أضف `تسمية المناقشة` - -3. **تكرار المشكلات** إذا كانت المشكلة هي نفس مشكلة أخرى تم الإبلاغ عنها، يجب أن تكون الأولوية للمشكلة السابقة المبلغ عنها. علم باسم `تكرار`، قم بلصق الرسالة التالية استبدال `#XXX` برقم المشكلة، ثم أغلق المشكلة. - - > شكرا لك على الإبلاغ عن هذه المشكلة. - > - > هذه رسالة قياسية تنبيهك أن هذه المشكلة تبدو مشابهة جدا للمشكلة #XXXXX, ولذلك فإنني أختتم هذه المناقشة بوصفها تكرارا لها. - > - > إذا كنت تعتقد أنني مخطئ في إغلاق هذه المشكلة، يرجى إعادة فتحها وإضافة المزيد من الإيضاحات. شكرا لك و البرمجة السعيدة. - -4. **أصلحت في التجهيز** بعض المشاكل ربما تم إصلاحها بالفعل في التجهيز، ولكن ليس لديها مشكلة في GitHub مرتبطة بها. إذا كان هذا هو الحال، يمكنك لصق الرسالة التالية، وإغلاق المشكلة، وإضافة `حالة: تم حله/شحن` التسمية: - - > شكرا لك على الإبلاغ عن هذه المشكلة. - > - > هذه رسالة قياسية تخبرك أن المشكلة التي ذكرتها هنا موجودة في الإنتاج، ولكن تم بالفعل إصلاحها في مرحلة التدرج. وهذا يعني أنه في المرة القادمة التي ندفع فيها فرع التجهيز إلى الإنتاج، ينبغي حل هذه المشكلة. بسبب هذا، أنا أغلق هذه المشكلة. - > - > إذا كنت تعتقد أنني مخطئ في إغلاق هذه المشكلة، يرجى إعادة فتحها وإضافة المزيد من الإيضاحات. شكرا لك، و البرمجة السعيدة. - -### إغلاق الجمود، المشكلات غير النشطة و طلبات السحب - -- القضايا العادية أو حقوق الملكية الخاصة هي القضايا التي لم تشهد أي نشاط من البروتوكول الاختياري لمدة 21 يوماً (3 أسابيع من آخر النشاط)، ولكن فقط بعد أن يطلب المشرف المزيد من المعلومات/التغييرات. يمكن إغلاق هذه البرامج في نص تلقائي/روت أو بواسطة المشرفين أنفسهم. - -- النشاط معرَّف كما يلي: التعليقات التي تطلب تحديثاً على PR والمحاولات مثل `حالة: التحديث المطلوب` التسمية الخ. - -- وإذا طلب البرنامج مساعدة إضافية أو حتى وقت، يمكن تخفيف ما سبق ذكره وإعادة النظر فيه بعد تقديم الرد. وعلى أية حال، ينبغي أن تستعمل النماذج أفضل ما لديها من حكم لتسوية الوضع المعلق للحزب التقدمي الموحد. - -### مبادئ توجيهية أخرى لمشرفي نظام GitHub - -على الرغم من أنه سيكون لديك الوصول للكتابة إلى مستودع FreCodeCamp، **يجب ألا تدفع التعليمات البرمجية مباشرة إلى مستودعات freeCodeCamp**. جميع التعليمات البرمجية يجب أن تدخل رمز معسكر FreCodep في شكل طلب سحب من شوكة المستودع. - -وأيضا، يجب ألا تقبل أبداً براءات الاختراع الخاصة بك. يجب أن يكونوا QAd من قبل مشرف آخر، تماما مثل أي رئيس سابق آخر. - -إذا لاحظت أن أي شخص يخالف مدونة السلوك [](https://code-of-conduct.freecodecamp.org) على مشكلات GitHub ، أو فتح طلبات سحب مع محتوى أو كود خبيث، البريد الإلكتروني dev@freecodecamp. rg مع رابط لطلب السحب المذهل ويمكننا النظر في حظرهم من منظمة FreCodeCamp GitHub بشكل كامل. - -# إدارة المنتدى - -كمشرف ، يمكنك المساعدة في إبقاء مجتمعنا مكانا ممتعا لأي شخص للتعلم والحصول على المساعدة. سوف تتعامل مع المشاركات المعلمة والتعامل مع الرسائل غير المرغوب فيها، خارج الموضوع، وغيرها من المحادثات غير الملائمة. - -لاحظ أنه بمجرد أن تكون مشرفا على المنتدى، ستبدأ في مشاهدة تلميحات المشرف الأزرق حول أعضاء المنتدى، مثل "هذه هي المرة الأولى التي ينشر فيها [person] - دعونا نرحب بهم في المجتمع! أو "[person] لم تنشر في وقت طويل - دعونا نرحب بها مرة أخرى." - -![رسالة نصية زرقاء تقول "هذه هي المرة الأولى التي تنشر فيها [person] - دعونا نرحب بهم في المجتمع!](https://i.imgur.com/mPmVgzK.png) - -هذه فرص لك للترحيب بهم وجعلهم يشعرون بميزة إضافية. أنت لا تعرف أبدا أي شخص يشارك بشكل هامشي قد يصبح المساعد الأعلى التالي لنا، ويساعد العديد من الناس الآخرين في رحلتهم البرمجية. وحتى أصغر لطف قد يؤدي إلى سلسلة من الأفعال الجيدة. - -### حذف مشاركات المنتدى - -مشرفو المنتدى لديهم القدرة على حذف مشاركات المستخدم. يجب عليك القيام بذلك فقط في الحالات التالية: - -1. وقد نشر شخص ما صورة إباحية أو صورية عنيفة. -2. قام شخص ما بنشر رابط أو كود ضارة في طبيعته، ويمكن أن يضر بكاميرات أخرى تنقر عليها. -3. شخص ما غمر خيطا مع الكثير من رسائل البريد المزعج. - -### التعامل مع البريد المزعج - -في أول مشاركة غير مرغوب فيها للمستخدم، أرسل لهم رسالة تشرح المشكلة، وإزالة الرابط أو المنشور حسب الاقتضاء. اترك ملاحظة على الملف الشخصي للمستخدم تشرح الإجراء الذي اتخذته. وإذا استمرت المشكلة، تتبع العملية أعلاه. منع المستخدم بهدوء من النشر (باستخدام خيار الصمت على لوحة إدارة المستخدم)، ثم إرسال تحذير مع رمز السلوك. حدد المربع في الرسالة الخاصة التي تشير إلى أن رسالتك هي "تحذير رسمي". - -يمكنك طرح الأسئلة والإبلاغ عن الحوادث في [قسم منتدى الموظفين](https://forum.freecodecamp.com/c/staff). - -### التعامل مع المحادثات خارج الموضوع - -ويمكن إعادة تصنيف الوظائف أو المواضيع التي يبدو أنها في المكان الخاطئ أو إعادة تسميتها إلى ما هو مناسب. - -وفي ظروف استثنائية، قد يكون من المناسب أن يطرح منسق المناقشة في خيوط متعددة. - -مرة أخرى، إذا كان لديك أي مشاكل أو أسئلة، قم بتأدية وظيفة في إطار إجراءاتك في فئة الموظفين، ووسم مشرف آخر إذا كنت تريد منهم مراجعة إجراءاتك المعتدلة. - -### المستخدمين القاصرين - -شروط الخدمة لدينا تتطلب أن يكون عمر مستخدمي CodeCamp 13 سنة على الأقل. وفي حالة ما إذا كشف المستخدم عن أنه يقل عمره عن 13 سنة، أرسل لهم الرسالة التالية وحذف حساب المنتدى الخاص بهم (إذا كان الحذف غير متوفر، تعليق الحساب). ثم البريد الإلكتروني [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) أو [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) لحذف حساب المستخدم freeCodeCamp أيضا. - -```markdown -الثانوية: لا يسمح للمستخدمين الذين تقل أعمارهم عن 13 سنة باستخدام المنتدى لكل شروط الخدمة - -لقد تبين لنا أن عمرك أقل من 13 سنة. لكل [Free CodeCamp شروط الخدمة] (https://www.freecodecamp.org/news/terms-of-service) يجب أن يكون عمرك 13 سنة على الأقل لاستخدام الموقع أو المنتدى. سنقوم بحذف حساب FreCodeCamp الخاص بك وحساب المنتدى الخاص بك. وهذا التقييد يجعلنا ممتثلين لقوانين الولايات المتحدة. - -يرجى الانضمام مرة أخرى بمجرد بلوغك سن 13 سنة على الأقل. - -نشكركم على تفهمكم. -``` - -# إدارة الفيسبوك - -إذا رأيت أي شيء يبدو وكأنه يخالف مدونة قواعد السلوك الخاصة بنا [](https://code-of-conduct.freecodecamp.org/)، يجب عليك حذفها فورا. - -في بعض الأحيان يقوم الناس بنشر الأشياء التي يعتقدون أنها مضحكة. إنهم لا يدركون أن ما قالوا أو ما تقاسموه يمكن تفسيره على أنه هجوم. وفي هذه الحالات، ينبغي حذف وظيفتهم، ولكن لا يلزم بالضرورة حظر الشخص الذي قام بنشرها. ومن خلال حذف مشاركتهم، نأمل أن يفهموا أن ما نشروه كان غير مناسب. - -ولكن إذا كانت جريمة فظيعة لا يمكن عزوها بشكل معقول إلى اختلاف ثقافي أو سوء فهم للغة الإنجليزية. ثم يجب عليك أن تفكر بقوة في حظر العضو من مجموعة فيسبوك. - -# ديسكورد مشرف - -إليك كيف يتعامل المشرفون مع انتهاكات [مدونة قواعد السلوك](https://code-of-conduct.freecodecamp.org/) على ديسكورد: - -1. **تأكد من أن القصد منه هو انتهاك مدونة قواعد السلوك.** لم تكن جميع انتهاكات مدونة قواعد السلوك مقصودة بهذه الصفة. كاميرا جديدة قد تنشر كمية كبيرة من التعليمات البرمجية للمساعدة، غير مدركة أن هذا يمكن اعتباره غير مرغوب فيه. في هذه الحالات، يمكنك فقط أن تطلب منهم لصق تعليماتهم البرمجية مع خدمات مثل Codepen أو Pastebin. - -2. **وفي حالة انتهاك كاميرا مدونة قواعد السلوك بشكل واضح، يتصرف منسق المناقشة على النحو التالي:** - -- تعليق الكاميرا المسيئة، ولكن لا تحذر منها أو تهددها. بدلاً من ذلك، أعطيتهم بهدوء الدور المعلق في ديسكورد، ثم أرسل إليهم الرسالة التالية: - -``` -هذه رسالة قياسية تخبرك بأنني اضطررت إلى تعليقك مؤقتاً من التحدث على خادم FreCodeCamp Discord - -وأنا مديرة المناقشة بالنيابة عن جماعتنا المفتوحة المصدر. - -وأنا مديرة المناقشة بالنيابة عن جماعتنا المفتوحة المصدر. يمكنني النظر في إزالة تعليقك، لكنني أريدك أن تتخذوا الخطوات الثلاث التالية أولاً: - -1. اقرأ كود السلوك الخاص بنا: https://code-of-conduct.freecodecamp.org/ -2. رسالة إليّ تؤكد أنك قد أنهيت قراءتها. 3. اشرح لي لماذا تعتقدون أنني علقتك، ولماذا يجب أن أزيل تعليقك. -``` - -- أبلغ عن ملخص قصير للحدث وكيفية استجابتهم له في قناة #admin . وفيما يلي مثال على ما قد يبدو عليه مثل هذا الموجز: - -``` -معلقة: _@username_ -السبب: _Spamming, trolling_ -دليل: _واحدة أو أكثر من الروابط إلى الرسالة (الرسائل) المسيئة_ -CoC: _Sent_ -``` - -- وينبغي أن يكون التقرير المتعلق بحذف التعليق على النحو التالي: - -``` -لقد قمت بإزالة التعليق من '@username `. لقد أرسلت إليهم مدونة قواعد السلوك. واليوم فقط أدركوا أنهم علقوا و اعتذروا عما فعلوه. -``` - -- واستنادا إلى رد المجرمين، سيقرر مدير المناقشة ما إذا كان سيسحب التعليق من كاميل المخالف. إذا كانت تبدو محترمة ومذهلة، يمكن للمشرف أن يزيل التعليق. وكمسألة تتعلق بالسياسات، سيكون المشرفون مهذبين خلال هذه العملية، مهما كان سوء تصرف الكاميرا المسيئة. إذا لم يكونوا محترمين أو غير راغبين في قبول مدونة قواعد السلوك، يجب أن يتبع التعليق بحظر من خادم ديسكورد. استخدم نفس الموجز كما ورد أعلاه، ولكن استعيض عن "معلقة:" ب "محظورة:". - -3. **كيفية حظر و/أو فك الحظر** - -- من أجل حظر شخص ما، انقر بزر الماوس الأيمن على اسم المستخدم/الصورة الشخصية الخاصة بهم وحدد "حظر ". سيتم منحك الخيار لحذف رسائلها السابقة - حدد "لا تقم بحذف أي من"، لأن الرسائل ينبغي أن تظل حاضرة بوصفها سجلا تاريخيا. -- إذا قررت حظر شخص ما، فهذا يعني أنهم غير مستعدين للالتزام بمدونة قواعد السلوك الخاصة بنا. ولذلك، نادرا ما ينبغي أن يحدث رفع الحظر عن كامير. ومع ذلك، إذا نشأت الحاجة، يمكنك فعل ذلك بالنقر على اسم الخادم، واختيار "إعدادات الخادم"، اختيار "الحظر"، اختيار المستخدم الذي ترغب في فك حظره، والنقر فوق "إلغاء الحظر". - -حظر ديسكورد عام - لا يمكنك حظر مستخدم من قناة معينة، فقط من الخادم بأكمله. - -4. **حذف الرسائل** للمشرفين القدرة على حذف الرسائل على ديسكورد. ولا ينبغي أن يمارسوا هذه القدرة إلا في أربع حالات محددة جداً: - -- وقد نشر شخص ما صورة إباحية أو صورية عنيفة. -- قام شخص ما بنشر رابط أو كود ضارة في طبيعته، ويمكن أن يضر بكاميرات أخرى تنقر عليها. -- وقد غمر شخص ما الدردشة بالكثير من الرسائل غير المرغوب فيها إلى حد كبير (عادة ما تشمل البوتات) بحيث تجعل الدردشة غير قابلة للاستخدام على الإطلاق. -- قام شخص ما بنشر إعلان و/أو رسالة / صورة للترويج الذاتي (وسائل الإعلام الاجتماعية). - -وفي جميع الحالات الأخرى - وحتى الحالات التي تنتهك فيها مدونة قواعد السلوك - ينبغي ألا يحذف المنسقون الرسالة لأنها سجل تاريخي هام. عندما تقوم بحذف رسالة، تأكد من أخذ لقطة للشاشة أولاً! يمكن تسجيل لقطة الشاشة في قناة #mod-log، ولكن بالنسبة لسجل #activs-log يكفي القول بأن الأدلة قد "حذفت بسبب المحتوى الحساس". ملاحظة: إذا كانت الرسالة تحتوي على مواد تكون غير قانونية لأخذ لقطة شاشة، انسخ رابط الرسالة بدلاً من ذلك - قدم رابط الرسالة إلى @raisedadead للإرسال إلى فريق ديسكورد الاستئماني والسلامة. - -5. **لا تستخدم @everyone أو @here** لا تستخدم @all أو @هنا تحت أي ظروف! كل شخص في غرفة الدردشة هذه سيحصل على إشعار. وفي بعض الحالات، عشرات الآلاف من الناس. بدلاً من ذلك، إذا كنت تريد من الناس رؤية إعلان، يمكنك تثبيته على القناة للسماح للجميع بقراءته. - -6. **لا تهدد بحظر أو تعليق** إذا كان كاميرا يخالف مدونة السلوك، لا تهدد بحظرها أو تعليقها، ولا تحذيرها علنا أبدا. وبدلاً من ذلك، التحدث إليهم على انفراد، أو إرسال رسالة رسمية إليهم وإصدار تعليق (حسب البروتوكول أعلاه). لا أحد في تلك القناة يحتاج إلى معرفة أنك حظرت/علقت الشخص - يمكن للكاميرات عرض الملخص في قناة #activt-log إن كانوا يريدون الاستمرار في تلك المعلومات. إذا كان الانتهاك غير مقصود بوضوح ولا يبرر تعليقه أو محادثة خاصة، اجعل الكاميرا المسيئة على علم بأفعاله دون جعلها تخرج كتحذير. وعلى سبيل المثال: - -- الكاميرا تنشر جدارا من التعليمات البرمجية لطلب المساعدة - - المشرف: @username الرجاء استخدام Codepen أو Pastebin عند نشر كميات كبيرة من التعليمات البرمجية. - -- أو إذا كان عليك أن تشرح لماذا: - - المشرف: @username الرجاء استخدام Codepen أو Pastebin عند نشر كميات كبيرة من التعليمات البرمجية، لأنه يعطل الدردشة للجميع ويمكن أن يعتبر الرسائل غير المرغوب فيها وفقا لمدونة قواعد السلوك الخاصة بنا. - -- الانتهاكات المعتدلة وغير المقصودة لمدونة قواعد السلوك - - مدير المناقشة: هذا تذكير ودي للجميع باتباع مدونة قواعد السلوك: https://code-of-conduct.freecodecamp.org// - -7. **لا تتقاعس عن أن تكون مشرفا** لا ترى نفسك كما فوق المجتمع. أنت مجتمعك. وقد ثق المجتمع بك للمساعدة في حماية شيء نادر نتقاسمه جميعا - مكان _للترحيب_ للمطورين الجدد. إذا كنت تتغاضى عن أن تكون مشرفا، قد يشعر الناس بالقلق حولك، بنفس الطريقة التي قد يشعر بها الناس بعدم الرضا حول ضابط شرطة، حتى لو لم يفعلوا شيئا خاطئا. هذه مجرد طبيعة إنسانية. - -8. **لا تتعارض مع مشرفين آخرين** إذا اختلفت مع إجراء المشرف ، التحدث معهم على انفراد أو إحضارهم في قناة #mod-Chat. لا تتخطى الحظر أبدا، ولا تتناقض أبدا مع المدير الآخر (المنسقون) علنا. وبدلا من ذلك، تجري مناقشة رائعة في المحادثة المفرطة وتقنع مدير المناقشة بأنه ينبغي لهم أنفسهم أن يعكسوا عن حظرهم أو أن يغيروا وجهة نظرهم. تذكر: نحن جميعا في نفس الفريق. ونريد أن نكرم دور المنسقين وأن نقدم جبهة موحدة. - -9. **تحدث مع مشرفين آخرين** لدينا غرفة للمشرفين فقط. استخدمه ! إذا كنت تشعر بعدم الارتياح لكيفية التعامل مع حالة معينة، فاطلب المساعدة من المشرفين الآخرين. إذا كنت تعتقد أنه يجب مناقشة شيء ما، قم بذلك. أنت جزء من الفريق ونحن نقدر مدخلات كل عضو في الفريق! حتى لو اختلفت تماما مع أي شيء في هذه المبادئ التوجيهية أو مدونة السلوك! - -10. **غير نشط مؤقتا** إذا كنت لن تكون نشطا كمشرف لفترة من الوقت بسبب العطلة، المرض أو أي سبب آخر، تأكد من إخبار الآخرين في قناة الدردشة #mod-Chat. هذا هو ما نعرفه إذا كان بإمكاننا التعويل عليك لتكون نشطا بشكل منتظم في الخادم أم لا. - -# كيف تصبح مشرفا - -إذا كنت تساعد الناس في المجتمع باستمرار بمرور الوقت، فإن فريق إدارة شؤون الإعلام الخاص بنا سيأخذ في نهاية المطاف الإشعار، وسوف يذكرك أحدهم كمشرف محتمل لـ [موظفينا](https://forum.freecodecamp.org/g/Team). ولا توجد اختصارات يمكن أن تكون مشرفة. - -إذا تمت الموافقة عليك، سوف نضيفك إلى أفرقة المشرفين لدينا على [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators)، [المنتدى](https://forum.freecodecamp.org/g/moderators)، إلخ. - -> [!ملاحظة] > **لـ GitHub:** بعد قبولك كمشرف، سوف تتلقى دعوة مستودع Github. ستحتاج إلى التوجه نحو [FreCodeCamp GitHub دعوة](https://github.com/orgs/freeCodeCamp/invitation) لتتمكن من قبول الدعوة. هذا مطلوب لنكون قادرين على إعطائك حق الدخول للكتابة على بعض مستودعاتنا. - -# كيف نتقاعد المشرفين الخاملين - -يرجى ملاحظة أننا سنقوم في كثير من الأحيان بإزالة المودات التي نعتقد أنها غير نشطة. وعندما نفعل ذلك، سنرسل الرسالة التالية: - -> هذه رسالة قياسية تخبرك أن: بما أنك لم تكن مشرفاً نشطاً مؤخراً، فإننا نزيلك من فريق المشرفين لدينا. ونحن نقدر تقديرا عميقا مساعدتكم في الماضي. - -> إذا كنت تعتقد أننا فعلنا ذلك بخطأ، أو بمجرد أن تكون على استعداد للعودة والإسهام بالمزيد، فقط الرد على هذه الرسالة التي تسمح لي بالمعرفة. - -# كيف تعمل غرفتنا المساهمين - -أي شخص مرحب به في غرفة المساهمين [على ديسكورد](https://discord.gg/KVUmVXA). إنها غرفة الدردشة المخصصة لمنسقي الشؤون وآلات التصوير الأخرى الذين يسهمون في مجتمعنا بأي شكل من الأشكال، بما في ذلك من خلال الأفرقة الدراسية. - -افتراضنا هو أن المساهمين سيقرأون أي شيء في هذه الغرفة يشير إليهم مباشرة باستخدام `@username`. كل شيء آخر اختياري. ولكن لا تتردد في قراءة أي شيء ينشره أي شخص هناك والتفاعل. - -# التعامل مع المحامين - -قد يتم الاتصال بك من قبل المنظمات التي ترغب في الشراكة أو الاشتراك مع FreCodeCamp بطريقة ما. بمجرد أن تدرك أن هذا هو ما يفعلونه، يرجى التوقف عن التحدث إليهم وإخبارهم بالبريد الإلكتروني quincy@freecodecamp.org. وهو يحصل على مقترحات من هذا القبيل طوال الوقت وهو في أفضل وضع للحكم على ما إذا كانت هذه العلاقة تستحق بالنسبة لمجتمعنا المحلي (ونادراً ما تكون عليها). - -# التعامل مع الاستفسارات الصحية (العقلية) - -قد تجد الحالات التي يلتمس فيها المستعملون المشورة الطبية أو الذين يعالجون مشاكل الصحة النفسية ويبحثون عن الدعم. وكمسألة تتعلق بالسياسات، ينبغي أن تتجنب التحدث على انفراد عن هذه المسائل. وإذا ما انعكست الحالة في مرحلة ما على لجنة التنسيق الإدارية، فإننا نريد تسجيل المحادثة (المحادثات). اجعل من الواضح أننا لسنا مهنيين طبيين وأنك تشجع المستخدم على العثور على مساعدة مهنية. على الرغم من صعوبة ذلك في بعض الأحيان، تجنب تقديم أي نصائح أو نصائح غير توجيه المستخدم نحو المساعدة المهنية! - -إذا حدث هذا على ديسكورد: علق المستخدم. وهذا لا يعني معاقبتهم! تعليق المستخدم سوف ينشئ قناة خاصة يمكن الوصول إليها فقط من قبل المستخدم والفريق. وهذا سيعود بالفائدة على كل من المستخدم و FCC بعدة طرق: - -- المستخدم مكفول بعض الخصوصية -- المحادثة العامة لم تعد متوقفة -- أعضاء الفريق الآخرون يمكنهم الدخول ، إذا كنت غير مريح في التعامل مع الوضع بنفسك - -> [!NOTE] تعليق المستخدم يعطي لهم تلقائياً رسالة عن قراءة كود السلوك الخاص بنا. تأكد من إعلام المستخدم بأنك أوقفتها لإعطائهم بعض الخصوصية وأنهم لا يعاقبون. هذا مهم جداً! نحن نريد تماما تجنب إعطاء المستخدمين فكرة أنهم يعاقبون على التواصل للحصول على المساعدة! - -إذا كنت تعتقد أن المستخدم قادر على العودة إلى المجتمع، انقر بزر الماوس الأيمن على القناة الخاصة ونسخ المعرف. ضع الرسالة التالية في #mod-log: - -> المشورة الطبية المرجعية: - -بعد ذلك، يمكنك إزالة التعليق من المستخدم كما تفعل عادة. - -عناوين URL المساعدة: - -http://www.suicide.org/international-suicide-hotlines.html - -# مذكرة بشأن حرية الكلام - -في بعض الأحيان يدافع الناس عن شيء هجومي أو حارق قالوا بأنه "حرية التعبير". - -يلخص هذا البرنامج الهزلي XKCD تماماً أفكار معظم المجتمعات المحلية بشأن حرية التعبير. لذا إذا دافع شخص ما عن شيء ما يقوله "حرية التعبير" لا تتردد في إرساله إليهم. - -
- -شكرا لقراءة هذا، وشكرا لمساعدة مجتمع المطور! diff --git a/docs/i18n/Arabic/flight-manuals/using-reply-templates.md b/docs/i18n/Arabic/flight-manuals/using-reply-templates.md deleted file mode 100644 index 0fdac4412b..0000000000 --- a/docs/i18n/Arabic/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,128 +0,0 @@ -# استخدام قوالب الرد - -هذه بعض قوالب الرد القياسية التي قد تستخدمها أثناء استعراض طلبات السحب ومشاكل التجليد. - -> يمكنك إنشاء الخاص بك باستخدام خاصية GitHub [**الردود المحفوظة**](https://github.com/settings/replies/) أو استخدام تلك أدناه. - -### شكرا لك - -```markdown -شكرا لك على مساهمتك في الصفحة! 👍 -نحن سعداء لقبول هذه التغييرات ونتطلع إلى المساهمات المستقبلية. 🎉 -``` - -### شكرا لك و مبروك - -> لشكر المساهمين لأول مرة وتشجيعهم. - -```markdown -مرحبا @username. تهانينا على أول طلب سحب (PR)! 🎉 - -شكرا لك على مساهمتك في الصفحة! 👍 -نحن سعداء لقبول هذه التغييرات ونتطلع إلى المساهمات المستقبلية. 📝 -``` - -### خطأ في البناء - -```markdown -مرحبًا @username - -نحب أن نكون قادرين على دمج التغييرات الخاصة بك ولكن يبدو أن هناك خطأ في بناء Travis CI. ⚠️ - -بمجرد حل هذه المشكلات، سنكون قادرين على مراجعة حسابك الخاص ودمجه. 😊 - ---- - -> لا تتردد في الرجوع إلى [دليل نمط كتابة المقالات](https://github. om/freeCodeCamp/freeCodeCamp#article-title) لهذا المستودع عند تنسيق المقالة بشكل صحيح بحيث يمر بناء Travis CI الخاص بك. ✅ -> -> أيضا، من الممارسات الجيدة على GitHub كتابة وصف موجز للتغييرات الخاصة بك عند إنشاء PR. 📝 -``` - -### مزامنة Fork - -> عندما لا يكون PR محدثاً مع فرع `الرئيسي` - -``````markdown -مرحبًا @username - -نحب أن نكون قادرين على دمج التغييرات الخاصة بك ولكن يبدو أن هناك خطأ في بناء Travis CI. ⚠️ - -```bash -خطأ: ENOTDIR: ليس دليلا، افتح 'src/pages/java/data-abstraction/index.md' -`````` - -هذا الخطأ بالذات لم يكن بسبب الملف الخاص بك ولكن خطأ قديم بسبب دمج الرمز الخاطئ في فرع `الرئيسي`. وقد تم حسمها منذ ذلك الحين. - -لتمرير البناء، يجب عليك مزامنة أحدث التغييرات من فرع `الرئيسي` في `freeCodeCamp/freeCodeCamp` repo. - -باستخدام سطر الأوامر، يمكنك القيام بذلك في ثلاث خطوات سهلة: - -```bash -git عن بعد إضافة git://github.com/freeCodeCamp/freeCodeCamp.git - -git يجلب أعلى مسار - -git يجلب سيد أعلى مسار -``` - -إذا كنت تستخدم واجهة المستخدم ، يمكنك ببساطة `إضافة جهاز التحكم الجديد ...` واستخدام الرابط `git://github.com/freeCodeCamp/freeCodeCamp.git` من الأعلى. - -بمجرد مزامنة الشوكة الخاصة بك وتمرير البناء، سنكون قادرين على مراجعة حسابك الشخصي ودمجه. 😊 - ---- - -> لا تتردد في الرجوع إلى مقالة [مزامنة Fork](https://help.github.com/articles/syncing-a-fork/) على GitHub للحصول على مزيد من التبصر حول كيفية إبقاء الشوك الخاص بك محدثة مع المستودع العلوي. 🔄 -> -> كما أنه ممارسة جيدة على GitHub لكتابة وصف موجز للتغييرات الخاصة بك عند إنشاء PR. 📝 -`````` - -### دمج التناقضات - -> عندما يكون للرقم الرئاسي تضارب يحتاج إلى حله.1 - -```markdown -Hey @username - -نحب أن نكون قادرين على دمج التغييرات الخاصة بك ولكن يبدو أن لديك بعض التضارب في الدمج. - -⚠️ - -بمجرد حل هذه التعارضات، سنكون قادرين على مراجعة حسابك الخاص ودمجه. 😊 - ---- - -> إذا لم تكن على دراية بعملية الدمج، لا تتردد في النظر إلى دليل GitHub's على ["حل دمج تنازع"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> أيضا، من الممارسات الجيدة على GitHub كتابة وصف موجز للتغييرات الخاصة بك عند إنشاء PR. 📝 -`````` -(1) إذا كان أحد المساهمين لأول مرة لديه صراع على الاندماج، يقوم القائمون على ذلك بحل الصراع بالنسبة لهم. - -### Duplicate - -> عندما يكون اللمس متكرراً أو متكرراً. - -```markdown -مرحبًا @username - -يبدو أنه قد تم قبول تغييرات مماثلة في وقت سابق لهذه المقالة التي تقوم بتحريرها، آسفة لذلك. 😓 - -إذا كنت تشعر بأن لديك المزيد لإضافته، لا تتردد في فتح PR. - -شكرا مرة أخرى! 😊 - ---- - -> إذا كان لديك أي أسئلة، لا تتردد في التواصل من خلال [Gitter](https://gitter.im/FreeCodeCamp/Contributors) أو من خلال التعليق أدناه. 💬 -``` - -### إغلاق طلبات السحب غير صالحة - -> عندما يكون R PR غير صالح. - -```markdown -مرحبًا@username - -لم تقم بإضافة أي محتوى، سنقوم بإغلاق هذا اللقب و وضع علامة على أنه 'غير صالح`. 😓 - -لا تتردد في فتح بطاقة شخصية أخرى! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Arabic/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Arabic/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index ede8ed5039..0000000000 --- a/docs/i18n/Arabic/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,478 +0,0 @@ -# Flight Manual for working on Virtual Machines - -وبصفتها عضوا في الموظف أو في فريق التفويض، قد يكون تم منحك حق الوصول إلى موفري خدمات السحابة مثل أزور، ديغيرونس، إلخ. - -إليك بعض الأوامر المفيدة التي يمكنك استخدامها للعمل على الآلات الظاهرية (VM)، على سبيل المثال القيام بتحديثات الصيانة أو القيام بحفظ المنازل بشكل عام. - -# Get a list of the VMs - -> [!ملاحظة] بينما قد يكون لديك بالفعل وصول SSH إلى VM، ذلك وحده لن يسمح لك بقائمة الرسائل الشخصية ما لم يتم منحك حق الوصول إلى بوابات السحابة كذلك. - -## Azure - -تثبيت Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -تثبيت Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -تبديل المصادقة والسياق: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. سيؤدي هذا إلى التأكد من أن الآلة الافتراضية قد تم تصويبها مع أحدث إصلاحات الأمان. - -> [!WARNING] Before you run these commands: -> -> - تأكد من أنه تم توفير VM بالكامل ولا يوجد خطوات ما بعد التثبيت قيد التشغيل. -> - إذا كنت تقوم بتحديث الحزم على VM التي تقدم بالفعل تطبيقا، تأكد من إيقاف التطبيق / حفظه. ستسبب تحديثات الحزمة عرض النطاق الترددي للشبكة، الذاكرة و/أو استخدام المعالج مما يؤدي إلى حالات انقطاع في تشغيل التطبيقات. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -نقوم بتشغيل مثيلات التحميل المتوازنة (Azure Load Balancer) لخوادمنا على الويب. تقوم هذه الخوادم بتشغيل NGINX التي تعكس مسار كل حركة المرور إلى freeCodeCamp.org من تطبيقات مختلفة تعمل على بنيات تحتية خاصة بها. - -إعدادات NGINX متاحة على [هذا المستودع](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. يقوم SSH و بالتغييرات حسب الاقتضاء للحالة (الحالات) الخاصة. - -إذا لم تستخدم إعدادات Cloud init سابقا استخدم أدناه للإعداد اليدوي ل NGINX وصفحات الخطأ: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -احصل على شهادات منشأ Cloudflare من التخزين الآمن والتثبيت في المواقع المطلوبة. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. قد تحتاج أيضًا إلى إضافة VMs لتحميل مخزن خلفية الموازنة إذا لزم الأمر. - -## تحديث الأمثلة (النفوذ) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

https://amplify.nginx.com

-## Updating Instances (Maintenance) - -يتم الحفاظ على تغييرات التكوين إلى مثيلاتنا NGINX على GitHub، يجب أن يكون نشر في كل حالة مثل هذا: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. اختبار وإعادة تحميل الإعدادات [مع الإشارات](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## تحديث الأمثلة (النفوذ) - -```console -## 1 - قطع الأشجار والرصد - -```console -سجلات pm2 -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. يمكن أن يكون تحديث متجدد أو تحديث يدوي. الأخير ضروري عند تغيير الإعتمادات أو إضافة متغيرات الإنفيرون. - -> [!DANGER] خطوط الأنابيب الآلية لا تتعامل مع تحديثات الإعتمادات في دقيقة. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. يجب ألا تحتاج إلى تشغيل هذه الأوامر وهذه الوثائق هنا للوثائق. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ابدأ مثيلات العنصر النائب لعميل الويب، سيتم تحديثها مع مصنوعات من أنبوب ازور. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - عملاء-start-Preary.sh --name client-primary - صدى "serve -c . /../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary. (ح) - pm2 حذف العميل الثانوي - pm2 بدء./client-start-secondary.sh --name client-secondary -``` - -## تحديث الأمثلة (النفوذ) - -```console -## 1 - قطع الأشجار والرصد - -```console -سجلات pm2 -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. يمكن أن يكون تحديث متجدد أو تحديث يدوي. الأخير ضروري عند تغيير الإعتمادات أو إضافة متغيرات الإنفيرون. - -> [!DANGER] خطوط الأنابيب الآلية لا تتعامل مع تحديثات الإعتمادات في دقيقة. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. يجب ألا تحتاج إلى تشغيل هذه الأوامر وهذه الوثائق هنا للوثائق. These are here for documentation. diff --git a/docs/i18n/Arabic/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Arabic/how-to-catch-outgoing-emails-locally.md index b7526a79e4..397ea3382a 100644 --- a/docs/i18n/Arabic/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Arabic/how-to-catch-outgoing-emails-locally.md @@ -1,75 +1,75 @@ -> **ملاحظة:** هذه خطوة **اختيارية** وهي مطلوبة فقط عند العمل مع مسار عمل البريد الإلكتروني +> **Note:** This is an **optional** step and is required only when working with email workflows -## مقدمة +## Introduction -بعض تدفقات عمل البريد الإلكتروني، مثل تحديث البريد الإلكتروني للمستخدم، يتطلب خادم api-end لإرسال رسائل البريد الإلكتروني الصادرة. بديل لاستخدام موفر خدمة البريد الإلكتروني لإرسال رسائل البريد الإلكتروني الفعلية، Mailhog هو أداة المطور لاختبار البريد الإلكتروني التي ستحصل على رسائل البريد الإلكتروني المرسلة من مثيل freeCodeCamp الخاص بك. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## تثبيت MailHog +## Installing MailHog -يمكن تثبيت MailHog على macOS و Windows و Linux. +MailHog can be installed on macOS, Windows and Linux. -- [مقدمة](#introduction) -- [تثبيت MailHog](#installing-mailhog) - - [تثبيت MailHog على macOS](#installing-mailhog-on-macos) - - [تثبيت MailHog على Windows](#installing-mailhog-on-windows) - - [تثبيت MailHog على Linux](#installing-mailhog-on-linux) -- [استخدام MailHog](#using-mailhog) -- [روابط مفيدة](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### تثبيت MailHog على macOS +### Installing MailHog on macOS -تثبيت MailHog على macOS مع [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash -قرع تثبيت mailhog -خدمات الخبز تبدأ في mailhog +brew install mailhog +brew services start mailhog ``` -الأوامر المذكورة أعلاه ستبدأ خدمة mailhog في الخلفية. +The above commands will start a mailhog service in the background. -عند اكتمال التثبيت، يمكنك بدء [باستخدام MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### تثبيت MailHog على Windows +### Installing MailHog on Windows -تحميل أحدث إصدار من MailHog من [المستودع الرسمي لـ MailHog](https://github.com/mailhog/MailHog/releases). حدد موقع وانقر على رابط إصدار Windows (32 أو 64 bit) و ملف .exe سيتم تنزيله إلى جهاز الكمبيوتر الخاص بك. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -عند اكتمال التنزيل، انقر لفتح الملف. قد يظهر إشعار بجدار الحماية Windows ، لطلب إذن الوصول إلى MailHog. سيفتح موجه سطر الأوامر القياسي لنظام Windows حيث سيتم تشغيل MailHog بمجرد منح الوصول إلى جدار الحماية. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -أغلق MailHog عن طريق إغلاق نافذة طلب الأوامر. لبدء تشغيل MailHog مرة أخرى، انقر على MailHog القابل للتنفيذ (. x) الملف الذي تم تنزيله في البداية - ليس من الضروري تنزيل ملف تثبيت MailHog جديد. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -ابدأ [باستخدام MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### تثبيت MailHog على Linux +### Installing MailHog on Linux -أولاً، قم بتثبيت [اذهب](https://golang.org). +First, install [Go](https://golang.org). -تشغيل الأوامر التالية لتثبيت GO على الأنظمة القائمة على دبيان مثل أوبونتو و لينكس مينتنت. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -تشغيل الأوامر التالية لتثبيت GO على الأنظمة القائمة على RPM، مثل CentOS، فيدورا، Red Hat Linux، إلخ. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -بدلاً من ذلك، قم بتشغيل الأوامر التالية لتثبيت GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -الآن قم بتعيين مسار الذهاب مع الأوامر التالية. +Now set the path for Go with the following commands. ```bash -صدى "تصدير GOPATH=$HOME/go" >> ~/.prof -صدى 'تصدير PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.prof -مصدر ~/.profile +echo "export GOPATH=$HOME/go" >> ~/.profile +echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile +source ~/.profile ``` -أخيرا، أدخل الأوامر أدناه لتثبيت وتشغيل MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -ابدأ [باستخدام MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## استخدام MailHog +## Using MailHog -افتح علامة تبويب أو نافذة جديدة للمتصفح وانتقل إلى [http://localhost:8025](http://localhost:8025) لفتح صندوق الوارد الخاص بك MailHog عند اكتمال تثبيت MailHog وتشغيل MailHog. سيظهر صندوق الوارد مشابه للشاشة التي تلصق أدناه. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![لقطة شاشة MailHog 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -رسائل البريد الإلكتروني المرسلة بواسطة تثبيت freeCodeCamp الخاص بك ستظهر كما يلي +Emails sent by your freeCodeCamp installation will appear as below -![لقطة شاشة MailHog 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -ستتوفر علامة تبويب تسمح لك بعرض إما نص عادي أو مصدر المحتوى عند فتح بريد إلكتروني معين. تأكد من اختيار علامة التبويب للنص العادي على النحو التالي. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![لقطة شاشة MailHog 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -يجب أن تكون جميع الروابط في البريد الإلكتروني قابلة للنقر والعزم على عنوان URL الخاص بها. +All links in the email should be clickable and resolve to their URL. -## روابط مفيدة +## Useful Links -- تحقق من [MailHog](https://github.com/mailhog/MailHog) مستودع لمزيد من المعلومات المتعلقة بـ MailHog. تتوفر أيضا معلومات إضافية عن تكوينات MailHog المخصصة. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Arabic/how-to-help-with-video-challenges.md b/docs/i18n/Arabic/how-to-help-with-video-challenges.md index f2d971c2fc..0724aaef02 100644 --- a/docs/i18n/Arabic/how-to-help-with-video-challenges.md +++ b/docs/i18n/Arabic/how-to-help-with-video-challenges.md @@ -1,44 +1,44 @@ -# كيفية المساعدة في مواجهة تحديات الفيديو +# How to help with video challenges -تحديات الفيديو هي نوع جديد من التحديات في منهج FreCodeCamp. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -تحدي الفيديو هو جزء صغير من دورة فيديو كاملة عن موضوع معين. صفحة تحدي الفيديو تتضمن فيديو يوتيوب. ولكل صفحة تحدٍ سؤال واحد متعدد الخيارات يتصل بالفيديو. يجب على المستخدم أن يجيب على السؤال بشكل صحيح قبل الانتقال إلى تحدي الفيديو التالي في الدورة. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -يتم إنشاء صفحات تحدي الفيديو من قبل أعضاء فريق FreCodeCamp. يتم تحميل مقاطع فيديو اليوتيوب أيضًا من قبل أعضاء فريق FreCodeCamp. والعديد من التحديات التي تواجه الفيديو ليست لها حتى الآن أسئلة مرتبطة بها. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -يمكنك المساعدة عن طريق إنشاء أسئلة متعددة الخيارات ذات الصلة بأقسام الفيديو وإضافة الأسئلة إلى ملفات markdown لتحديات الفيديو. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## قالب التحدي +## Challenge Template -فيما يلي نموذج لما تبدو عليه ملفات الـ markdown للتحدي. +Below is a template of what the challenge markdown files look like. ````md --- -المعرف: معرف فريد (أبجدي رقمي, MongoDB_id) -العنوان: عنوان التحدي -نوع التحدي: 11 -معرف الفيديو: 'YouTube videoID لتحدي الفيديو' +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 11 +videoId: 'YouTube videoId for video challenge' --- -## # وصف +## Description
-وصف اختياري مع معلومات مفيدة ذات صلة بالفيديو. +An optional description with helpful information related to the video.
-## الإختبارات +## Tests
-'سؤال 'ml -: - نص: 'سؤال' - إجابات: - - 'الإجابة واحدة' - - 'الإجابة الثانية' - - 'الإجابة ثلاثية' - الحلول: 3 +```yml +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
@@ -57,139 +57,143 @@ You can find the markdown files for video challenges at the following locations Pick a challenge markdown file from the options above. -### السحابة عبر الفيديو المقترن بالتحدي وإنشاء سؤال اختياري مميز +### Skim through the video associated with the challenge and create a mutiple choice question -أولا، ابحث عن معرف الفيديو. +First, find the videoId. -على سبيل المثال، في التعليمة البرمجية التالية من رأس ملف تحدي الفيديو markdown، الفيديو هو "nVAaxZ34k". وينبغي عرض المعلومات في شكل جدول على موقع GitHub. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -معرف: 5e9a093a74c4063ca6f7c14d title: Data Analysis example A ChallengeTpe: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -بعد ذلك، الوصول إلى فيديو اليوتيوب باستخدام ذلك المعرف الفيديو. عنوان URL للفيديو سيكون هو: -https://www.youtube. om/watch?v=[videoId] (إضافة الفيديو إلى عنوان URL بدون أقواس معقوفة) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -في المثال أعلاه، عنوان URL هو https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -سمع فيديو يوتيوب مع معرف الفيديو هذا وفكر في سؤال متعدد الخيارات يستند إلى محتوى الفيديو. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### اضافة السؤال الى ملف markdown +### Add the question to the markdown file -يمكنك اضافة السؤال محليا او مباشرة الى واجهة GitHub ### اضافة السؤال الى ملف markdown +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -يمكنك اضافة السؤال محليا او مباشرة الى واجهة GitHub لإضافة السؤال محلياً، تحتاج إلى [إعداد freeCodeCamp محلياً](howto-setup-freecodecamp-locally.md). يمكنك أيضًا العثور على الملف على GitHub والنقر على زر التحرير لإضافة السؤال في المتصفح الخاص بك. - -إذا لم يكن السؤال قد أضيف بعد إلى تحدي فيديو معين، سيكون لديه السؤال الافتراضي التالي: - -```ml -سؤال: - نص: - سؤال - إجابات: - - - واحد - - - إثنان - - - ثلاثة - حلول: 3 -``` - -قم بتحديث كلمة ”سؤال“ بسؤالك. • تحديث "واحد" و"اثنين" و"ثلاثة" مع الإجابات الممكنة. تأكد من تحديث رقم الحل الذي يكون إجابته صحيحاً. يمكنك إضافة المزيد من الإجابات الممكنة باستخدام نفس التنسيق. ويمكن أن تكون علامات الاقتباس محاطة بالسؤال والإجابات. - -#### استخدم markdown لتنسيق سؤالك - -أما النص الوارد في السؤال فيتم الرجوع إليه كعلامة مأخوذة من الأسفل. أبسط طريقة لضمان تنسيقه بشكل صحيح هي بدء السؤال بنص `: `، مثل هذا: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -سؤال: - نص: - سؤال +question: + text: | + Question + answers: + - | + one + - | + two + - | + three + solution: 3 ``` -ثم تحتاج إلى التأكد من أن سؤالك موجود على سطر جديد وذو مستوى واحد أكثر من `نص: `. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -ويمكن استخدام نفس النهج للإجابات، بحيث يصبح السؤال بأكمله +#### Use markdown to format your question + +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -سؤال: - نص: - سؤال - إجابات: - - - الإجابة الأولى - - - ثانية - - - الحل الثالث - : 2 +question: + text: | + Question ``` -تأكد من أن كل إجابة معقولة ولكن هناك إجابة صحيحة واحدة فقط. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -#### استخدام HTML +The same approach can be used for the answers, so the entire question becomes -يمكن أن تحتوي الأسئلة والإجابات على بعض علامات HTML مثل `
` لسطر جديد. وينبغي استخدام وسوم HTML بشكل ضئيل، عندما لا يمكن التعبير عن الأسئلة بدونها. +```yml +question: + text: | + Question + answers: + - | + First answer + - | + Second + - | + Third + solution: 2 +``` -### أمثلة على الأسئلة +Make sure each answer is plausible but there is only one correct answer. -#### أمثلة بدون HTML +#### Use of HTML + +Questions and answers can contain certain HTML tags like `
` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. + +### Question examples + +#### Examples without HTML ````yml -سؤال: - نص: - ماذا يسجل رمز جافا سكريبت هذا إلى وحدة التحكم؟ +question: + text: | + What does this JavaScript code log to the console? ```js - console.log('hello world')؛ + console.log('hello world'); ```` - اختر إجابة! - الإجابات: - - مرحبا *العالم* - - **مرحبا** العالم - - مرحبا بالعالم حل: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -سؤال: - نص: - ما الذي سيطبع بعد تشغيل هذا الكود: +question: + text: | + What will print out after running this code: ```py - العرض = 15 - ارتفاع = 12. الطباعة (ارتفاع/3) + width = 15 + height = 12.0 + print(height/3) ```` - الإجابات: + answers: - | 39 - | 4 - - 4.0 - - 5.0 - - 5 حل: 3 + - | 4.0 + - | 5.0 + - | 5 solution: 3 ```` -#### مثال مع HTML +#### Example with HTML -```ml -سؤال: - نص: - ما الذي سيطبع بعد تشغيل هذا الرمز: -
عرض = 15
ارتفاع = 12.
الطباعة (ارتفاع/3)
- إجابات: - - +```yml +question: + text: | + What will print out after running this code: +
width = 15
height = 12.0
print(height/3)
+ answers: + - | 39 - - + - | 4 - - - 4. + - | + 4.0 + - | + 5.0 + - | + 5 + solution: 3 ```` -ويدل المثال الأخير على أنه يمكن استخدام HTML، ولكنه ليس مقروءاً كالإصدار بدونه. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -لمزيد من الأمثلة، يمكنك النظر إلى ملفات markdown للدورة التالية للفيديو. جميع التحديات لديها بالفعل أسئلة: [بايثون لكل شخص دورة](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## فتح طلب سحب +## Open a pull request -بعد إنشاء سؤال واحد أو أكثر، يمكنك إدخال تغييرات على فرع جديد و [فتح طلب سحب](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Arabic/how-to-open-a-pull-request.md b/docs/i18n/Arabic/how-to-open-a-pull-request.md index 9c8610692d..2729cd6237 100644 --- a/docs/i18n/Arabic/how-to-open-a-pull-request.md +++ b/docs/i18n/Arabic/how-to-open-a-pull-request.md @@ -1,179 +1,179 @@ -# كيفية فتح طلب سحب (PR) +# How to open a Pull Request (PR) -يتيح لك طلب سحب إرسال تغييرات من الشوك الخاص بك على GitHub إلى المستودع الرئيسي لـ freeCodeCamp.org. بمجرد الانتهاء من إجراء تغييرات على التعليمة البرمجية، أو تحديات البرمجة، يجب عليك اتباع هذه المبادئ التوجيهية لإرسال PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## إعداد عنوان جيد لـ PR +## Prepare a good PR title -نوصي باستخدام [عنوان ورسائل تقليدية](https://www.conventionalcommits.org/) للإلتزامات وسحب الطلب. وتتخذ الاتفاقية الشكل التالي: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([النطاق/النطاقات الاختيارية]): ` +> `([optional scope(s)]): ` > -> وعلى سبيل المثال: +> For example: > -> `إصلاح (تعلم): اختبارات الدو...بينما تحدي الحلقة` +> `fix(learn): tests for the do...while loop challenge` -عند فتح طلب سحب (PR)، يمكنك استخدام أدناه لتحديد النوع والنطاق (اختياري) والوصف. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**النوع:** +**Type:** -| نوع | متى يتم تحديد | -|:--------- |:------------------------------------------------------------ | -| إصلاح | تغيير أو تحديث/تحسين وظائف واختبارات ودروس وما إلى ذلك. | -| الأجرام | فقط إذا كنت تضيف وظائف جديدة، اختبارات، إلخ. | -| عصى | التغييرات التي لا تتصل بالكود أو الاختبارات أو الدرس الواحد. | -| المستندات | تغييرات على دليل `/docs` أو المبادئ التوجيهية المساهمة، إلخ. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**النطاق:** +**Scope:** -يمكنك تحديد نطاق من [قائمة التسميات](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**وصف:** +**Description:** -ابقائها قصيرة (أقل من 30 حرفاً) وبسيطة، يمكنك إضافة المزيد من المعلومات في مربع وصف العلاقات العامة والتعليقات. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -وفيما يلي بعض الأمثلة على عناوين حقوق الملكية الفكرية الجيدة: +Some examples of good PRs titles would be: -- `إصلاح (أ11y): تحسين تباين شريط البحث` -- `الميزة: إضافة المزيد من الاختبارات إلى تحديات html و css` -- `إصلاح (api,العميل): منع أخطاء CORS عند تقديم النموذج` -- `docs(i18n): الترجمة الصينية للإعداد المحلي` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## اقتراح طلب سحب +## Proposing a Pull Request -1. بمجرد أن يتم الالتزام بالتعديلات، سيتم مطالبتك بإنشاء طلب سحب على صفحة GitHub الخاصة بك. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![الصورة - مقارنة طلب السحب على GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. بشكل افتراضي، يجب أن تكون جميع طلبات السحب ضد مخزن FreCodeCamp الرئيسي، `رئيسي` فرع. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - تأكد من أن القاعدة الخاصة بك تم تعيينها على رمز كامب/FreCodeCamp عند رفع طلب سحب. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![الصورة - مقارنة الشوكات عند تقديم طلب سحب](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. قم بتقديم طلب السحب من فرعك إلى فرع `الكود كامب الرئيسي` +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. في متن حسابك الشخصي يتضمن ملخصاً أكثر تفصيلاً للتغييرات التي قمت بها ولماذا. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - سيتم تقديمك مع قالب طلب الجذب. هذه قائمة مرجعية كان يجب عليك متابعتها قبل فتح طلب السحب. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - قم بتعبئة التفاصيل كما تراها مناسبة. وسيتم استعراض هذه المعلومات وسيقرر المراجعون ما إذا كان طلب السحب الخاص بك قد قُبل أم لا. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - إذا كان الغرض من اللعبة هو معالجة مشكلة GitHub موجودة عندئذ، في نهاية جسم وصف PR، استخدم الكلمة المفتاحية _يغلق_ مع رقم المشكلة [أغلق هذه المشكلة تلقائيًا إذا تم قبول ودمج الـ PR](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > على سبيل المثال: `إغلاق #123` سيغلق المشكلة 123 + > Example: `Closes #123` will close issue 123 -5. حدد ما إذا كنت قد اختبرت على نسخة محلية من الموقع أم لا. +5. Indicate if you have tested on a local copy of the site or not. - هذا مهم جداً عند إجراء تغييرات لا تقتصر على تعديل محتوى النص مثل التوثيق أو وصف التحدي. وتشمل أمثلة التغييرات التي تحتاج إلى اختبار محلي جافا سكريبت أو CSS أو HTML التي يمكن أن تغير وظيفة أو تخطيط الصفحة. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## تعليقات على طلبات السحب +## Feedback on pull requests -> تهانينا! :tada: حول إجراء كلمة مرور وشكرا جزيلا على تخصيص الوقت للإسهام. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -سوف يلقي المشرفون الآن نظرة ويتركون لك ردود الفعل. يرجى التحلي بالصبر مع زملائهم المشرفين واحترام وقتهم. ويتم استعراض جميع طلبات السحب في الوقت المناسب. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -إذا كنت بحاجة إلى أي مساعدة يرجى المناقشة في [غرفة الدردشة المساهمين](https://gitter.im/FreeCodeCamp/Contributors)، نحن سعداء للغاية لمساعدتك. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!تلميح] إذا كنت ترغب في المساهمة بمزيد من طلبات السحب، ننصحك بقراءة [إجراء التغييرات ومزامنة](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) المبادئ التوجيهية لتجنب الاضطرار إلى حذف الشوك. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## تضارب حول طلب السحب +## Conflicts on a pull request -يمكن أن تنشأ تناقضات لأن العديد من المساهمين يعملون على المستودع، والتغييرات يمكن أن تحطم حسابك الشخصي الذي هو في انتظار المراجعة والدمج. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -وفي كثير من الأحيان قد لا تحتاج إلى قاعدة جديدة، لأننا نهدم جميع الالتزامات، ولكن إذا كان طلب إعادة قاعدة هنا هو ما ينبغي أن تفعله. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### لإصلاح الأخطاء والميزات المعتادة +### For usual bug fixes and features -عندما تعمل على الأخطاء والميزات العادية في فرع التطوير `الرئيسي`، يمكنك القيام بإعادة قاعدة بسيطة: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. استند إلى نسختك المحلية: +1. Rebase your local copy: ```console - git دفع - git سحب --rebase الرئيسي في أعلى المجرى + git checkout + git pull --rebase upstream master ``` -2. حل أي تعارضات وإضافة / تحرير الالتزامات +2. Resolve any conflicts and add / edit commits ```console - # إما - git يضيف. - git الالتزام -m "chore: حل التعارضات" + # Either + git add . + git commit -m "chore: resolve conflicts" - # أو - git إضافة. - git الالتزام --تعديل --عدم تحرير + # Or + git add . + git commit --amend --no-edit ``` -3. قم بالعودة إلى التغييرات الخاصة بك في بطاقة PR +3. Push back your changes to the PR ```console - git push --أصل القوة + git push --force origin ``` -### للمناهج الدراسية والمميزات القادمة +### For upcoming curriculum and features -عندما تعمل على الميزات الخاصة بفروع المناهج الدراسية `التالية*` ، لديك اختيار الكرز: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. تأكد من أن أعلى البث يأتي في تزامن مع اللغة المحلية الخاصة بك: +1. Make sure your upstream comes in sync with your local: ```console - git الخروج الرئيسي - git يجلب --كل --prune - git الخروج التالي لمشاريع python- - git إعادة تعيين --مشاريع Python التالية - Python + git checkout master + git fetch --all --prune + git checkout next-python-projects + git reset --hard upstream/next-python-projects ``` -2. أخذ نسخة احتياطية +2. Take backup - (أ) (أ) إما حذف الفرع المحلي الخاص بك بعد أخذ نسخة احتياطية (إذا كنت لا تزال لديك محلياً): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console - git الخروج + git checkout - # مثال: - # git Checout feat/add-numpy-video-question + # example: + # git checkout feat/add-numpy-video-question - git Checout -b + git checkout -b - # مثال: - # git Checout -b backup-feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - (ب) (ب) أو مجرد نسخة احتياطية لفرع pr الخاص بك (إذا لم يكن لديك محلياً): + b. Or just a backup of your pr branch (if you do not have it locally): ```console - git الخروج -b الأصل / + git checkout -b origin/ - # مثال: - # git Checout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. البدء بصفحة نظيفة: +4. Start off with a clean slate: ```console - git الدفع -b مشاريع python- - git cherry-seleck + git checkout -b next-python-projects + git cherry-pick ``` -5. حل أي تضارب، وتنظيف، وتثبيت اختبارات التشغيل +5. Resolve any conflicts, and cleanup, install run tests ```console - npm تشغيل نظيفة + npm run clean npm ci - npm تشغيل الاختبار:منهج --superblock= + npm run test:curriculum --superblock= - # مثال: + # example: - # npm تشغيل الاختبار:منهج --superblock=python-for-all person + # npm run test:curriculum --superblock=python-for-everybody ``` -6. إذا بدا كل شيء جيدًا ضحك للعودة إلى اللعبة +6. If everything looks good push back to the PR ```console - git push --أصل القوة + git push --force origin ``` diff --git a/docs/i18n/Arabic/how-to-setup-freecodecamp-locally.md b/docs/i18n/Arabic/how-to-setup-freecodecamp-locally.md index 381d3aba3f..619db733cf 100644 --- a/docs/i18n/Arabic/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Arabic/how-to-setup-freecodecamp-locally.md @@ -1,546 +1,546 @@ -اتبع هذه المبادئ التوجيهية لإنشاء FreCodeCamp محليا على نظامك. وهذا أمر موصى به بشدة إذا كنت ترغب في المساهمة بانتظام. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -لبعض تدفقات العمل المساهمة، تحتاج إلى أن يكون CodeCamp يعمل محلياً. على سبيل المثال، معاينة تحديات البرمجة أو تصحيح الأخطاء وإصلاحها في الكود البرمجي. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] إذا كنت غير مهتم بإعداد freeCodeCamp محليا التفكير في استخدام Gitpod، بيئة ديف مجانية على الإنترنت. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![فتح في Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (يبدأ بيئة dev جاهزة للبرمجة ل freeCodeCamp في المتصفح الخاص بك.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## إعداد جهازك المحلي +### How to prepare your local machine -ابدأ بتثبيت البرنامج الأساسي لنظام التشغيل الخاص بك. +Start by installing the prerequisite software for your operating system. -نحن ندعم التطوير بشكل أساسي على أنظمة **\*nix**. يعمل موظفينا ومساهمو مجتمعنا بانتظام مع البرنامج البرمجي باستخدام الأدوات المثبتة على Ubuntu و macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -نحن أيضًا ندعم Windows 10 عبر WSL2، الذي يمكنك إعداده عن طريق [قراءة هذا الدليل](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -كما يطور بعض أعضاء المجتمع المحلي على Windows 10 محلياً مع Git for Windows (Git Bash)، وأدوات أخرى مثبتة على Windows. ليس لدينا دعم رسمي لهذا الإعداد في هذا الوقت، ونحن نوصي باستخدام WSL2 بدلا من ذلك. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**الشروط:** +**Prerequisites:** -| الشروط المسبقة | الإصدار | الحواشي | -| --------------------------------------------------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12.x` | [جدول LTS](https://github.com/nodejs/Release#release-schedule) | -| npm (تأتي مجمعة مع العقدة) | `6.x` | ليس لديها إصدارات LTS، نحن نستخدم الإصدار المجمع مع LTS العقدة | -| [خادم مجتمع MongoDB](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [ملاحظات الإصدار](https://docs.mongodb.com/manual/release-notes/), ملاحظة: نحن حاليا في `3.6`, [من المقرر ترقية](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] إذا كان لديك إصدار مختلف، الرجاء تثبيت الإصدار الموصى به. يمكننا فقط دعم مشاكل التثبيت للإصدارات الموصى بها. راجع [استكشاف الأخطاء](#troubleshooting) للحصول على التفاصيل. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -إذا تم بالفعل تثبيت Node.js على جهازك، قم بتشغيل الأوامر التالية للتحقق من صحة الإصدار: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console -العقدة -v +node -v npm -v ``` -> [!TIP] نحن نوصي بشدة بالتحديث إلى أحدث إصدارات ثابتة من البرامج المذكورة أعلاه، والمعروفة أيضًا باسم إصدارات الدعم الطويل الأجل. +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -بمجرد أن يكون لديك المتطلبات الأساسية مثبتة، تحتاج إلى إعداد بيئة التطوير الخاصة بك. وهذا أمر شائع بالنسبة للعديد من تدفقات العمل التطويري، وسوف تحتاج إلى القيام بذلك مرة واحدة فقط. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**اتبع هذه الخطوات لجعل البيئة التنموية الخاصة بك جاهزة:** +**Follow these steps to get your development environment ready:** -1. قم بتثبيت [Git](https://git-scm.com/) أو عميل Git المفضل لديك، إذا لم تكن قد فعلت ذلك بالفعل. التحديث إلى أحدث إصدار؛ الإصدار الذي تم تجميعه مع نظام التشغيل الخاص بك قد يكون قديما. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (اختياري ولكن مستحسن) [إعداد مفتاح SSH](https://help.github.com/articles/generating-an-ssh-key/) لـ GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. قم بتثبيت محرر تعليمة برمجية من اختيارك. +3. Install a code editor of your choice. - نوصي بشدة باستخدام [Visual Studio Code](https://code.visualstudio.com/) أو [Atom](https://atom.io/). هذه محررات برمجية عظيمة ومجانية ومفتوحة المصدر. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. إعداد سطر لمحرر التعليمات البرمجية الخاص بك. +4. Set up linting for your code editor. - يجب أن يكون لديك [ESLint قيد التشغيل في محررك](http://eslint.org/docs/user-guide/integrations.html)، وستسلط الضوء على أي شيء لا يتوافق مع [دليل نمط جافا سكريبت في FreCodeCamp](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [تلميح] من فضلك لا تتجاهل أي أخطاء في التنبيه. القصد منها **مساعدتك** وضمان وجود شفرة نظيفة وبسيطة. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## اشترك في المستودع على GitHub +## Fork the repository on GitHub -[الطلب](https://help.github.com/articles/about-forks/) هو خطوة حيث تحصل على نسخة خاصة بك من مستودع FreCodeCamp الرئيسي (يعرف أيضا باسم _repo_) على GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -هذا أمر أساسي، لأنه يسمح لك بالعمل على نسختك الخاصة من FreCodeCamp على GitHub، أو لتحميل (استنساخ) مستودعك للعمل محلياً. في وقت لاحق، سوف تكون قادراً على طلب تغييرات لكي يتم سحبها إلى المستودع الرئيسي من الشوك الخاص بك عبر طلب سحب (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] المستودع الرئيسي في `https://github.com/freeCodeCamp/freeCodeCamp` غالبا ما يشار إليه على أنه `مستودع أعلى`. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> الشوك الخاص بك في `https://github.com/YOUR_USER_NAME/freeCodeCamp` غالبا ما يشار إليه على أنه مستودع المنشأ ``. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**اتبع هذه الخطوات لتشوه `https://github.com/freeCodeCamp/freeCodeCamp` مستودع:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. انتقل إلى مستودع FreCodeCamp على GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. انقر فوق زر "Fork" في الزاوية العلوية اليمنى من الواجهة ([المزيد من التفاصيل هنا](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. بعد أن يتم طلب المستودع، سيتم نقلك إلى نسختك من مستودع freeCodeCamp في `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
- كيف تشوه رمز المخيم الحرة على GitHub (لقطة شاشة) + How to fork freeCodeCamp on GitHub (screenshot)
- كيف تشوه معسكر مجاني على GitHub + How to fork freeCodeCamp on GitHub
-## استنساخ شوكك من GitHub +## Clone your fork from GitHub -[استنساخ](https://help.github.com/articles/cloning-a-repository/) هو المكان الذي تقوم فيه **بتنزيل** نسخة من مستودع من موقع `بعيد` تملكه أو يملكه شخص آخر. في حالتك ، هذا الموقع البعيد هو `فورك` الخاص بك من علبة freeCodeCamp التي يجب أن تكون متاحة على `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -تشغيل هذه الأوامر على جهازك المحلي: +Run these commands on your local machine: -1. فتح المحطة الطرفية / الأوامر الفورية / Shell في دليل مشاريعك +1. Open a Terminal / Command Prompt / Shell in your projects directory - _i..: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. استنسخ شوكك من FreCodeCamp، واستبدل `YOUR_USER_NAME` باسم مستخدم GitHub الخاص بك +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -سيؤدي هذا إلى تحميل مستودع FreCodeCamp بأكمله إلى دليل مشاريعك. +This will download the entire freeCodeCamp repository to your projects directory. -ملاحظة: `--depth=1` ينشئ نسخة ضحلة من فورك، مع فقط أحدث التاريخ/الالتزام. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## إعداد المزامنة من الأصل +## Set up syncing from parent -الآن بعد أن قمت بتنزيل نسخة من فورك، ستحتاج إلى إعداد `أعلى من` عن بعد إلى المستودع الأصلي. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[كما ذكر سابقاً](#fork-the-repository-on-github)، تم إحالة المستودع الرئيسي `مستودع في مرحلة ما قبل التشغيل`. الشوك الخاص بك مشار إليه على أنه مستودع `الأصل` +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -تحتاج إلى مرجع من استنساخك المحلية إلى مستودع `أعلى مسار` بالإضافة إلى مستودع `الأصل`. هذا يعني أنك تستطيع مزامنة التغييرات من المستودع الرئيسي دون الحاجة إلى التشيك والاستنساخ بشكل متكرر. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. تغيير الدليل إلى مجلد freeCodeCamp الجديد: +1. Change directory to the new freeCodeCamp directory: ```console - cd Free CodeCamp + cd freeCodeCamp ``` -2. إضافة مرجع عن بعد إلى مستودع FreCodeCamp الرئيسي: +2. Add a remote reference to the main freeCodeCamp repository: ```console - git قم بإضافة أعلى مجرى https://github.com/freeCodeCamp/freeCodeCamp.git + git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. تأكد من أن التهيئة تبدو صحيحة: +3. Ensure the configuration looks correct: ```console - git البعيد -v + git remote -v ``` - يجب أن يبدو المخرجات شيئا كأدناه: + The output should look something like below: ```console - الأصل https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - الأصل https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - أعلى المسار https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - أعلى المسار https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## تشغيل FreCodeCamp محليا +## Running freeCodeCamp locally -الآن بعد أن كان لديك نسخة محلية من معسكر FreCodep ، يمكنك اتباع هذه التعليمات لتشغيلها محلياً. سيسمح لك هذا بما يلي: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- معاينة التعديلات للصفحات كما ستظهر على منصة التعلم. -- العمل على قضايا واجهة المستخدم والتعزيزات. -- تصحيح الأخطاء وإصلاح المشكلات مع خوادم التطبيق وتطبيقات العميل. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -إذا كنت تواجه مشكلات، قم أولاً بإجراء بحث على الويب عن مشكلتك لمعرفة ما إذا كان قد تم الرد عليها بالفعل. إذا لم تتمكن من العثور على حل، الرجاء البحث عن [مشكلات GitHub](https://github.com/freeCodeCamp/freeCodeCamp/issues) للحصول على حل والإبلاغ عن المشكلة إذا لم يتم الإبلاغ عنها بعد. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -وكما هو الحال دائما، لا تتردد في الربط مع [مساهمين في غرفة الدردشة على Gitter](https://gitter.im/FreeCodeCamp/Contributors) أو [خادم ديسكورد](https://discord.gg/pFspAhS)، للاستفسارات السريعة. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [تلميح] يمكنك تخطي تشغيل FreCodeCamp محليا إذا كنت ببساطة تقوم بتحرير الملفات. على سبيل المثال، إجراء `إعادة قاعدة`أو حل `تنازع الدمج`. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> بإمكانك دائماً العودة إلى هذا الجزء من التعليمات في وقت لاحق. يجب عليك **** تخطي هذه الخطوة فقط إذا كنت لا تحتاج إلى تشغيل التطبيقات على جهازك. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [تخطي لإجراء التغييرات](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### تكوين الإعتمادات +### Configuring dependencies -#### الخطوة 1: إعداد ملف متغير البيئة +#### Step 1: Set up the environment variable file -يتم تخزين مفاتيح API الافتراضية ومتغيرات البيئة في الملف `sample.env`. يحتاج هذا الملف إلى نسخ إلى ملف جديد يسمى `.env` الذي يتم الوصول إليه بشكل ديناميكي أثناء خطوة التثبيت. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# إنشاء نسخة من "sample.env" واسمها ".env". -# احضره بمفاتيح API والأسرار اللازمة: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -عينة cp nv .env +cp sample.env .env # Windows -نسخ sample.env .env +copy sample.env .env ``` -المفاتيح في ملف `.env` ليست __ مطلوبة للتغيير لتشغيل التطبيق محلياً. يمكنك ترك القيم الافتراضية نسخة من `sample.env` كما هي. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!TIP] ضع نصب أعينك إذا كنت تريد استخدام خدمات مثل Auth0 أو Algolia، سوف تحتاج إلى الحصول على مفاتيح API الخاصة بك لهذه الخدمات وتحرير المدخلات تبعاً لذلك في `. nv` ملف +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### الخطوة 2: تثبيت الإعتمادات +#### Step 2: Install dependencies -سيتم تثبيت هذه الخطوة التبعيات المطلوبة للتطبيق لتشغيل: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### الخطوة 3: بدء MongoDB وبذور قاعدة البيانات +#### Step 3: Start MongoDB and seed the database -قبل أن يكون بإمكانك تشغيل الطلب محلياً، يتوجب عليك البدء في خدمة MongoDB. +Before you can run the application locally, you will need to start the MongoDB service. -> [!NOTE] ما لم يكن لديك MongoDB قيد التشغيل في إعداد مختلف عن الافتراضي، عنوان URL المخزن كقيمة `MONGOHQ_URL` في `. nv` يجب أن يعمل الملف بشكل جيد. إذا كنت تستخدم تكوين مخصص، قم بتعديل هذه القيمة حسب الحاجة. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -بدء تشغيل خادم MongoDB في محطة طرفية منفصلة: +Start the MongoDB server in a separate terminal: -- على macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- على Windows، يجب عليك تحديد المسار الكامل إلى `mongod` الثنائي +- On Windows, you must specify the full path to the `mongod` binary ```console - "C:\Program files\MongoDB\Server\3.6\bin\mongod" + "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - تأكد من استبدال `3.6` بالإصدار الذي قمت بتثبيته + Make sure to replace `3.6` with the version you have installed -> [تلميح] يمكنك تجنب الحاجة إلى بدء MongoDB في كل مرة عن طريق تثبيته كخدمة خلفية. يمكنك [معرفة المزيد عنها في وثائقها لنظام التشغيل الخاص بك](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -بعد ذلك، دعونا نؤسس قاعدة البيانات. في هذه الخطوة، نقوم بتشغيل الأمر أدناه الذي يملأ خادم MongoDB ببعض مجموعات البيانات الأولية المطلوبة من الخدمات. وتشمل هذه البرامج عددا قليلا من المخططات، من بين أمور أخرى. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -npm تشغيل البذور +npm run seed ``` -#### الخطوة 4: بدء تطبيق برنامج FreCodeCamp وخادم API +#### Step 4: Start the freeCodeCamp client application and API server -يمكنك الآن بدء تشغيل خادم API وتطبيقات العميل. +You can now start up the API server and the client applications. ```console -npm قيد التطوير +npm run develop ``` -هذا الأمر المنفرد سيطلق جميع الخدمات، بما في ذلك خادم API وتطبيقات العميل المتاحة لك للعمل. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!ملاحظة] مرة واحدة، افتح متصفح ويب و **قم بزيارة **. إذا قام التطبيق بتحميل، تهانينا - أنت معيّن! لديك الآن نسخة من منصة التعلم الخاصة بـ FreCodeCamp تعمل على جهازك المحلي. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] خادم API يخدم APIs في `http://localhost:3000`. تطبيق Gatsby يخدم تطبيق العميل في `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> إذا قمت بزيارة يجب أن ترى APIs المتاحة. +> If you visit you should see the available APIs. -## تسجيل الدخول باستخدام مستخدم محلي +## Sign in with a local user -الإعداد المحلي الخاص بك يقوم تلقائياً بتجميع مستخدم محلي في قاعدة البيانات. الضغط على زر `تسجيل الدخول` سيصادقك تلقائياً في التطبيق المحلي. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -ومع ذلك، فإن الوصول إلى صفحة حافظة المستعملين أمر صعب بعض الشيء. في مرحلة التطوير، Gatsby يتسلم خدمة صفحات العملاء وبالتالي ستحصل على صفحة `404` لحافظة المستخدم عند العمل محليا. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -ببساطة النقر على زر **"معاينة الصفحة 404"** سيتم توجيهك إلى الصفحة الصحيحة. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
- كيفية تسجيل الدخول عند العمل محليا (لقطة الشاشة) + How to sign in when working locally (screenshot)
- كيفية تسجيل الدخول عند العمل محليا + How to sign in when working locally
-## إجراء التغييرات محليا +## Making changes locally -يمكنك الآن إجراء تغييرات على الملفات وإلزام بتغييراتك على النسخة المحلية من الشوك. +You can now make changes to files and commit your changes to your local clone of your fork. -اتبع هذه الخطوات: +Follow these steps: -1. التحقق من أنك في فرع `الرئيسي`: +1. Validate that you are on the `master` branch: ```console git status ``` - يجب أن تحصل على ناتج مثل هذا: + You should get an output like this: ```console - في سيد الفرع - فرعك محدث بـ 'الأصلي/الماجستير'. + On branch master + Your branch is up-to-date with 'origin/master'. - لا شيء للالتزام، دليل العمل تنظيف + nothing to commit, working directory clean ``` - إذا لم تكن على رأس أو أن دليل العمل الخاص بك غير نظيف، قم بحل أي ملفات/التزامات معلقة وسحب `الرئيسي`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - سيد عملية الدفع + git checkout master ``` -2. مزامنة أحدث التغييرات من فرع FreCodeCamp upstream `الرئيسي` إلى الفرع الرئيسي المحلي الخاص بك: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [تحذير] إذا كان لديك أي طلب سحب معلق قمت به من فرع `الأستاذ` في فورمك، سوف تفقدهم في نهاية هذه الخطوة. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > يجب عليك التأكد من دمج طلب السحب الخاص بك من قبل مشرف قبل تنفيذ هذه الخطوة. لتجنب هذا السيناريو، يجب عليك **دائمًا** العمل على فرع غير `الرئيسي`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - هذه الخطوة **ستقوم بمزامنة أحدث التغييرات** من المستودع الرئيسي لـ freeCodeCamp. من المهم أن تقوم بإعادة بناء فرعك على قمة أحدث `برتقال/رشد` في أغلب الأحيان لتجنب التضارب لاحقاً. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - قم بتحديث نسختك المحلية من مستودع FreCodeCamp في أعلى مجال: + Update your local copy of the freeCodeCamp upstream repository: ```console - Git يجلب أعلى مجرى + git fetch upstream ``` - قم بإعادة تعيين فرعك الرئيسي مع سيد رمز المخيم: + Hard reset your master branch with the freeCodeCamp master: ```console - إعادة تعيين git - أعلى التدفق/إتقان + git reset --hard upstream/master ``` - دفع فرعك الرئيسي إلى منشئك للحصول على تاريخ نظيف على الشوك الخاص بك على GitHub: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console - Git دفع الأصل الرئيسي - القوة + git push origin master --force ``` - يمكنك التحقق من مطابقتك الرئيسية الحالية للتبسيط/الأستاذ عن طريق أداء مختلف: + You can validate your current master matches the upstream/master by performing a diff: ```console - Git تقطع في واجهة التدفق/إتقان + git diff upstream/master ``` - وينبغي أن يكون الناتج الناتج الناتج فارغاً. + The resulting output should be empty. -3. إنشاء فرع جديد جديد: +3. Create a fresh new branch: - العمل على فرع منفصل لكل مشكلة يساعدك في الحفاظ على نسخة عملك المحلي نظيفة. يجب ألا تعمل أبدا على `سيد`. سيؤدي هذا إلى تربة نسختك من CodeCamp وقد تضطر إلى البدء باستنساخ جديد أو شوك. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - تحقق من أنك على `سيد` كما تم شرحه سابقاً، والفرع من هناك: + Check that you are on `master` as explained previously, and branch off from there: ```console - git الدفع -b إصلاح/تحديث الدليل-لxyz + git checkout -b fix/update-guide-for-xyz ``` - يجب أن يبدأ اسم فرعك بـ `إصلاح/`، `الميزة /`، `docs/`، إلخ. تجنب استخدام أرقام المشاكل في الفروع. ابقائها قصيرة ومفيدة وفريدة. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - وفيما يلي بعض الأمثلة على أسماء الفروع الجيدة: + Some examples of good branch names are: ```md - إصلاح/update-Challenes-for-react + fix/update-challenges-for-react fix/update-guide-for-html-css - fix/platform-bug-sign-issues + fix/platform-bug-sign-in-issues feat/add-guide-article-for-javascript translate/add-spanish-basic-html ``` -4. تحرير الصفحات والعمل على التعليمات البرمجية في محرر النص المفضل لديك. +4. Edit pages and work on code in your favorite text editor. -5. بمجرد أن تكون سعيدا بالتغييرات يجب عليك اختياريا تشغيل FreCodeCamp محليا لمعاينة التغييرات. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. تأكد من إصلاح أي أخطاء والتحقق من تنسيق التغييرات الخاصة بك. +6. Make sure you fix any errors and check the formatting of your changes. -7. تحقق من الملفات التي تقوم بتحديثها وتأكيدها: +7. Check and confirm the files you are updating: ```console git status ``` - يجب أن يظهر هذا قائمة من الملفات `غير مهيأة` التي قمت بتعديلها. + This should show a list of `unstaged` files that you have edited. ```console - على الميزة/التوثيق الفرعي - فرعك محدث مع 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - التغييرات غير معدة للالتزام: - (استخدم "git add/rm ... لتحديث ما سيتم الالتزام به) - (استخدم "git Checout -- . " لاستبعاد التغييرات في دليل العمل) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - معدل: المواصلات. (د) - معدلة: docs/README.md - معدلة: docs/how-to-setup-freecodecamp-محليا. (د) - معدلة: docs/howto-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. مرحلة التغييرات والتعهد بما يلي: +8. Stage the changes and make a commit: - في هذه الخطوة، يجب عليك فقط وضع علامة على الملفات التي قمت بتعديلها أو إضافتها بنفسك. يمكنك إجراء إعادة تعيين وحل الملفات التي لم تكن تنوي تغييرها إذا لزم الأمر. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console - git اضف المسار/إلى/my/changed/file.ext + git add path/to/my/changed/file.ext ``` - أو يمكنك إضافة جميع ملفات `غير مهيأة` إلى منطقة التجهيز: + Or you can add all the `unstaged` files to the staging area: ```console - git يضاف + git add . ``` - فقط الملفات التي تم نقلها إلى منطقة التجهيز سيتم إضافتها عندما تقوم بالالتزام. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - الناتج: + Output: ```console - على الميزة/التوثيق الفرعي - فرعك محدث مع 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - التغييرات التي سيتم الالتزام بها: - (استخدم "git reset HEAD ..." لإلغاء المرحلة) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - معدلة: CONTRIBUTING.md - معدل: docs/README.md - معدلة: docs/how-to-setup-freecodecamp-locally.md - معدل: docs/howto-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - الآن، يمكنك إجراء التغييرات الخاصة بك برسالة قصيرة مثل هذا: + Now, you can commit your changes with a short message like so: ```console - git الالتزام -m "إصلاح: رسالة الالتزام القصيرة" + git commit -m "fix: my short commit message" ``` - بعض الأمثلة: + Some examples: ```md - إصلاح: تحديث مقالة دليل جافا - لميزة حلقة - : إضافة مقالة دليل لمهارات ألكسا + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - اختياري: + Optional: - ونحن نوصي بشدة بتوجيه رسالة التزام تقليدية. هذه ممارسة جيدة سوف تراها في بعض مستودعات المصادر المفتوحة الشائعة. كمطور، هذا يشجعك على اتباع الممارسات القياسية. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - وفيما يلي بعض الأمثلة على رسائل الالتزام التقليدية: + Some examples of conventional commit messages are: ```md - إصلاح: تحديث مقالة دليل HTML - إصلاح: تحديث نسخة البرامج النصية لبناء خاصية Tra/5/Add.CI - : إضافة مقالة لتحميل JavaScript - docs: تحديث المبادئ التوجيهية المساهمة + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - حافظ على هذه الأحرف القصيرة، لا أكثر من 50 حرفاً. يمكنك دائماً إضافة معلومات إضافية في وصف رسالة الالتزام. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - هذا لا يستغرق أي وقت إضافي من رسالة غير تقليدية مثل 'تحديث الملف' أو 'إضافة index.md' + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - يمكنك معرفة المزيد حول لماذا يجب عليك استخدام الإلتزامات التقليدية [هنا](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. إذا أدركت أنك بحاجة إلى تعديل ملف أو تحديث رسالة الالتزام بعد التعهد يمكنك القيام بذلك بعد تعديل الملفات مع: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - git ملتزمة--تعديل + git commit --amend ``` - سيؤدي هذا إلى فتح محرر نص افتراضي مثل `nano` أو `vi` حيث يمكنك تعديل عنوان رسالة الالتزام وإضافة/تحرير الوصف. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. بعد ذلك، يمكنك دفع التغييرات الخاصة بك إلى الشوك: +10. Next, you can push your changes to your fork: ```console - git دفع الأصل/فرع/اسم هنا + git push origin branch/name-here ``` -## اقتراح طلب سحب (PR) +## Proposing a Pull Request (PR) -بعد إجراء التغييرات الخاصة بك، تحقق هنا من [كيفية فتح طلب السحب](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## مرجع الأوامر السريعة +## Quick commands reference -مرجع سريع للأوامر التي ستحتاج إليها عند العمل محلياً. +A quick reference to the commands that you will need when working locally. -| أمر | الوصف | -| ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `npm ci` | تثبيت / إعادة تثبيت جميع التبعيات و التمهيدات، مختلف الخدمات. | -| `npm تشغيل البذور` | يقوم بتحليل جميع ملفات الـ markdown التحدي وإدراجها في MongoDB. | -| `npm قيد التطوير` | يبدأ تشغيل خادم API و تطبيقات العميل الخاص بـ FreCodeCamp | -| `npm اختبار` | تشغيل جميع اختبارات JS في النظام، بما في ذلك اختبارات العملاء والخادم والخط الخطي والتحديات. | -| `npm قم بتشغيل الاختبار:client` | تشغيل مجموعة اختبار العميل. | -| `npm تشغيل الاختبار:منهج دراسي` | تشغيل مجموعة اختبار المناهج الدراسية. | -| `npm قم بتشغيل الاختبار:منهج --block='HTML الأساسي و HTML5'` | اختبر كتلة محددة. | -| `npm قم بتشغيل الاختبار:منهج --superblock='responve-web-design'` | اختبر بلوك سوبر بلوك محدد. | -| `npm تشغيل اختبار المنهج الدراسي الكامل` | تشغيل مجموعة اختبار المنهج، دون الإنقاذ بعد الخطأ الأول | -| `npm قم بتشغيل الاختبار:server` | تشغيل جناح اختبار الخادم. | -| `npm تشغيل e2e` | تشغيل نهاية Cypress إلى اختبارات النهاية. | -| `npm تشغيل التنظيف` | إلغاء تثبيت جميع التبعيات وتنظيف المخبآت. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## استكشاف الأخطاء +## Troubleshooting -### مشاكل في تثبيت الشروط المسبقة الموصى بها +### Issues with installing the recommended prerequisites -نقوم بانتظام بتطوير أحدث نظم التشغيل أو أكثرها شعبية مثل MacOS 10.15 أو أكثر، أو Ubuntu 18.04 أو بعدها و Windows 10 (مع WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -من المستحسن البحث في مشكلتك المحددة حول الموارد مثل جوجل، ستراك أفلاك، بورصة البورصة. هناك فرصة جيدة لأن يواجه شخص ما نفس المشكلة وهناك بالفعل إجابة على استفسارك المحدد. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -إذا كنت على نظام تشغيل مختلف و/أو لا تزال تواجه مشكلات، راجع [الحصول على المساعدة](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [تحذير] +> [!WARNING] > -> الرجاء تجنب إنشاء مشاكل GitHub للمشكلات الأساسية. وهي خارج نطاق هذا المشروع. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### مشكلات مع واجهة المستخدم، الخطوط، أخطاء البناء إلخ. +### Issues with the UI, Fonts, build errors etc. -إذا واجهت مشاكل مع واجهة المستخدم، خطوط أو شاهد أخطاء في الإنشاءات، يمكن أن يكون التنظيف مفيداً: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console -npm تشغيل نظيف +npm run clean npm ci -npm تشغيل بذرة -npm قيد التطوير +npm run seed +npm run develop ``` -أو +OR -استخدام الاختصار +Use the shortcut ``` -npm تشغيل نظيف وتطوير +npm run clean-and-develop ``` -إذا استمرت في مواجهة المشكلات مع البناء، فينصح بتنظيف مساحة العمل. +If you continue to face issues with the build, cleaning up the workspace is recommend. -استخدم `git Cle` في الوضع التداخلي: +Use `git clean` in interative mode: ``` -git Cle-ifdX +git clean -ifdX ```
- كيفية تنظيف الملفات الغير متعقبة (لقطة شاشة) + How to clean git untracked files (screenshot)
- كيفية تنظيف الملفات git الغير متعقبة + How to clean git untracked files
-### مشكلات مع API، تسجيل الدخول، عروض التحدي، إلخ. +### Issues with API, Login, Challenge Submissions, etc. -إذا لم تتمكن من تسجيل الدخول، وبدلا من ذلك سترى لافتة تحمل رسالة خطأ بأنه سيتم الإبلاغ عنها في معسكر FreCode، الرجاء التحقق مرتين من أن المنفذ المحلي الخاص بك `3000` غير مستخدم من قبل برنامج مختلف. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**على Linux / macOS / WSL على Windows - من المحطة الطرفية:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console -netstat -ab grep "3000" +netstat -ab | grep "3000" -tcp4 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**على Windows - من قوة عالية :** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab Select-String "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0:3000 DESKTOP LSTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### مشكلات تثبيت الإعتمادات +### Issues installing dependencies -إذا حصلت على أخطاء أثناء تثبيت التبعيات، الرجاء التأكد من أنك لست في شبكة مقيدة أو أن إعدادات جدار الحماية الخاص بك لا تمنعك من الوصول إلى الموارد. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -أول مرة يمكن أن يستغرق فيها الإعداد بعض الوقت اعتماداً على عرض النطاق الترددي لشبكتك. كن صبورا، وإذا كنت مازلت عالقة قمنا بإستخدام GitPod بدلاً من إعداد غير متصل. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## الحصول على المساعدة +## Getting Help -إذا كنت عالقا وتحتاج إلى مساعدة، دعنا نعرف عن طريق السؤال في فئة ['المساهمين' في المنتدى](https://forum.freecodecamp.org/c/contributors) أو [غرفة الدردشة المساهمين](https://gitter.im/FreeCodeCamp/Contributors) على Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -قد يكون هناك خطأ في وحدة التحكم في المتصفح الخاص بك أو في Bash / المحطة الطرفية / سطر الأوامر الذي سيساعد على تحديد المشكلة. قم بتوفير رسالة الخطأ هذه في وصف المشكلة الخاص بك حتى يتمكن الآخرون من تحديد المشكلة بسهولة أكبر ومساعدتك في العثور على حل. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Arabic/how-to-setup-wsl.md b/docs/i18n/Arabic/how-to-setup-wsl.md index b27d75b526..68bce6dde6 100644 --- a/docs/i18n/Arabic/how-to-setup-wsl.md +++ b/docs/i18n/Arabic/how-to-setup-wsl.md @@ -1,100 +1,100 @@ -# إنشاء FreCodeCamp على نظام ويندوز الفرعي للينوكس (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!ملاحظة] قبل أن تتبع هذه التعليمات تأكد من أن النظام الخاص بك يفي بالمتطلبات +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (الإصدار 2004، البناء 19041 أو أعلى) - متاح لجميع التوزيعات بما في ذلك Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker سطح المكتب للويندوز**: انظر المتطلبات ذات الصلة لـ [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) و [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -ويغطي هذا الدليل بعض الخطوات الشائعة مع إعداد WSL2. حالما تعالج بعض القضايا المشتركة مع مؤتمر القمة العالمي الثاني المعني بمجتمع المعلومات، يجب أن تكون قادراً على متابعة دليل الإعداد المحلي الخاص بنا للعمل مع FreCodeCamp على ويندوز الذي يقوم بتشغيل شريط WSL مثل Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## تمكين WSL +## Enable WSL -اتبع الإرشادات في [الوثائق الرسمية](https://docs.microsoft.com/en-us/windows/wsl/install-win10) لتثبيت WSL1 ثم الترقية إلى WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. لقد أوصينا باستخدام Ubuntu-18.04 أو أكثر مع WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!ملاحظة] + > [!NOTE] > - > بينما يمكنك استخدام الأقراص الأخرى غير الديدية، كلها تأتي مع الغوغتشات الخاصة بها وهي خارج نطاق هذا الدليل. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. تحديث الإعتمادات لنظام التشغيل +2. Update the dependencies for the OS ```console - قم بتحديث sudo apt - sudo apt upd-y + sudo apt update + sudo apt upgrade -y - # تنظيف + # cleanup sudo apt autoremove -y ``` -## إعداد Git +## Set up Git -يأتي Git مثبتًا مسبقًا مع Ubuntu 18.04، تحقق من أن إصدار Git الخاص بك مع `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ - git --version -git الإصدار 2.25.1 +❯ git --version +git version 2.25.1 ``` -(اختياري ولكن مستحسن) يمكنك الآن المضي قدما [في إعداد مفاتيح ssh](https://help.github.com/articles/generating-an-ssh-key) مع GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## تثبيت محرر التعليمات البرمجية +## Installing a Code Editor -نوصي بشدة بتثبيت [Visual Studio Code](https://code.visualstudio.com) على Windows 10. لديها دعم كبير لـ WSL وتثبيت تلقائياً جميع الإضافات الضرورية على ذاكرة WSL الخاص بك. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -بشكل أساسي، سوف تقوم بتعديل وتخزين التعليمات البرمجية الخاصة بك على Ubuntu-18.04 مع تثبيت رمز VS على Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## تثبيت دوكر سطح المكتب +## Installing Docker Desktop -**سطح المكتب الخاص بـ Docker Windows** يسمح لك بتثبيت وتشغيل قاعدة البيانات والخدمات مثل MongoDB, NGINX, الخ. وهذا مفيد لتجنب المآزق المشتركة مع تثبيت MongoDB أو خدمات أخرى مباشرة على Windows أو WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -اتبع دورة التعليمات على [الوثائق الرسمية](https://docs.docker.com/docker-for-windows/install) وقم بتثبيت دوكر سطح المكتب لتوزيع ويندوز الخاص بك. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -هناك بعض المتطلبات الدنيا من المعدات لأفضل التجربة. +There are some minimum hardware requirements for the best experience. -## تكوين سطح المكتب الخاص بـ Docker لـ WSL +## Configure Docker Desktop for WSL -بمجرد تثبيت سطح المكتب Docker ، [اتبع هذه التعليمات](https://docs.docker.com/docker-for-windows/wsl) وتهيئته لاستخدام تثبيت Ubuntu-18.04 كخلفية للنظام. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -وهذا يجعل من الممكن تشغيل الحاويات على جانب WSL بدلا من تشغيلها على Windows. ستتمكن من الوصول إلى الخدمات عبر `http://localhost` على كل من Windows و Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## تثبيت MongoDB من Docker Hub +## Install MongoDB from Docker Hub -بمجرد تكوين سطح المكتب الخاص بـ Docker للعمل مع WSL2، اتبع هذه الخطوات لبدء خدمة MongoDB: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. تشغيل محطة Ubuntu-18.04 جديدة +1. Launch a new Ubuntu-18.04 terminal -2. سحب `MongoDB 3.6` من Dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. بدء خدمة MongoDB في المنفذ `27017`، وتهيئتها لتشغيلها تلقائيا عند إعادة تشغيل النظام +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console - docker تشغيل -it \ + docker run -it \ -v mongodata:/data/db \ -p 27017:27017 \ --name mongodb \ - --إعادة تشغيل بدون توقف \ - -d Mongo:3 + --restart unless-stopped \ + -d mongo:3 ``` -4. يمكنك الآن الوصول إلى الخدمة من Windows أو Ubuntu على `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## تثبيت Node.js و npm +## Installing Node.js and npm -ننصحك بتثبيت إصدار LTS لـ Node.js مع مدير إصدار العقدة - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -بمجرد تثبيت هذه الأوامر لتثبيت واستخدام إصدار Node.js حسب الحاجة +Once installed use these commands to install and use the Node.js version as needed ```console -تثبيت nvm --lts +nvm install --lts # OR # nvm install @@ -104,26 +104,26 @@ nvm install 14 # Usage # nvm use -nvm يستخدم 12 +nvm use 12 ``` -Node.js تأتي مجمعة مع `npm`، يمكنك التحديث إلى أحدث إصدارات `npm` مع: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console -npm تثبيت -g npm@latest +npm install -g npm@latest ``` -## إعداد FreCodeCamp محليا +## Set up freeCodeCamp locally -الآن بعد أن قمت بتثبيت المتطلبات المسبقة، اتبع [دليل الإعداد المحلي الخاص بنا](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) لاستنساخ وتثبيت وإعداد FreCodeCamp محليا على جهازك. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [تحذير] +> [!WARNING] > -> يرجى ملاحظة أن الإعداد لاختبارات Cypress (وما يتصل بها من احتياجات واجهة المستخدمين) هو عمل جاري. يجب أن تكون قادراً على العمل في معظم الكود البرمجي. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## روابط مفيدة +## Useful Links -- [إعداد WSL2 Dev مع Ubuntu 20.04, Node.js, MongoDB, VS Code و Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - مقال من Mrugesh Mohapatra (مطور تاف على freeCodeCamp.org) -- الأسئلة المتكررة عن: - - [نظام Windows الفرعي لـ Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [دوكر سطح المكتب للويندوز](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Arabic/how-to-use-docker-on-windows-home.md b/docs/i18n/Arabic/how-to-use-docker-on-windows-home.md index 44adc6b95f..85ac65a3e3 100644 --- a/docs/i18n/Arabic/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Arabic/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# كيفية استخدام Docker على Windows Home +# How to use Docker on Windows Home -هناك بعض الخلل التي يجب تجنبها عند إعداد جهاز الإرسال على Windows Home. أولاً يجب عليك استخدام [صندوق أدوات Docker](https://docs.docker.com/toolbox/toolbox_install_windows/) كمدير. لسوء الحظ لا يدعم Windows Home Docker لنظام Windows Desktop، لذا يجب استخدام علبة الأدوات بدلاً من ذلك. ويجب تشغيله كمدير لأن التركيب يستخدم روابط رمزية، لا يمكن إنشاؤها بخلاف ذلك. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -بمجرد تثبيت صندوق الأدوات، قم بتشغيل Docker Quickstart Terminal كمسؤول. سيؤدي هذا إلى إنشاء `آلة افتراضية` إذا لم تكن موجودة بالفعل. وبمجرد حدوث ذلك، أغلق المحطة الطرفية وفتح علبة الافتراضي (مرة أخرى كمدير). يجب أن تكون قادراً على رؤية جهاز `الافتراضي`. الموقع كثيف الموارد، لذلك أوقف الجهاز الافتراضي وارفع من الإعدادات قدر استطاعتك - الذاكرة على وجه الخصوص. وقد تأكد أنه يعمل مع 4 جيغابايت من الرام. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -بمجرد أن تكون سعيدا لأن Docker يعمل، استنسخ مستودع FreCodeCamp إلى دليل داخل `C:\Users`. يتم مشاركة هذه الدلائل لمنح دوكر الوصول إلى الدلائل المحلية، والتي تحتاج إليها أثناء التثبيت. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -إذا رأيت رسائل مثل +If you see messages like ```shell -باش: change_volumes_owner.sh: لا يوجد مثل هذا الملف أو الدليل +bash: change_volumes_owner.sh: No such file or directory ``` -عندما تقوم بتشغيل docker:init `npm` فمن المرجح أن يكون هذا هو المذنب. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Arabic/how-to-work-on-coding-challenges.md b/docs/i18n/Arabic/how-to-work-on-coding-challenges.md index c4ac76869e..2b95545e91 100644 --- a/docs/i18n/Arabic/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Arabic/how-to-work-on-coding-challenges.md @@ -1,108 +1,112 @@ -# كيفية العمل على تحديات البرمجة +# 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. -ويتطلب خلق هذه التحديات إبداعا هائلا واهتماما بالتفاصيل. هناك الكثير من المساعدة المتاحة. ستحصل على دعم من فريق كامل من المساهمين الذين يمكنك أن ترتدي أفكارك وتجريب تحدياتك. ابقى نشطا في [غرفة المساهمين](https://gitter.im/freecodecamp/contributors) واطرح الكثير من الأسئلة. +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/). -بمساعدتك يمكننا تصميم منهج تعليمي تفاعلي سوف يساعد ملايين الناس على تعلم البرمجة لسنوات قادمة. +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. -يتم تخزين محتوى كل تحدي في ملف markdown الخاص به. يتم تحويل هذا الملف في وقت لاحق إلى HTML باستخدام أدواتنا لإنشاء صفحات ويب تفاعلية. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -يمكنك العثور على كل محتوى المنهج الدراسي لـ freeCodeCamp.org's في دليل [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges). +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 own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -قبل أن تعمل على المناهج الدراسية، ستحتاج إلى إعداد بعض الأدوات لمساعدتك على اختبار التغييرات الخاصة بك. يمكنك استخدام أي خيار من الأسفل: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- يمكنك [إعداد FreCodeCamp محليا](how-to-setup-freecodecamp-locally.md). هذه **موصى بها بشدة** للمساهمات العادية/المتكررة. هذا الإعداد يسمح لك بالعمل واختبار التغييرات الخاصة بك. -- استخدام Gitpod، بيئة ديف مجانية على الإنترنت. النقر على الزر أدناه سيبدأ بيئة dev جاهزة للبرمجة الحرة في المتصفح الخاص بك. ويستغرق الأمر بضع دقائق فقط. +## Set up the tooling for the curriculum - [![فتح في Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- تعديل الملفات على واجهة GitHub، بالنقر على أيقونة قلم الرصاص للملف المقابل. في حين أن هذا هو أسرع طريقة، فإنه **غير مستحسن**، لأنك غير قادر على اختبار التغييرات الخاصة بك على GitHub. إذا خلص المشرفون لدينا إلى أن التغييرات التي أجريتها تحتاج إلى أن تختبر محلياً، سوف تحتاج إلى اتباع الأساليب أعلاه بدلاً من ذلك مرة أخرى. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## قالب التحدي + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -فيما يلي قالب لماهية التحديات التي تبدو عليها ملفات الدرجات السفلى حاليا. لمشاهدة القالب المبسط سنعتمد [أنظر أدناه](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -المعرف: معرف فريد (أبجدي رقمي, MongoDB_id) -العنوان: عنوان التحدي -تحدي: 0 -فيديوورل: 'رابط تفسير الفيديو' +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 0 +videoUrl: 'url of video explanation' --- -## وصف +## Description
-وصف للتحدي وما هو مطلوب لتمرير +A Description of the challenge and what is required to pass
-## تعليمات +## Instructions
-تعليمات حول ما يجب القيام به بالضبط. +Instructions about what exactly needs to be done.
-## اختبارات +## Tests
-```ml -اختبار: - - نص: يجب أن يعيد "foo' - اختبار String: 'دالة سلسلة ربما باستخدام تأكيد تشاي' +```yml +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
-## بذرة التحدي +## Challenge Seed
```{ext} -الكود المعروض في المحرر بشكل افتراضي. +Code displayed in the editor by default. -وهذا جزء مطلوب لهذا التحدي. +This is a required section for the challenge. ```
-### قبل الاختبار +### Before Test
```{ext} -رمز اختبار اختياري. +Optional Test setup code. ```
-### بعد الاختبار +### After Test
```{ext} -اختبار اختياري لتمزيق التعليمات البرمجية. +Optional Test tear down code. ```
-## حل +## Solution
```{ext} -// الحل مطلوب +// solution required ```
@@ -111,114 +115,117 @@ > [!NOTE] > -> 1. في الفروع الواردة أعلاه، أمثلة على `{ext}` هي: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. بالنسبة لقسم `الاختبارات` أعلاه، ينبغي أن تكون `text` و`testString` سلاسل YAML صالحة. 'testString' يمكن أن تكون دالة أو تعبير متسلسل يمكن أن تستخدم مزاعم تشاي. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## تحديات الترقيم +## Numbering Challenges -كل تحد يحتاج إلى `معرف`. إذا لم تحدد واحداً، سيقوم MongoDB بإنشاء واحد عشوائي جديد عندما يحفظ البيانات؛ ومع ذلك، نحن لا نريد أن نفعل ذلك، لأننا نريد أن تكون معارف التحدي متسقة عبر بيئات مختلفة (الإنتخابات التدريجية)، الإنتاج والكثير من المطورين المختلفين، إلخ.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -لإنشاء واحدة جديدة في قذيفة (بافتراض أن MongoDB يعمل بشكل منفصل): +To generate a new one in a shell (assuming MongoDB is running separately): -1. تشغيل الأمر `mongo'. -2. تشغيل الأمر `objectId()'. +1. Run `mongo` command. +2. Run `ObjectId()` command. -على سبيل المثال: +For example: ```bash $ mongo -MongoDB Shell version v3.6.1 -يتصل بـ: mongodb://127.0.0.1:27017 -MongoDB Sersion: 3.4.10 +MongoDB shell version v3.6.1 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -النتيجة هي معد جديد، على سبيل المثال `5a474d78df58bafeb3535d34` أعلاه. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -بمجرد أن يكون لديك بريدك، وضعه في ملف markdown كحقل `معرف` في الأعلى، على سبيل المثال. +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- -المعرف: 5a474d78df58bafeb3535d34 -عنوان: عنوان التحدي +id: 5a474d78df58bafeb3535d34 +title: Challenge Title ``` -## تحديات التسمية +## Naming challenges -تسمية الأشياء أمر صعب. لقد جعلنا الأمر أسهل من خلال فرض بعض القيود. +Naming things is hard. We've made it easier by imposing some constraints. -يجب أن تكون جميع عناوين التحدي صريحة ويجب أن تتبع هذا النمط: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[شرط الكائن\] +\[verb\]\[object clause\] -فيما يلي بعض أسماء التحديات : +Here are some example challenge names: -- استخدام التدوين على مدار الساعة لتحديد تعبئة العنصر -- مصفوفات مكثفة مع .خفض -- استخدم رمز مجموعة للعثور على الشخصية الأولى في سلسلة +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## أوصاف/تعليمات التحدي +## Challenge descriptions/instructions -يجب أن تكون العقوبات واضحة وموجزة مع الحد الأدنى من الجرذون. وفي حالة استخدامها، ينبغي تعريف الجارجون فوراً باللغة الإنكليزية الواضحة. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -إبقاء الفقرات قصيرة (نحو 1-4 جملة). ومن المرجح أن يقرأ الناس عدة فقرات قصيرة أكثر مما يقرأ جدارا للنص. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -نص التحدي يجب أن يستخدم الشخص الثاني ("أنت") للمساعدة في إعطائه صوت محادثة. وبهذه الطريقة يبدو أن النص والتعليمات تتحدث مباشرة إلى كاميرا تعمل من خلال التحدي. حاول تجنب استخدام الشخص الأول ("I", "we", "let's", and "us"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -لا تستخدم الروابط الصادرة. وهي تعرقل التدفق. وينبغي ألا يضطر كاميرون أبداً إلى إخفاء أي شيء خلال هذه التحديات. إذا كانت هناك موارد تعتقد أن كاميرات ستستفيد منها، فتضيفها إلى المقالة المتعلقة بالدليل الخاص بالطعن. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -يمكنك إضافة رسوم بيانية إذا كان ذلك ضرورياً. +You can add diagrams if absolutely necessary. -لا تستخدم الرموز التعبيرية أو الرموز التعبيرية في التحديات. FreCodeCamp لديه مجتمع عالمي، والمعنى الثقافي للرموز التعبيرية أو الانفعالية قد يكون مختلفا حول العالم. أيضًا، الرموز التعبيرية يمكن أن تكون مختلفة في أنظمة مختلفة. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -الأسماء المناسبة يجب أن تستخدم الرسملة الصحيحة عندما يكون ذلك ممكنا. وترد أدناه قائمة بالكلمات التي ينبغي أن تظهر في التحديات. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (الأحرف الكبيرة في "J" و "S" و لا اختصار) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- تطوير الطرف الأمامي (شكل الصفة مع الشرطة) عندما تعمل على الطرف الأمامي (شكل اسم بدون شرطة). وينطبق نفس الشيء على "الطرف الخلفي" و"المكدس الكامل" والعديد من المصطلحات المركبة الأخرى. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### قاعدة دقيقتين +### The 2-minute rule -وينبغي أن يكون كل تحد قابلا للحل في غضون 120 ثانية بواسطة متحدث إنكليزي أصلي أكمل التحديات التي أدت إليه. هذا يشمل الوقت الذي يستغرقه قراءة الاتجاهات/التعليمات التي تفهم رمز البذر، اكتب التعليمات البرمجية الخاصة بهم واحصل على جميع الاختبارات لتمريرها. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -إذا استغرق إكمال التحدي أكثر من دقيقتين، فلديك خياران: +If it takes longer than two minutes to complete the challenge, you have two options: -- تبسيط التحدي، أو -- تقسيم التحدي إلى تحديين. +- Simplify the challenge, or +- Split the challenge into two challenges. -قاعدة دقيقتين تجبرك ، مصمم التحدي ، على جعل توجيهاتك موجزة، رمز البذور الخاص بك واضحة، واختبارك واضح. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -نحن نتعقب الوقت الذي تستغرقه الكاميرات لحل التغييرات واستخدام هذه المعلومات لتحديد التحديات التي تحتاج إلى التبسيط أو التقسيم. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### الوحدة +### Modularity -وينبغي لكل تحد أن يدرس مفهوما واحدا بالضبط، وينبغي أن يكون هذا المفهوم واضحا من اسم التحدي. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -يمكننا تعزيز المفاهيم التي سبق تغطيتها من خلال التكرار والتغييرات - على سبيل المثال، • إدخال عناصر h1 في تحد واحد، ثم عناصر h3 في وقت لاحق. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -وهدفنا هو أن نواجه الآلاف من التحديات لمدة دقيقتين. ويمكن أن تتدفق هذه المفاهيم معا وتكرر تأكيد المفاهيم التي كانت مشمولة سابقا. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### تنسيق نص التحدي +### Formatting challenge text -وفيما يلي مبادئ توجيهية محددة بشأن التنسيق للنص الخاص بالتحدي والأمثلة: +Here are specific formatting guidelines for challenge text and examples: -- كلمات اللغة الرئيسية تدخل في `` العلامات. على سبيل المثال، أسماء علامات HTML أو أسماء خصائص CSS -- المثيل الأول لكلمة مفتاحية عند تعريفها، أو الكلمات المفتاحية العامة (أي "الكائن" أو "الثابت") تذهب إلى `` العلامات -- الإشارات إلى أجزاء التعليمات البرمجية (أي الدالة أو الطريقة أو أسماء المتغير) ينبغي تغليفها في `` العلامات. انظر المثال أدناه: -- استخدم parseInt لتحويل المتغير الواقع رقم إلى عدد صحيح. -- يجب أن يسبق كتل التعليمات البرمجية متعددة الأسطر **سطر فارغ**. يجب أن يبدأ السطر التالي بثلاث خلفيات يعقبها مباشرة واحدة من [اللغات المدعومة](https://prismjs.com/#supported-languages). لإكمال كتلة التعليمات البرمجية، يجب عليك بدء سطر جديد يحتوي فقط على ثلاث خلفيات و **سطر فارغ آخر**. **ملاحظة:** إذا كنت ستستخدم رمز مثال في YAML ، استخدم `yaml` بدلاً من `yml` للغة إلى يمين الخلف. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -انظر المثال أدناه: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -فيما يلي مثال على التعليمة البرمجية: +The following is an example of code: ```{language} @@ -227,214 +234,286 @@ ObjectId("5a474d78df58bafeb3535d34") ```` ```` -- ينبغي تنسيق معلومات إضافية في شكل ملاحظة `ملاحظة: استعرض نص الملاحظة... -- إذا كانت هناك حاجة إلى ملاحظات متعددة، ثم قم بقائمة جميع الملاحظات في جمل منفصلة باستخدام تنسيق `الملاحظات: نص الملاحظة الأولى. الحاشية الثانية نص.`. -- استخدام عبارات اقتباس مزدوجة حيث ينطبق +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## اختبار الكتابة +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -يجب أن تحتوي التحديات على الحد الأدنى من الاختبارات اللازمة للتحقق من أن الكاميرا يفهم مفهوما. +## Writing tests -وهدفنا هو الإبلاغ عن النقطة الوحيدة التي يحاول التحدي تعليمها، واختبار أنهم فهموا تلك النقطة. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -يمكن أن تستخدم اختبارات التحدي مكتبات تأكيد Node.js و Chai.js. أيضًا، إذا لزم الأمر، يمكن الوصول إلى التعليمات البرمجية التي ينشئها المستخدم في متغير "الكود". +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## تنسيق رمز البذور +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -إليك مبادئ توجيهية محددة لتنسيق رمز البذور التحدي: +## Formatting seed code -- استخدم مسافتين لدخول -- بيانات جافا سكريبت تنتهي بفاصلة منها -- استخدم اقتباسات مزدوجة حيثما ينطبق -- التعليقات التي تم الإدلاء بها يجب أن يكون لها مساحة بين أحرف التعليق والتعليق نفسه +Here are specific formatting guidelines for the challenge seed code: - `// اصلاح هذا السطر` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## تلميحات وحلول +### Seed code comments -لكل تحد زر 'احصل على تلميح`، حتى يتمكن المستخدم من الوصول إلى أي تلميحات/حلول تم إنشاؤها للتحدي. توجد مواضيع تلميح/حلول المناهج الدراسية في [منتدانا] (https://forum.freecodecamp.org/c/guide) تحت فئة `الدليل'. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -إذا وجدت مشكلة مع موضوع تلميح/حلول التحدي القائم، يمكنك تقديم اقتراحات في [فئة المساهمين] (https://forum.freecodecamp.org/c/contributors) في المنتدى. وسيقوم المشرفون والمستعملون ذوو المستوى 3 باستعراض التعليقات ويقررون ما إذا كانوا سيدرجون التغييرات في موضوع التلميح/الحلول المقابل. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### إضافة تلميحات/مواضيع جديدة للتحدي +Example of valid single line JavaScript comment: -اتخاذ الخطوات التالية عند إضافة تلميحات/حلول جديدة للتحدي. +```js +// Only change code below this line +```` -1. ابدأ باتباع نفس الخطوات لإنشاء موضوع جديد ولكن راجع التالي لإنشاء العنوان. -2. ينبغي أن يبدأ عنوان الموضوع بـ 'دليل تحدي FreCodeCamp Challenge: ' متوافق مع العنوان الفعلي لتحدي المنهج الدراسي. فعلى سبيل المثال، إذا كان التحدي يسمى "`قرود شونكي`"، فإن عنوان الموضوع سيكون "`دليل تحدي freeCodeCamp Guide: Chunky Monkey`". -3. يجب أن يكون "الكامبربوت" مالك هذه المواضيع/المشاركات، لذا ستحتاج إلى طلب مشرف لتغيير ملكية الوظيفة الرئيسية إلى 'الكاميربوت`. -4. بمجرد إنشاء الموضوع الجديد، يتم إنشاء معرف موضوع المنتدى. يقع في نهاية عنوان URL لموضوع المنتدى. يجب إضافة هذا المعرف إلى الموضوع الأمامي لملف تحدي المنهج الدراسي من خلال عملية طلب السحب العادية لزر "الحصول على تلميح" لربط الموضوع. +Example of a valid CSS comment: -### مبادئ توجيهية لمحتوى التلميحات ومواضيع الحلول +```js +/* Only change code above this line */ +``` -عند اقتراح حل لموضوع الدليل المتصل بتحدي المنهج، يجب إضافة الرمز الكامل. وهذا يشمل جميع شفرة البذور الأصلية بالإضافة إلى أي تغييرات لازمة لتجاوز جميع اختبارات التحدي. يجب استخدام القالب التالي عند إنشاء تلميحات/مواضيع حلول: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. -``md -# اسم التحدي هنا +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
+ { /* Change code below this line */ } + + { /* Change code above this line */ } +

{this.state.text}

+
+ ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md +# Challenge Name Goes Here --- -## شرح المشكلة +## Problem Explanation -يلخص ما يجب القيام به دون مجرد تكرار وصف التحدي و/أو التعليمات. هذا قسم اختياري +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section -#### الروابط ذات الصلة +#### Relevant Links - [Link Text](link_url_goes_here) - [Link Text](link_url_goes_here) --- -## # # Hints +## Hints -#### Hint 1 +### Hint 1 -Hint هنا +Hint goes here -#### 2 +### Hint 2 -تلميح هنا +Hint goes here --- -## # الحلول +## Solutions -
الحل 1 (اضغط على عرض/Hide) +
Solution 1 (Click to Show/Hide) ```js function myFunc() { - console. og('مرحبا بالعالم!'); + console.log('Hello World!'); } ```` -#### شرح التعليمات البرمجية +#### Code Explanation -- تفسير الرمز يذهب هنا -- تفسير الرمز يذهب هنا +- Code explanation goes here +- Code explanation goes here -#### الروابط ذات الصلة +#### Relevant Links -- [نص الرابط](link_url_goes_here) -- [نص الرابط](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
```` -## اختبار التحديات +## Testing Challenges -أمامك [إنشاء طلب سحب] (كيف يمكن فتح - سحب الطلب). (د) بالنسبة للتغييرات الخاصة بك، تحتاج إلى التحقق من أن التغييرات التي قمت بها لا تسبب مشاكل مع التحدي عن غير قصد. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. لاختبار جميع التحديات تشغيل الأمر أدناه من الدليل الجذر +1. To test all challenges run the below command from the root directory ```` -npm تشغيل الاختبار:منهج دراسي +npm run test:curriculum ``` -2. يمكنك أيضا اختبار كتلة أو كتلة خارقة من التحديات باستخدام هذه الأوامر +2. You can also test a block or a superblock of challenges with these commands ``` -npm قم بتشغيل الاختبار:منهج --block='HTML الأساسي و HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` -npm قم بتشغيل الاختبار:curriculum --superblock=responve-web-design +npm run test:curriculum --superblock=responsive-web-design ``` -يمكنك أيضًا اختبار تحدي واحد فردًا من خلال تنفيذ الخطوات التالية: +You are also able to test one challenge individually by performing the following steps: -1. التبديل إلى دليل 'المنهاج الدراسي`: +1. Switch to the `curriculum` directory: ``` - منهج cd + cd curriculum ``` -2. قم بتشغيل ما يلي لكل ملف من ملفات التحدي التي قمت بتغيير ما يلي: +2. Run the following for each challenge file for which you have changed: ``` - npm اختبار -- -g 'العنوان الإنجليزي الكامل للتحدي' + npm run test -- -g 'the full English title of the challenge' ``` -بمجرد التحقق من أن كل تحدي كنت قد عملت على اجتياز الاختبارات، [يرجى إنشاء طلب سحب] (https://github.com/freeCodeCamp/freeCodeCamp/blob/Master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> يمكنك تعيين متغير البيئة `LOCALE` في `.env` إلى لغة التحدي (التحديات) التي تحتاج إلى اختبار. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> القيم المقبولة حاليا هي "الإنكليزية" و "chinese"، مع تعيين "english" بشكل افتراضي. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## قالب التحدي القادم +## Upcoming Challenge Template -قالب التحدي في عملية التحديث إلى بنية أنظف وأقل تداخلا. لم يتم الانتهاء من ذلك تماما، ولكن ينبغي أن يكون ما يلي قريبا من الهيكل النهائي: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: -``mdx +````mdx --- -id: المعرف الفريد (أبجدي رقمي، MongoDB_id) -عنوان: 'عنوان التحدي' -نوع التحدي: عدد صحيح، معرف في 'العميل/Us/ChallengeTypes. s` -فيديوورل: 'عنوان URL لشرح الفيديو' +--- +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` +videoUrl: 'url of video explanation' forumTopicId: 12345 --- -استيراد سكريبت من './script. dx'; +import Script from './script.mdx'; ## --step-description-- -نص الوصف، في markdown - -``html - +Description text, in markdown +```html
- مثال رمز + example code
``` -## --تلميحات الخطوات-- +## --step-hints-- ![test-id-1] -سيكون هناك عدد اعتباطي من ثلاث مرات للمعرفات والتعليمات (في markdown) والكتل البرمجية. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -كود الاختبار الأول +Code for test one ``` ![test-id-2] -المزيد من الإرشادات في بناء الجملة markdown +More instructions in markdown syntax ```js -المزيد من التعليمات البرمجية +More code ``` -## --بذرة خطوة-- +## --step-seed-- -### --رمز المستخدم مسبقاً-- +### --before-user-code-- ```lang -تم تقييم الرمز قبل المستخدم +Code evaluated before the user’s ``` -### --رمز المستخدم -- +### --after-user-code-- ```lang -تم تقييم الرمز بعد المستخدم، وقبل الاختبارات مباشرة +Code evaluated after the user’s, and just before the tests ``` -### --محتوى البذورة-- +### --seed-content-- ![index-html] ```html -بعض html +Some html ``` ```css -بعض الشارات +Some css ``` ```js -بعض Js +Some js ``` ![index-js] @@ -443,63 +522,63 @@ forumTopicId: 12345

- --علامة الحل-- + --solution-marker--

- نفس الشيء بالضبط مع قسم البذور + Exactly the same as the seeds section

- - علامة الحل التالية + --next-solution-marker

- نفس الشيء مرة أخرى + Same again

- - علامة استفهام + --question-marker--

- - علامة نصية + --text-marker--

- يطرح السؤال هنا (يستخدم فقط لتحديات الفيديو) + The question would go here (only used for video challenges)

- --علامات الإجابة-- + --answers-marker--

- الإجابة 1 + Answer 1


- الإجابة 2 + Answer 2


- الإجابة 2 + More answers

- --علامة الحل-- + --solution-marker--

@@ -515,13 +594,13 @@ forumTopicId: 12345

- روابط مفيدة + Useful Links

- تحديات خلق وتحرير: + Creating and Editing Challenges:

@@ -529,14 +608,14 @@ forumTopicId: 12345
  1. - أنواع التحديات - ما تعنيه قيم نوع التحدي الرقمي (عدد). + Challenge types - what the numeric challenge type values mean (enum).

  2. - المساهمة في FreeCodeCamp - كتابة اختبار التحدي ES6 - فيديو يتبع إيثان آروود لأنه يساهم في النسخة القديمة من المنهج الدراسي. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

  3. diff --git a/docs/i18n/Arabic/how-to-work-on-the-docs-theme.md b/docs/i18n/Arabic/how-to-work-on-the-docs-theme.md index daa05ab57d..bf8bf8f6c9 100644 --- a/docs/i18n/Arabic/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Arabic/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# كيفية العمل في موضوع الوثائق +# How to work on the docs theme -> [!ملاحظة] تذكير سريع بأنك لست بحاجة إلى إعداد أي شيء للعمل على محتوى موقع التوثيق. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> للعمل على المبادئ التوجيهية للمساهمة، يمكنك تعديل أو إضافة ملفات في دليل `docs` [المتاح هنا](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). عند دمج التغييرات الخاصة بك، سيتم إتاحتها تلقائياً في موقع التوثيق. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## هيكل موقع الوثائق على الإنترنت +## Structure of the docs website -تم إنشاء الموقع باستخدام [`docsify`](https://docsify.js.org)، وتم خدمته باستخدام صفحات GitHub . +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -عادة لن تحتاج إلى تغيير أي تكوين أو بناء الموقع محليا. في حالة إهتمامك، إليك كيفية عملها: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- مصدر الصفحة الرئيسية لهذا الموقع متاح في [`docs/index.html`](index.html). -- نحن نخدم هذا الملف كـ SPA باستخدام `docsify` وصفحات GitHub . -- البرنامج النصي `docsify` يولد محتوى `markdown` ملفات في `docs` دليل عند الطلب. -- تم إنشاء الصفحة الرئيسية من [`_coverpage.md`](_coverpage.md). -- التنقل في الشريط الجانبي يتم إنشاؤه من [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## تقديم الخدمات لموقع الوثائق محليا +## Serving the documentation site locally -استنساخ معسكر الترميز الحر: +Clone freeCodeCamp: -```sh -استنساخ git https://github.com/freeCodeCamp/freeCodeCamp.git -docsify يخدم المستندات +```console +git clone https://github.com/freeCodeCamp/freeCodeCamp.git +docsify serve docs ``` -تثبيت `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -وخدمة دليل `/docs` +and serve the `/docs` directory -```sh -docsify يخدم المستندات +```console +docsify serve docs ``` -بدلاً من ذلك، إذا كنت قد قمت بتثبيت freeCodeCamp محلياً (انظر دليل الإعداد المحلي)، نقوم بتجميع CLI مع أدوات التطوير حتى يمكنك تشغيل `npm تشغيل docs:serve` من جذر المستودع. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Arabic/how-to-work-on-the-news-theme.md b/docs/i18n/Arabic/how-to-work-on-the-news-theme.md index 665b22e5f9..51ad62ccf0 100644 --- a/docs/i18n/Arabic/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Arabic/how-to-work-on-the-news-theme.md @@ -1,8 +1,99 @@ - https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md \ No newline at end of file +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). + +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Arabic/index.md b/docs/i18n/Arabic/index.md index 82c971bf2f..1c4add4ab3 100644 --- a/docs/i18n/Arabic/index.md +++ b/docs/i18n/Arabic/index.md @@ -1,45 +1,43 @@ -مجتمع [freeCodeCamp.org](https://freecodecamp.org) ممكن بفضل آلاف المتطوعين الطيبين مثلك. ونحن نرحب بكل الإسهامات المقدمة إلى المجتمع وتحمسون للترحيب بكم على متن سفينة واحدة. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!ملاحظة] قبل المتابعة، يرجى أخذ دقيقتين سريعتين لقراءة [مدونة قواعد السلوك لدينا](https://www.freecodecamp.org/code-of-conduct). ونحن ننفذها بشكل صارم عبر مجتمعنا. نريد أن نسهم في FreCodeCamp.org لتكون تجربة آمنة وشاملة للجميع. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -مساهمة سعيدة. +Happy contributing. -أنتم نرحب بما يلي: +You are welcome to: -- إنشاء وتحديث وإصلاح الأخطاء في [تحديات البرمجة](#coding-challenges) الخاصة بنا. +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). -- _(سيأتي قريبا)_ ساعدنا في ترجمة freeCodeCamp.org إلى اللغات العالمية. +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -لديك أسئلة؟ انتقل إلى [هذه الأسئلة الشائعة](/FAQ.md) حيث نجيب على بعض الاستفسارات الشائعة حول المساهمة. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## تحديات البرمجة +## Curriculum -كل التحديات التي نواجهها في البرمجة يتصدى لها المجتمع، يجلب المعرفة المتخصصة من المتطوعين مثلكم. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -يمكنك المساعدة في توسيعها وجعل صياغتها أفضل. يمكنك أيضًا تحديث قصص المستخدم لشرح المفهوم بشكل أفضل أو إزالة قصص زائدة عن الحاجة وتحسين اختبارات التحدي لجعلها أكثر دقة في اختبار رمز الناس. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**إذا كنت مهتما بتحسين تحديات البرمجة هذه، إليك [كيفية العمل على تحديات البرمجة](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## منصة التعلم +## Learning Platform -منصة التعلم لدينا تعمل على مجموعة جافا سكريبت حديثة. وهي تحتوي على مكونات وأدوات ومكتبات مختلفة، بما في ذلك على سبيل المثال لا الحصر Node.js, MongoDB, LoopBack, OAuth 2.0, React. Gatsby, Webpack, وأكثر من ذلك. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -وعموما، +Broadly, we use -- لدينا خادم API القائم على Node.js. -- مجموعة من تطبيقات العملاء القائمة على التفاعل. -- برنامج نصي نستخدمه لتقييم مشاريعنا الأمامية. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -والإسهام في هذا يتطلب بعض الفهم لواجهات API، وبناء الإيس-6، والكثير من الفضول. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -وبشكل أساسي، نتوقع معرفة أساسية ببعض التكنولوجيات والأدوات والمكتبات المذكورة أعلاه. ومع ذلك، ليس مطلوبا منكم أن تكونوا خبيراً في هذه البلدان ليساهموا فيها. +If you want to help us improve our codebase... -**إذا كنت ترغب في مساعدتنا على تحسين الكود لدينا، يمكنك إما استخدام Gitpod، بيئة ديف مجانية على الإنترنت** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![فتح في Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(يبدأ بيئة dev جاهزة للبرمجة ل freeCodeCamp في المتصفح الخاص بك.) +Or you can... -أو - -**يمكنك [إعداد FreCodeCamp محليا](how-to-setup-freecodecamp-locally.md) على جهازك.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Catalan/flight-manuals/moderator-handbook.md b/docs/i18n/Arabic/moderator-handbook.md similarity index 84% rename from docs/i18n/Catalan/flight-manuals/moderator-handbook.md rename to docs/i18n/Arabic/moderator-handbook.md index 5916fb23de..126794b1a2 100644 --- a/docs/i18n/Catalan/flight-manuals/moderator-handbook.md +++ b/docs/i18n/Arabic/moderator-handbook.md @@ -22,7 +22,7 @@ freeCodeCamp is an inclusive community, and we need to keep it that way. We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). -# Moderating GitHub +## Moderating GitHub Moderators have the ability to close issues and accept or close pull requests. @@ -31,11 +31,11 @@ Moderators have two primary responsibilities regarding GitHub: 1. QA'ing and merging pull requests 2. Evaluating and responding to issues -## Moderating Pull Requests +### Moderating Pull Requests Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. -### Types of Pull Requests +#### Types of Pull Requests 1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: @@ -49,7 +49,7 @@ Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's reposi 3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. -### How to merge or close pull requests +#### How to merge or close pull requests First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. @@ -63,7 +63,7 @@ If the pull request looks ready to merge (and doesn't require approval from @rai You should then comment on the pull request, thanking the contributor in your own personal way. -If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: ![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) @@ -83,11 +83,11 @@ In both of these situations, you should go ahead and close their pull request an If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. -## Moderating GitHub Issues +### Moderating GitHub Issues freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. -### Types of GitHub Issues +#### Types of GitHub Issues 1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. @@ -95,7 +95,7 @@ freeCodeCamp is an active open source project. We get new issues every day, all > > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. > - > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. > > Thank you and happy coding. @@ -120,15 +120,15 @@ freeCodeCamp is an active open source project. We get new issues every day, all > > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. -### Closing Stale, Outdated, Inactive Issues and Pull Requests +#### Closing Stale, Outdated, Inactive Issues and Pull Requests -- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. - Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. - If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. -### Other guidelines for Moderators on GitHub +#### Other guidelines for Moderators on GitHub Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. @@ -136,7 +136,7 @@ Also, you should never accept your own PRs. They must be QA'd by another moderat If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. -# Moderating the Forum +## Moderating the Forum As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. @@ -182,7 +182,7 @@ Please rejoin once you have reached at least 13 years of age. Thank you for understanding. ``` -# Moderating Facebook +## Moderating Facebook If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. @@ -190,7 +190,7 @@ Sometimes people will post things that they think are funny. They don't realize But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. -# Moderating Discord +## Moderating Discord Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: @@ -267,7 +267,7 @@ In all other situations - even situations where the code of conduct is violated 10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. -# How to become a moderator +## How to become a moderator If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. @@ -275,7 +275,7 @@ If you are approved, we will add you to our Moderator Teams on [GitHub](https:// > [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. -# How we retire inactive moderators +## How we retire inactive moderators Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: @@ -283,17 +283,17 @@ Please note that we will frequently remove mods whom we think are inactive. When > If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. -# How our Contributors room works +## How our Contributors room works Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. -# Dealing with solicitors +## Dealing with solicitors You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). -# Dealing with (mental) health inquiries +## Dealing with (mental) health inquiries You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! @@ -315,7 +315,7 @@ Helpful URLs: http://www.suicide.org/international-suicide-hotlines.html -# A note on free speech +## A note on free speech Sometimes people will defend something offensive or incendiary that they said as "free speech." @@ -324,3 +324,133 @@ This XKCD comic perfectly summarizes most communities' thoughts on free speech.
    Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Catalan/FAQ.md b/docs/i18n/Catalan/FAQ.md index be0299b973..e6ef4fed0d 100644 --- a/docs/i18n/Catalan/FAQ.md +++ b/docs/i18n/Catalan/FAQ.md @@ -1,24 +1,12 @@ -### I am new to GitHub and Open Source, where should I start? +### I am new to GitHub and Open Source. Where should I start? -Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. ### Can I translate freeCodeCamp's curriculum? -We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts. - -We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese. - -**Why are you focusing on Chinese curriculum first?** - -China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n. - -We will focus on Latin America as the demographic region for Portuguese and Spanish. - -We do not have any plans for i18n to any other languages other than the above for the foreseeable future. - -We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. ### How can I report a new bug? @@ -26,19 +14,17 @@ If you think you've found a bug, first read the ["Help I've Found a Bug"](https: If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. ### How can I report a security issue? Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### I am a student, can I or our team work on a feature for academic credits? +### I am a student. Can I work on a feature for academic credits? -Yes, sure. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all. - -We request you to plan ahead and work on a feature with this in mind. +We request you to plan ahead and work on code contributions with this in mind. ### What do these different labels that are tagged on issues mean? @@ -48,42 +34,37 @@ The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_man You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### I found a typo, should I report an issue before I can make a pull request? +### I found a typo. Should I report an issue before I can make a pull request? -For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### How do I get an issue assigned to me? +### How can I get an issue assigned to me? -We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. The first pull request for any issue is preferred to be merged. -2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: - Did you include tests? - Did you catch all usecases? - - Did you ensure all tests pass, and you confirmed everything works locally? -3. Finally, we favor pull requests which follow our recommended guidelines. + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. - Did you follow the pull request checklist? - - Did you name your pull request title meaningfully? - -You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier. - -Follow the guidelines carefully and open a pull request. + - Did you give your pull request a meaningful title? ### I am stuck on something that is not included in this documentation. **Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. **Additional Assistance:** diff --git a/docs/i18n/Catalan/_sidebar.md b/docs/i18n/Catalan/_sidebar.md index 3b43405b5f..1b5bda2bdc 100644 --- a/docs/i18n/Catalan/_sidebar.md +++ b/docs/i18n/Catalan/_sidebar.md @@ -1,8 +1,8 @@ - **Getting Started** - - [Introduction](index 'Contribute to the freeCodeCamp.org Community') + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") - [Frequently Asked Questions](FAQ.md) - **Code Contribution** -- - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) - [Open a pull request](how-to-open-a-pull-request.md) - [Work on coding challenges](how-to-work-on-coding-challenges.md) - [Work on video challenges](how-to-help-with-video-challenges.md) @@ -14,18 +14,21 @@ --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- - **Flight Manuals** (for Staff & Mods) - - [Moderator Handbook](flight-manuals/moderator-handbook.md) - - [Reply Templates](flight-manuals/using-reply-templates.md) - - [DevOps Overview](devops.md) - - [Working on Servers](flight-manuals/working-on-virtual-machines.md) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- diff --git a/docs/i18n/Catalan/devops.md b/docs/i18n/Catalan/devops.md index ff7eec13cb..46fb8b5382 100644 --- a/docs/i18n/Catalan/devops.md +++ b/docs/i18n/Catalan/devops.md @@ -1,10 +1,10 @@ -# Developer Operations at freeCodeCamp.org +# DevOps Handbook This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. Let us know, if you have feedback or queries, and we will be happy to clarify. -## How do we build, test and deploy the codebase? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. @@ -46,7 +46,7 @@ The build pipeline goes on to trigger a corresponding release pipeline if it com Status of builds and releases are [available here](#build-test-and-deployment-status). -## Triggering a build, test and deployment. +## Trigger a build, test and deploy Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). @@ -218,10 +218,491 @@ There are some known limitations and tradeoffs when using the beta version of th - #### Sign page may look different than production - We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. ## Reporting issues and leaving feedback Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

    https://amplify.nginx.com

    +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Catalan/flight-manuals/using-reply-templates.md b/docs/i18n/Catalan/flight-manuals/using-reply-templates.md deleted file mode 100644 index ced39a3641..0000000000 --- a/docs/i18n/Catalan/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Using Reply Templates - -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. - -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. - -### Thank you - -```markdown -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Thank you and congrats - -> For thanking and encouraging first-time contributors. - -```markdown -Hi @username. Congrats on your first pull request (PR)! 🎉 - -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Build Error - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -Once you resolve these issues, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -``` - -### Syncing Fork - -> When PR is not up to date with the `master` branch. - -``````markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. - -To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. - -Using the command line, you can do this in three easy steps: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. - -Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` - -### Merge Conflicts - -> When PR has merge conflicts that need to be resolved.¹ - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ - -Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 - ---- - -> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` -¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. - -### Duplicate - -> When PR is repetitive or a duplicate. - -```markdown -Hey @username - -It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 - -If you feel you have more to add, please feel free to open up a new PR. - -Thanks again! 😊 - ---- - -> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬 -``` - -### Closing invalid pull requests - -> When PR is invalid. - -```markdown -Hey @username - -You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️ - -Feel free to open another PR though! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Catalan/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Catalan/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Catalan/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

    https://amplify.nginx.com

    -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Catalan/how-to-open-a-pull-request.md b/docs/i18n/Catalan/how-to-open-a-pull-request.md index ced6082c8a..2729cd6237 100644 --- a/docs/i18n/Catalan/how-to-open-a-pull-request.md +++ b/docs/i18n/Catalan/how-to-open-a-pull-request.md @@ -1,6 +1,6 @@ # How to open a Pull Request (PR) -A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. ## Prepare a good PR title @@ -72,7 +72,7 @@ Some examples of good PRs titles would be: Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. diff --git a/docs/i18n/Catalan/how-to-setup-freecodecamp-locally.md b/docs/i18n/Catalan/how-to-setup-freecodecamp-locally.md index 1b5573ce07..619db733cf 100644 --- a/docs/i18n/Catalan/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Catalan/how-to-setup-freecodecamp-locally.md @@ -1,18 +1,18 @@ Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > > [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare your local machine +### How to prepare your local machine Start by installing the prerequisite software for your operating system. -We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). @@ -147,7 +147,7 @@ Now that you have a local copy of freeCodeCamp, you can follow these instruction If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/pFspAhS), for quick queries. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > @@ -541,6 +541,6 @@ The first time setup can take a while depending on your network bandwidth. Be pa ## Getting Help -If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Catalan/how-to-work-on-coding-challenges.md b/docs/i18n/Catalan/how-to-work-on-coding-challenges.md index 568913de3b..2b95545e91 100644 --- a/docs/i18n/Catalan/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Catalan/how-to-work-on-coding-challenges.md @@ -2,11 +2,15 @@ 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, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like 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. -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. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions. +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/). + +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 [our Discord server](https://discord.gg/pFspAhS). With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. @@ -210,12 +214,15 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an Here are specific formatting guidelines for challenge text and examples: - Language keywords go in `` tags. For example, HTML tag names or CSS property names -- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags - References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: -- Use parseInt to convert the variable realNumber into an integer. -- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -See example below: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md The following is an example of code: @@ -229,7 +236,9 @@ The following is an example of code: - Additional information in the form of a note should be formatted `Note: Rest of note text...` - If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. -- Use double quotes where applicable +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests @@ -246,9 +255,81 @@ Here are specific formatting guidelines for the challenge seed code: - Use two spaces to indent - JavaScript statements end with a semicolon - Use double quotes where applicable -- Comments made should have a space between the comment characters and the comment themselves - `// Fix this line` +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
    + { /* Change code below this line */ } + + { /* Change code above this line */ } +

    {this.state.text}

    +
    + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions @@ -261,7 +342,7 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca Take the following steps when adding a new challenge hints/solutions related topic. 1. Start by following the same steps for creating a new topic but review the next for creating the title. -2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". 3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. 4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. diff --git a/docs/i18n/Catalan/how-to-work-on-the-docs-theme.md b/docs/i18n/Catalan/how-to-work-on-the-docs-theme.md index 8de043746f..bf8bf8f6c9 100644 --- a/docs/i18n/Catalan/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Catalan/how-to-work-on-the-docs-theme.md @@ -20,21 +20,35 @@ Typically you would not need to change any configuration or build the site local Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` Install `docsify`: -```sh +```console npm install -g docsify ``` and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Catalan/how-to-work-on-the-news-theme.md b/docs/i18n/Catalan/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Catalan/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Catalan/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Catalan/index.md b/docs/i18n/Catalan/index.md index 93e97fae8d..1c4add4ab3 100644 --- a/docs/i18n/Catalan/index.md +++ b/docs/i18n/Catalan/index.md @@ -1,45 +1,43 @@ -The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. We welcome any and all contributions to the community and are excited to welcome you aboard. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. Happy contributing. You are welcome to: -- Create, update and fix bugs in our [coding challenges](#coding-challenges). +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). - _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Coding Challenges +## Curriculum -All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** ## Learning Platform -Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Broadly, +Broadly, we use -- We have a Node.js based API server. -- A set of React-based client applications. -- A script that we use to evaluate our front-end projects. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. +If you want to help us improve our codebase... -**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts a ready-to-code dev environment for freeCodeCamp in your browser.) +Or you can... -OR - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Greek/flight-manuals/moderator-handbook.md b/docs/i18n/Catalan/moderator-handbook.md similarity index 84% rename from docs/i18n/Greek/flight-manuals/moderator-handbook.md rename to docs/i18n/Catalan/moderator-handbook.md index 5916fb23de..126794b1a2 100644 --- a/docs/i18n/Greek/flight-manuals/moderator-handbook.md +++ b/docs/i18n/Catalan/moderator-handbook.md @@ -22,7 +22,7 @@ freeCodeCamp is an inclusive community, and we need to keep it that way. We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). -# Moderating GitHub +## Moderating GitHub Moderators have the ability to close issues and accept or close pull requests. @@ -31,11 +31,11 @@ Moderators have two primary responsibilities regarding GitHub: 1. QA'ing and merging pull requests 2. Evaluating and responding to issues -## Moderating Pull Requests +### Moderating Pull Requests Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. -### Types of Pull Requests +#### Types of Pull Requests 1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: @@ -49,7 +49,7 @@ Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's reposi 3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. -### How to merge or close pull requests +#### How to merge or close pull requests First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. @@ -63,7 +63,7 @@ If the pull request looks ready to merge (and doesn't require approval from @rai You should then comment on the pull request, thanking the contributor in your own personal way. -If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: ![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) @@ -83,11 +83,11 @@ In both of these situations, you should go ahead and close their pull request an If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. -## Moderating GitHub Issues +### Moderating GitHub Issues freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. -### Types of GitHub Issues +#### Types of GitHub Issues 1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. @@ -95,7 +95,7 @@ freeCodeCamp is an active open source project. We get new issues every day, all > > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. > - > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. > > Thank you and happy coding. @@ -120,15 +120,15 @@ freeCodeCamp is an active open source project. We get new issues every day, all > > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. -### Closing Stale, Outdated, Inactive Issues and Pull Requests +#### Closing Stale, Outdated, Inactive Issues and Pull Requests -- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. - Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. - If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. -### Other guidelines for Moderators on GitHub +#### Other guidelines for Moderators on GitHub Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. @@ -136,7 +136,7 @@ Also, you should never accept your own PRs. They must be QA'd by another moderat If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. -# Moderating the Forum +## Moderating the Forum As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. @@ -182,7 +182,7 @@ Please rejoin once you have reached at least 13 years of age. Thank you for understanding. ``` -# Moderating Facebook +## Moderating Facebook If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. @@ -190,7 +190,7 @@ Sometimes people will post things that they think are funny. They don't realize But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. -# Moderating Discord +## Moderating Discord Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: @@ -267,7 +267,7 @@ In all other situations - even situations where the code of conduct is violated 10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. -# How to become a moderator +## How to become a moderator If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. @@ -275,7 +275,7 @@ If you are approved, we will add you to our Moderator Teams on [GitHub](https:// > [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. -# How we retire inactive moderators +## How we retire inactive moderators Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: @@ -283,17 +283,17 @@ Please note that we will frequently remove mods whom we think are inactive. When > If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. -# How our Contributors room works +## How our Contributors room works Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. -# Dealing with solicitors +## Dealing with solicitors You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). -# Dealing with (mental) health inquiries +## Dealing with (mental) health inquiries You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! @@ -315,7 +315,7 @@ Helpful URLs: http://www.suicide.org/international-suicide-hotlines.html -# A note on free speech +## A note on free speech Sometimes people will defend something offensive or incendiary that they said as "free speech." @@ -324,3 +324,133 @@ This XKCD comic perfectly summarizes most communities' thoughts on free speech.
    Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Chinese/FAQ.md b/docs/i18n/Chinese/FAQ.md index cbdf5c9116..e6ef4fed0d 100644 --- a/docs/i18n/Chinese/FAQ.md +++ b/docs/i18n/Chinese/FAQ.md @@ -1,101 +1,82 @@ -### 我是 GitHub 和 Open Source, 我应该从哪里开始? +### I am new to GitHub and Open Source. Where should I start? -阅读我们的 ["如何为开源指南做出贡献"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source)。 它是第一个适合计时器的项目和准则的令人愉快的资源。 +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### 我可以翻译免费CodeCamp的课程吗? +### Can I translate freeCodeCamp's curriculum? -我们将首先从 **中文** 开始在免费CodeCamp上启动本地化工作。 +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -我们打算以更多的语言提供课程,但是我们还不能承诺遵守任何最后期限。 一些操作限制,例如工作人员、积极贡献者和服务器费用,在推动国际化努力方面发挥了一定作用。 +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -我们打算以阿拉伯语、葡萄牙语等语言开始i18n的努力。 在我们发布了中文课程之后,俄语和西班牙语(无特定顺序)。 +### How can I report a new bug? -**您为什么先集中精力处理中文课程?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -中国是人口最多的地区,在我国非母语英语听众中也是如此。 目前,我们有数十万用户使用旧版本的平台。 以中文课程为重点,将为我们提供对i18所涉后勤问题的估计。 +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -我们将把重点放在作为葡萄牙语和西班牙语人口区域的拉丁美洲上。 +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -在可预见的将来,除了上述语言之外,我们没有任何关于i18n语的计划。 +### How can I report a security issue? -我们不鼓励您在i18n上使用上述语言。 我们可以接受拉动请求,而不期待任何部署时间表。 +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### 我如何报告一个新的 bug? +### I am a student. Can I work on a feature for academic credits? -如果你觉得你发现了一个 bug,请先阅读 ["帮助我找到了一个 Bug "](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) 篇文章,然后按照它的说明操作。 +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -如果你相信这是一个新的bug,继续前进并创建一个新的 GitHub 问题。 请务必包含尽可能多的信息,以便我们能够复制漏洞。 我们有一个预先定义的问题模板来帮助您完成这个任务。 +We request you to plan ahead and work on code contributions with this in mind. -请注意,在挑战中寻求编码帮助的任何问题都将被关闭。 问题跟踪器严格用于编程相关问题和讨论。 Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +### What do these different labels that are tagged on issues mean? -### 我如何报告一个安全问题? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -请不要为安全问题创建 GitHub 问题。 相反,请向 `security@freecodecamp.org` 发送一封电子邮件,我们将立即进行调查。 +### Where do I start if I want to work on an issue? -### 我是学生,我或我们的团队能否研究一种学分功能? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -是的,確認。 +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -虽然我们愿意提供所有捐款。 请注意我们无法对你的学院或大学可能需要的任何时间表作出承诺。 我们收到志愿开发者的许多提取请求和代码贡献,并且我们尊重他们的时间和努力。 我们将无法对任何公共责任给予任何特别关注,使之对所有人都是公平的。 +### I found a typo. Should I report an issue before I can make a pull request? -我们请你考虑到这一点,事先计划和开发一个功能。 +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### 这些不同的标签在问题上意味着什么? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -代码维护者 [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull request 依据他们的优先级、严重性和其他因素。 You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### 如果我想就一个问题开展工作,我将从哪里开始? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -您应该通过 [**`帮助您需要`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) 或 [**`第一次计时器`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) 一些问题来快速概述您可以做些什么。 +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`需要帮助`** 问题已经解决到抓取的时候,您不需要在处理这些问题之前寻求权限。 然而,只有 **`第一次计时器`** 标签被保留给以前没有贡献免费CodeCamp代码库的人。 如果这些问题不清楚需要做些什么,请随时在评论中提出问题。 +### I am stuck on something that is not included in this documentation. -### 我找到了一个搭配器,我是否应该在提出拉取请求之前报告一个问题? - -对于typo和其他文字更改,您可以直接打开合并请求,而不需要先创建一个问题。 讨论与守则或课程结构有关的更大问题的问题更多。 - -然而,请在拉取请求的描述区域中提及详细信息和上下文等,以帮助我们理解和审查您的贡献,即使是做了小的修改。 - -### 如何分配给我的问题? - -我们通常不把问题分配给任何人,而不是长期的贡献者,以避免模棱两可的表现。 相反,我们奉行以下政策,对每个人都是公平的: - -1. 任何问题的第一个拉取请求更喜欢被合并。 -2. 在同一问题的多个合并请求中,我们优先考虑合并请求中的代码质量。 - - 您是否包括测试? - - 捕获所有用户吗? - - 您是否确认了所有测试通过,并确认了所有在本地运行的测试? -3. 最后,我们赞成按照我们建议的准则拉取请求。 - - 您是否遵循拉取请求列表? - - 您是否有意义地命名了您的拉请求标题? - -您不需要任何权限来处理标记为 `有帮助需要` 或 `首次计时器如先前所解释的`。 - -仔细遵循准则并打开拉取请求。 - -### 我被困在这份文件中没有包含的东西上。 - -**随时请求帮助:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -我们很高兴能帮助您为您想要处理的任何主题做出贡献。 请随时就相关的问题向我们提出问题,我们将乐于加以澄清。 请确保您在发布新查询之前搜索您的查询。 +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -耐心和礼貌。 我们的志愿者和版主一直围绕着你来指导你完成你的查询。 +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**额外援助:** +**Additional Assistance:** -如果您有关于编解码器堆栈架构的查询,请随时联系我们的员工开发团队: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| 工作人员 | 发送论坛消息 | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | -| Mrugesh Mohamatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | -| 2. Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | +| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | +| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | | Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | | Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | -| Randel Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | +| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**您可以发送电子邮件给我们的开发人员: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Chinese/_sidebar.md b/docs/i18n/Chinese/_sidebar.md index 77a60344dc..1b5bda2bdc 100644 --- a/docs/i18n/Chinese/_sidebar.md +++ b/docs/i18n/Chinese/_sidebar.md @@ -1,36 +1,39 @@ -- **正在开始** - - [一. 导言](index '为FreeCodeCamp.org 社区贡献') - - [常见问题](FAQ.md) -- **代码贡献** -- - [在本地设置免费 CodeCamp](how-to-setup-freecodecamp-locally.md) - - [打开拉取请求](how-to-open-a-pull-request.md) - - [关于编码挑战的工作](how-to-work-on-coding-challenges.md) - - [关于视频挑战的工作](how-to-help-with-video-challenges.md) - - [关于新闻主题的工作](how-to-work-on-the-news-theme.md) - - [关于文件主题的工作](how-to-work-on-the-docs-theme.md) -- **可选指南** - - [捕获本地发送的电子邮件](how-to-catch-outgoing-emails-locally.md) - - [在 WSL 上设置免费 CodeCamp](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **飞行手册** (适合员 & 模式) - - [版主手册](flight-manuals/moderator-handbook.md) - - [回复模板](flight-manuals/using-reply-templates.md) - - [DevOps 概述](devops.md) - - [在服务器上工作](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **我们的社区** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**讨论区**](https://freecodecamp.org/forum/c/contributors) - - [**Gitter 聊天**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Chinese/devops.md b/docs/i18n/Chinese/devops.md index d257fb1cab..46fb8b5382 100644 --- a/docs/i18n/Chinese/devops.md +++ b/docs/i18n/Chinese/devops.md @@ -1,227 +1,708 @@ -# 在FreeCodeCamp.org开发者操作 +# DevOps Handbook -本指南将帮助您了解我们的基础设施堆栈以及我们如何维护我们的平台。 虽然本指南没有关于所有操作的详尽无遗的细节,但可以用来作为你理解系统的参考。 +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -让我们知道,如果你有反馈意见或询问,我们将乐于加以澄清。 +Let us know, if you have feedback or queries, and we will be happy to clarify. -## 我们如何构建、测试和部署代码库? +# Flight Manual - Code deployments -这个仓库是持续构建、测试和部署到 **个独立的基础设施组合(塞尔维亚、 数据库、 CDN 等)**。 +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -这涉及按顺序采取的三个步骤: +This involves three steps to be followed in sequence: -1. 新的更改(修复和功能)通过拉取请求合并到我们的初级开发分支(`主`)。 -2. 这些更改是通过一系列自动测试进行的。 -3. 测试通过后,我们会发布更改(或在需要时更新它们)以部署到我们的基础设施。 +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### 构建代码库-映射Git分支到部署。 +#### Building the codebase - Mapping Git Branches to Deployments. -典型的 [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (默认开发分支) 已合并到 [`生产暂存`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) 分支每天一次并释放到一个孤立的基础设施。 +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -这是我们的开发者和志愿贡献者的中间版本。 它也被称为“暂存”或“乙型”释放。 +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -它与我们在 `freeCodeCamp.org`的现场生产环境完全相同,而不是使用一套单独的数据库、服务器、网络代理等。 这种隔离使我们能够在像场景一样的“生产”中测试正在进行的开发和功能,而不会影响到FreeCodeCamp.org主平台的正常用户。 +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -开发人员团队 [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) 对Staging平台上的更改感到高兴。 这些更改每隔几天移动到 [`当前生产`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) 分支。 +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -这是移动我们在 FreeCodeCamp.org 上生产平台更改的最后版本。 +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### 测试更改 - 集成和用户接受测试。 +#### Testing changes - Integration and User Acceptance Testing. -我们采用不同程度的整合和验收测试来检查守则的质量。 我们所有的测试都是通过诸如 [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) 和 [Azure Pelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp) 等软件完成的。 +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -我们有测试挑战解决方案、服务器 API 和客户端用户界面的单元测试。 这有助于我们检验不同组成部分之间的一体化。 +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!注意] 我们也正在编写终端用户测试,这将有助于复制真实的世界情景,如更新电子邮件或拨打到 API 或第三方服务。 +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -这些测试一起有助于防止问题重复发生,并确保我们在处理另一个错误或功能时不会引入错误。 +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### 正在部署更改 - 正在推送对服务器的更改。 +#### Deploying Changes - Pushing changes to servers. -我们配置了连续传送软件,将更改推送到我们的开发和生产服务器。 +We have configured continuous delivery software to push changes to our development and production servers. -一旦更改被推送到受保护的释放分支,构建管道将自动触发到该分支。 建造管道负责建造人工制品并将其存放在冷藏库以供日后使用。 +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -构建管道继续启动,如果它成功运行,就会触发相应的释放管道。 释放管道负责收集建筑工材,将其移动到服务器并投入运行。 +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -构建和发布状态 [可在这里访问](#build-test-and-deployment-status)。 +Status of builds and releases are [available here](#build-test-and-deployment-status). -## 触发建造、试验和部署。 +## Trigger a build, test and deploy -目前,只有开发者团队的成员可以推送到生产分支。 `production-*` 分支的更改只能通过快速合并到 [`上游`](https://github.com/freeCodeCamp/freeCodeCamp) 降落。 +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!注意] 在今后几天中,我们将通过提取请求来改善这种流动,以更好地管理访问和提高透明度。 +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### 正在推送对待发布应用程序的更改。 +### Pushing changes to Staging Applications. -1. 正确配置您的遥控器。 +1. Configure your remotes correctly. ```sh - git 远程-v + git remote -v ``` - **结果:** + **Results:** ``` - original git@github.com:raisedadead/freeCodeCamp.git (fetch) - origin git@github.com:raisedadead/freeCodeCamp.git (pack) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) - upstream git@github.com:freeCodeCamp/freeCodeCamp.git (pus) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. 请确保您的 `主分支` 原始并与上游同步。 +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh - git 签出master - git 获取--all --prune + git checkout master + git fetch --all --prune git reset --hard upstream/master ``` -3. 检查Travis CI正在上游的 `主` 分支上。 +3. Check that the Travis CI is passing on the `master` branch for upstream. - [连续集成](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) 测试应该是绿色的, `` 分支应该是绿色的。 + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
    正在检查Travis CI上的状态(屏幕截图) +
    Checking status on Travis CI (screenshot)
    - ![在 Travis CI 上检查构建状态](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
    - 如果这个失败,您应该停止并调查错误。 + If this is failing you should stop and investigate the errors. -4. 确认您能够在本地构建资源库。 +4. Confirm that you are able to build the repository locally. ``` - npm 运行清理和开发 + npm run clean-and-develop ``` -5. 通过快速合并将更改从 `主` 移动到 `生产暂存` +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` - git 签出生产暂存 - git 合并主 - git 推送上流 + git checkout production-staging + git merge master + git push upstream ``` - > [!注意] 您将无法强制推送,如果您已经重写了历史记录,这些命令将会出去。 + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > 如果他们这样做,你可能做了一些不正确的事情,你应该刚刚开始。 + > If they do, you may have done something incorrectly and you should just start over. -上述步骤将自动触发运行于 `生产暂存` 分支的构建管道。 一旦构建完成,伪影将被保存为冷存储中的 `.zip` 文件,以后检索和使用。 +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -当从已连接的构建管道中可以找到新的艺术品时,释放管道会自动触发。 对于暂存平台,这个过程不需要手动批准,伪影被推送到客户端 CDN 和 API 服务器。 +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP|label:估计数] 通常运行需要 ~20-25分钟才能完成安装,客户端运行需要 ~15-20 分钟, 和 ~5-10 分钟让API能够在线使用。 从代码推送到在分阶段平台上运行,整个过程总共需要 **~35-45 分钟**。 +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### 推送对生产应用程序的更改。 +### Pushing changes to Production Applications. -这个过程基本上与中转平台相同,还有几个额外的检查。 这仅仅是为了确保我们不会在 freeCodeCamp.org 上断开任何东西,因为它可以看到数以百计的用户在任何时候使用它。 +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| 不要执行这些命令,除非您已经验证所有的工作都在暂存平台上。 您不应在继续进行之前绕过或跳过任何预览测试。 | -|:---------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. 请确保您的 `生产暂存` 分支原始并与上游同步。 +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh - git 签出生产暂存 - git 抓取--all --prune + git checkout production-staging + git fetch --all --prune git reset --hard upstream/production-staging ``` -2. 通过快速合并将变化从 `生产暂存` 移动到 `生产当前` +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` - git 签出当前production-current - git 合并production-staging - git 推送上流 + git checkout production-current + git merge production-staging + git push upstream ``` - > [!注意] 您将无法强制推送,如果您已经重写了历史记录,这些命令将会出去。 + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > 如果他们这样做,你可能做了一些不正确的事情,你应该刚刚开始。 + > If they do, you may have done something incorrectly and you should just start over. -上述步骤将自动触发 `生产-当前` 分支在构建管道上的运行。 一旦建筑工件准备就绪,它将触发释放管道上的运行。 +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP|label:估计数] 通常构建运行需要20-25分钟才能完成。 +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**工作人员行动的其他步骤** +**Additional Steps for Staff Action** -一个版本运行触发,开发人员团队成员将收到自动手动干预电子邮件。 他们可以通过 _批准_ 或 _拒绝发布_。 +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -如果更改运行得很好,并且已经在暂存平台上测试,那么它就可以被批准。 批准必须在被自动拒绝之前4小时内发出。 员工可以重新启动手动运行的被拒绝的释放,或者等待下一个释放周期。 +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -工作人员使用: +For staff use: -| 请检查您的电子邮件直接链接或 [在构建运行完成后转到发布面板](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release)。 | -|:---------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -一旦一名工作人员批准发布,管道将把更改现场推送到FreeCodeCodeCamp.org的生产CDN和API服务器。 他们通常需要 ~15-20 分钟的客户端,还需要 ~5 分钟的API服务器才能正常使用。 +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP|label:估算] 运行的版本通常需要 ~15-20 分钟,每一个 API 实例的 ~5-10 分钟即可使用。 从代码推送到在生产平台上运行,整个过程总共需要 **~90-120 分钟** (不算等待员工批准的时间)。 +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## 构建、测试和部署状态 +## Build, Test and Deployment Status -这里是代码库的当前测试、构建和部署状态。 +Here is the current test, build and deployment status of the codebase. -| 类型 | 分支 | 状态 | 仪表板 | -|:----- |:------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------- | -| CI 测试 | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI 构建状态](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [转到状态仪表板](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| CI 测试 | [`生产暂存中`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI 构建状态](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [转到状态仪表板](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| 构建管道线 | [`生产暂存中`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![构建状态](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [转到状态仪表板](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| 释放流线 | [`生产暂存中`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [转到状态仪表板](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| CI 测试 | [`当前生产`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI 构建状态](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [转到状态仪表板](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| 构建管道线 | [`当前生产`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![构建状态](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [转到状态仪表板](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| 释放流线 | [`当前生产`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [转到状态仪表板](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## 早期访问和测试测试版 +## Early access and beta testing -我们欢迎您在 **"公开测试"** 模式中测试这些版本,并尽早访问平台上即将出现的功能。 有时这些功能/变化会被称为接下来的 **、殴打、挂起** 等。 +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -您通过反馈和发布报告做出的贡献将帮助我们在 `免费CodeCodeCamp上创建生产平台。 rg` 更多 **复原力**, **一致性** 和 **稳定** 对所有人来说都是如此。 +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -我们感谢您报告了您遇到的bug,并帮助使FreeCodeCamp.org变得更好。 你摇一摇! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### 确定平台即将到来的版本 +### Identifying the upcoming version of the platforms -目前有一个公开测试版本: +Currently a public beta testing version is available at: -

    Freecodecamp.dev

    +

    freecodecamp.dev

    -> [!注意] 域名与 **`freeCodeCamp.org`** 不同。 这是为了防止搜索引擎索引并避免平台的普通用户感到困惑。 +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### 确定平台的当前版本 +### Identifying the current version of the platforms **The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -开发团队在发布更改时将从 `生产暂存` 分支合并到 `生产当前` 的变化。 顶部提交应该是您在网站上看到的活动内容。 +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -您可以通过访问状态部分中可用的构建和部署日志来识别部署的确切版本。 或者,您也可以在 [贡献者聊天室](https://gitter.im/FreeCodeCamp/Contributors) 打扰我们以获得确认。 +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### 已知限制 +### Known Limitations -使用平台的 beta 版本时有一些已知的限制和权衡。 +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### 这些测试平台上的所有数据 / 个人进度 `不会被保存或传输到` 生产。 +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **测试版上的用户将有一个与生产分开的帐户。** 测试版使用一个与生产分开的实际数据库。 这使我们有能力防止任何意外丢失数据或修改。 开发团队可以根据需要清理这个测试版上的数据库。 + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### 测试平台的使用时间和可靠性没有保障。 +- #### There are no guarantees on the uptime and reliability of the beta platforms. - 预计部署工作将频繁进行,有时是每天多次。 因此,测试版有时会出现意外故障或功能中断。 + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### 不要向这个站点发送普通用户作为确认修复的措施 +- #### Do not send regular users to this site as a measure of confirming a fix - 测试站现在是,而且一直是为了加强当地的发展和测试,没有其它东西。 这不是对即将到来的许诺,而是对正在进行的工作的概述。 + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### 签名页面可能看起来不同于生产 +- #### Sign page may look different than production - 我们在作者0上使用 Freecodecamp.dev 的测试租户,因此没有能力设置自定义域。 这使得所有重定向回调和登录页面都出现在默认域名上: `https://freecodecamp-dev.auth0.com/`。 这不会影响我们能够获得的功能接近生产。 + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## 报告问题和留下反馈 +## Reporting issues and leaving feedback -请为讨论和报告错误打开新问题。 您可以将他们标记为 **[`发布:下次/测试`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** 进行测试。 +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -如果您有任何查询,您可以向 `dev[at]freecodecamp.org` 发送一封电子邮件。 因为所有安全漏洞都应该报告给 `安全[at]Freecodecamp.org` 而不是公共跟踪器和论坛。 +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

    https://amplify.nginx.com

    +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Chinese/flight-manuals/moderator-handbook.md b/docs/i18n/Chinese/flight-manuals/moderator-handbook.md deleted file mode 100644 index 565afd148d..0000000000 --- a/docs/i18n/Chinese/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# 官方免费CodeCamp版主手册。 - -这将帮助您管理我们社区中的不同地方,包括: - -- GitHub 问题 & 合并请求 -- 论坛、聊天室、Facebook小组和其他在线会议 -- 亲自活动,如学习小组、黑客和会议 - -**所有免费CodeCamp版主都是全社区的版主。 这意味着我们相信你们能够监督其中的任何地方。** - -尽管如此,你可以在你最感兴趣的任何地方担任主持人。 一些版主只是在 GitHub 上帮忙。 其他人只是在论坛上提供帮助。 一些版主在各地都很活跃。 - -底线是我们想让你享受一个版主, 并将你稀少的时间投入到你感兴趣的地方。 - -> [!注意] "有了伟大的力量就会有极大的责任。" - Uncle Ben - -作为调解人,温度比技术技能更重要。 - -已收听。 帮忙。 不要滥用你的力量。 - -免费CodeCamp是一个包容性的社区,我们需要这样做。 - -我们有一个适用于我们整个社会的单一行为守则。 规则越少,就越容易记住。 您可以阅读这些规则并将其提交到内存 [这里](https://code-of-conduct.freecodecamp.org)。 - -# Moderating GitHub - -版主有能力关闭问题并接受或关闭拉取请求。 - -主持人对GitHub负有两项主要责任: - -1. QA'ing和合并拉取请求 -2. 评价和应对问题 - -## 管理拉取请求 - -合并请求(PRs) 是贡献者如何向FreeCodeCamp仓库提交更改。 在我们决定是合并还是关闭它们之前,我们必须对合并请求执行质量保证(QA)。 - -### 合并请求的类型 - -1. **挑战性说明编辑** 这些是挑战文本――描述、说明或测试文本的更改。 您也可以在 GitHub 上查看这些权利,并决定是否合并它们。 我们需要更加谨慎地对待这些问题,因为数百万人将在通过免费CodeCamp课程工作时遇到这种文本。 拉取请求是否使文本更加清晰而不长久? 编辑是否相关,是否过于罗盘? 请记住,我们的目标是使挑战尽可能明确和简短。 他们不是模糊细节的地方。 此外,捐助者可能会设法增加资源与挑战之间的联系。 您可以关闭这些合并请求并回复这些请求: - - > 感谢您的拉取请求。 - > - > 我正在关闭此拉取请求。 请将链接和其他细节添加到挑战相应的指南文章中。 - > - > 如果你认为我关闭这个问题是错误的,请重新打开它并添加进一步的澄清。 谢谢你和快乐的编码。 - -2. **挑战代码编辑** 这些是挑战中对代码的更改 - 挑战种子、挑战解决方案和测试字符串。 这些合并请求需要从GitHub 下拉并在您的本地计算机上测试,以确保挑战测试仍然可以通过当前的解决方案。 并且新代码不会引入任何错误。 一些贡献者可能会试图添加更多测试以覆盖行星角案例。 我们必须谨慎,不要使这一挑战变得太复杂。 这些挑战及其测试应当尽可能简单和直觉。 除了算法挑战和面谈前部分之外,学员应能够在大约2分钟内解决每个挑战。 - -3. **代码代码更改** 这些代码更改了免费CodeCamp平台本身的功能。 有时贡献者试图在没有多少解释的情况下进行更改,但是对于代码更改,我们需要确保真正需要改变。 因此,这些拉取请求应参考一个现有的GitHub 问题,因为该问题讨论了变化的原因。 然后您可以在计算机上打开拉取请求并在本地测试它们。 在你这样做之后,如果更改看起来很好,请不要合并它们。 您可以评论拉取请求“LGTM”,然后提及@raisedadead,这样他就可以看到最后的景象。 - -### 如何合并或关闭合并请求 - -首先,当您选择一个合并请求到 QA 时,您应该将自己分配给它。 您可以通过点击GitHub 界面右手列的“受让人”下面的“分配给自己”链接来做到这一点。 - -根据拉请求的类型,遵循上面列出的相应规则。 - -在合并任何拉取请求之前,请确保GitHub 对一切都有绿色的检查标记。 如果有X,首先对它们进行调查,然后确定如何将它们变成绿色的检查标记。 - -有时会出现合并冲突。 这意味着另一个拉取请求已经对同一文件的那一部分作了修改。 GitHub 拥有处理GitHub 上这些合并冲突的工具。 你可以尝试解决这些冲突。 只需使用你最好的判断。 合并请求的更改将在顶端,主分支的更改将在底端。 有时会有多余的信息可以删除。 Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. - -如果合并请求已准备好合并(不需要@raisedadead的批准),你可以继续合并它。 请务必使用 GitHub 上的默认“平方和合并”功能。 这将挤掉所有合并请求提交到单个提交,从而使Git历史更容易阅读。 - -然后你应该评论拉取请求,感谢贡献者自己的个人方式。 - -如果合并请求的作者是一个“第一次贡献者”, 你也应该祝贺他们第一次合并合并的合并请求到资源库。 你可以看看PR身体的右上角来确定第一次贡献者。 它将显示 `首次贡献者` 如下所示: - -![Copy_edits_for_JavaScrip_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -如果拉取请求看来没有准备好合并,你可以长时间回复,告诉作者他们应该做些什么来准备好它。 希望他们能够回复并使他们的拉请求更接近于准备就绪。 - -拉请求的努力往往很小。 当贡献者没有检查合并请求模板中的复选框时,您可以立即告诉它。 或使用了一个类似于“做出更改”或“更新索引”的通用拉请求标题。 d”。 - -还有一些情况下,贡献者试图添加一个链接到自己的网站。 或者包含他们自己创建的图书馆,或者有一个无意义的编辑,不能帮助任何人,而只能帮助自己。 - -在这两种情况下,您应该继续,关闭他们的拉请求并以这个标准信息回答: - -> 感谢您打开此拉取请求。 -> -> 这是一个通知您的标准消息,我们已经审查了您的合并请求并决定不合并它。 我们欢迎您今后提出拉取请求。 -> -> 谢谢你,快乐的编码。 - -如果您需要对拉请求发表第二个意见,请先着手,然后留下您对拉请求的评论。 然后将"讨论"标签添加到拉取请求。 - -## 管理 GitHub 问题 - -免费CodeCamp 是一个活跃的开源项目。 我们每天都有新的问题,所有这些问题都需要尝试和贴上标签。 - -### GitHub 问题类型 - -1. **代码帮助请求**,那些人错误地创建了 GitHub 问题。 如果有人请求帮助,请粘贴以下信息,然后关闭问题。 - - > 感谢您报告这个问题。 - > - > 这是一个标准消息,通知您,这个问题似乎是一个请求帮助的请求。 不要在这里寻求帮助,请在免费CodeCamp上点击\*\*“帮助”\*\*按钮。 这将帮助您在论坛的正确部分创建一个问题。 论坛上的志愿者通常在几个小时内回答问题,并可以帮助确定您的代码或挑战的测试是否有问题。 - > - > 如果论坛成员确定你的代码没有任何错误,你可以请求重新打开这个问题。 - > - > 谢谢你,快乐的编码。 - -2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. 如果没有,请他们采取步骤复制错误,他们是否有任何屏幕截图, 视频,或可以帮助您重现问题的附加详细信息。 一旦您可以复制问题 - 或至少确认它是一个legit issue - 标记它 `已确认`。 然后: - -- 如果是对现有挑战的简单更改,标记为 `第一次计时器为`,否则标签为 `帮助您想要的`。 使用其他适当的标签。 -- 如果这个问题更重要,则标记为 `bug`。   如果对某个问题的适当行动方针有任何模棱两可之处。 您可以随意在@raisedadead上添加标签。然后添加 `讨论` 标签。 - -3. **重复问题** 如果一个问题与另一个报告的问题相同, 先前报告的问题应该优先处理。 标记为 `重复`, 粘贴以下信息替换 `#XXXXX` 并使用问题编号, 然后关闭问题。 - - > 感谢您报告这个问题。 - > - > 这是一个标准消息,通知您,这个问题似乎与问题#XXXXX非常相似。 所以我是作为一个重复结案的。 - > - > 如果你认为我关闭这个问题是错误的,请重新打开它并添加进一步的澄清。 谢谢你,快乐的编码。 - -4. **修复了暂存** 一些问题可能已经被解决,但没有与此相关的 GitHub 问题。 如果情况如此,您可以粘贴以下消息,关闭问题,并添加 `状态:解析/配送` 标签: - - > 感谢您报告这个问题。 - > - > 这是一个标准消息,通知您这里提到的问题存在于生产中。 但这个问题已经被分阶段解决。 这意味着我们下次将我们的分行推向生产时,这个问题应该得到解决。 因此,我要结束这个问题。 - > - > 如果你认为我关闭这个问题是错误的,请重新打开它并添加进一步的澄清。 谢谢你,快乐的编码。 - -### 关闭卡片,过期,不活动的问题和拉取请求 - -- 陈旧问题或PR是指在21天内没有看到任何活动的问题(最后一次活动的3周内), 但只有在版主请求更多信息/更改后才能使用。 这些可以由自动/机器人脚本或由版主自己关闭。 - -- 活动定义为:要求更新的 PR 条目和试用记录,例如 `状态:需要更新的` 标签等。 - -- 如果执行部分第1段要求提供更多的援助,甚至要求时间,在作出答复后可以放松和重新审查上述情况。 无论如何,模组应利用其最佳判断来解决未决的PR地位。 - -### GitHub 版主其他准则 - -虽然你可以写访问FreeCodeCamp的仓库,但 **你不应该直接将代码推到FreeCodeCamp仓库**。 所有代码都应该输入免费CodeCamp的代码,其形式是从仓库的一个叉中的拉取请求。 - -此外,您不应接受您自己的PR。 他们必须是另一位主持人QA'd,就像其他任何PR一样。 - -如果你注意到有人在 GitHub 问题上违反了 [行为守则](https://code-of-conduct.freecodecamp.org) , 或打开含有恶意内容或代码的拉取请求,email dev@freecodecamp。 rg 与冒犯性的拉请求链接,我们可以考虑完全禁止它们加入FreeCodeCamp的GitHub 组织。 - -# 主持论坛 - -作为管理员,你帮助我们的社区成为任何人学习和获得帮助的愉快场所。 您将处理已标记的帖子并处理垃圾邮件、主题外和其他不恰当的对话。 - -请注意,一旦您是论坛版主,您将开始看到论坛成员的蓝色版主提示。 像“这是 [person] 第一次发布-让我们欢迎他们来到社区! 或 "[person] 已经很长时间没有发布-让我们欢迎他们返回。" - -![一个蓝色的文字消息,说 "这是第一次发表了 [person] - 我们欢迎他们加入社区!](https://i.imgur.com/mPmVgzK.png) - -这是你们欢迎他们并使他们感到更加特殊的机会。 你从来不知道哪一个人稍有参与可能成为我们的下一个超级帮手,帮助许多其他人在他们编码的旅程。 即使是最小的善意,也可能引发一系列好事。 - -### 正在删除论坛帖子 - -论坛版主有能力删除用户的帖子。 您只能为以下实例做这件事: - -1. 有人张贴了色情或生动暴力的图像。 -2. 有人张贴了一个恶意的链接或代码,可能伤害点击它的其他骆驼。 -3. 有人把大量的垃圾信息淹没了一个线程。 - -### 处理垃圾信息 - -对于用户的第一个垃圾邮件帖子,向他们发送解释问题的消息,并酌情删除链接或帖子。 在用户的个人资料上留下一个笔记,解释您已经采取的行动。 如果问题仍然存在,就跟随上面的进程。 安静地阻止用户发布(在用户管理面板上使用静音选项),然后发出警告。 选中私人消息中的复选框,表示您的消息是一个“正式警告”。 - -您可以在 [员工论坛部分](https://forum.freecodecamp.com/c/staff) 中提问并报告事件。 - -### 处理主题外对话 - -似乎在错误地点的职位或专题可以重新分类或重新命名为适当的职位。 - -在特殊情况下,主持人可能宜将讨论分成多个主题。 - -同样,如果您有任何问题或疑问,请在工作人员职类中发布您的行动帖子。 并标记其他版主,如果你想要他们审查你的管理操作。 - -### 未成年用户 - -我们的服务条款要求免费CodeCamp用户至少13岁。 如果用户发现他们不满13岁, 向他们发送以下消息并删除他们的论坛帐户(如果删除不可用,暂停帐户已足够)。 然后电邮 [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) 或 [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) 也删除用户的 FreeCodeCam。 - -```markdown -SUBJECT: 13岁以下的用户不允许按照服务条款 - -使用论坛。我们注意到您未满13岁。 每个[免费CodeCamp服务条款](https://www.freecodecamp.org/news/ters-of-service),您必须至少13岁才能使用网站或论坛。 我们将删除您的免费CodeCamp帐户和论坛帐户。 这一限制使我们遵守美国法律。 - -一旦您年满13岁,请重新加入。 - -谢谢你们的理解。 -``` - -# 审核Facebook - -如果你看到任何似乎破坏我们的 [行为准则](https://code-of-conduct.freecodecamp.org/)的东西,你应该立即删除它。 - -有时,人们会发表他们认为有趣的事情。 他们不知道他们所说的或他们共同的内容可以被解释为冒犯。 在这种情况下,他们的帖子应予删除,但是发布者不一定要被禁止。 如果删除他们的帖子,希望他们能够理解他们所张贴的内容是不恰当的。 - -但如果这是一种令人震惊的罪行,无法合理地归因于文化差异或对英语的误解, 然后你应该强烈考虑阻止Facebook小组中的成员。 - -# 审核Discord - -这里是版主如何处理违反我们的 [Discord 行为准则](https://code-of-conduct.freecodecamp.org/) 的行为: - -1. **确保其目的是违反《行为守则》。** 并非所有违反该守则的行为都是为了这样做。 一个新的骆驼可能会发布大量的帮助代码,不知道这可以被视为垃圾信息。 在这些情况下,您只能要求他们用 Codepen 或 Pastebin 等服务粘贴代码。 - -2. **如果骆驼明显违反《行为守则》,主持人将采取以下行动:** - -- 挂起冒犯的骆驼,但不要警告或威胁他们。 相反,悄悄地给予他们Discord上的暂停角色,然后向他们发送以下消息: - -``` -这是一条标准消息,通知您我不得不暂时中止您在FreeCodeCamp Discord服务器上的对话。 - -我是代表我们开放源码社区行事的主持人。 我可以考虑删除你的暂停,但我需要你们先采取以下3个步骤: - -1。 阅读我们的行为守则:https://code-of-conduct.freecodecamp.org/ -2。 给我回信确认你已经完成了阅读。 -3。 向我解释为什么你认为你暂停你的工作,为什么我应该删除你的暂停。 -``` - -- 报告一个简短的事件摘要以及他们在#admin频道中对它的反应。 下面是这种总结可能是什么样子的示例: - -``` -挂起:_@username_ -原因(s): _Spaming, trolling_ -证据: _一个或多个链接到触发消息(s)_ -CoC: _Sent_ -``` - -- 关于取消暂停的报告应该如下所示: - -``` -我已经从`@username`中删除了暂停。 我向他们送交了《行为守则》。 就在今天,他们认识到他们被中止,并为他们的所作所为道歉。 -``` - -- 根据犯罪者的答复,调解人将决定是否取消对违规骆驼的暂停。 如果它们似乎是尊重的,也是阿波利萨里奥阵线的成员,主持人可以取消暂停。 作为一项政策,调解人将在这一过程中表现出礼貌,不管冒犯的骆驼有多么糟糕。 如果他们不尊重或不愿意接受CoC,就应该在中止后禁止Discord服务器。 使用与上面相同的摘要,但将“暂停:”改为“禁止:”。 - -3. **如何禁止和/或解除封禁** - -- 为了禁止某人,右键点击他们的用户名/个人资料图片并选择“封禁 ". 您将被赋予删除之前消息的选项 - 选择"不要删除任何", 由于这些信息应作为历史记录继续存在。 -- 如果你决定禁止某人,这意味着他们不愿意遵守我们的《行为守则》。 因此,取消对一个露营的禁令很少发生。 然而,如果有必要,您可以点击服务器名称,选择“服务器设置”来做到这一点。 选择"禁止",选择您想要取消禁止的用户,并单击"撤销禁止"。 - -Discord 禁止是全局性的 - 您不能从指定的频道禁止用户,只能从整个服务器上禁止用户。 - -4. **正在删除消息** 版主有能力删除Discord上的消息。 他们只能在四种非常具体的情况下行使这种能力: - -- 有人张贴了色情或生动暴力的图像。 -- 有人张贴了一个恶意的链接或代码,可能伤害点击它的其他骆驼。 -- 有人把大量的垃圾信息淹没在聊天室中,达到了极大的程度(通常涉及机器人),使聊天完全无法使用。 -- 有人发布了广告和/或自促的消息/图像(社交媒体)。 - -在所有其他情况下,即使是行为守则遭到违反的情况下,主持人也不应删除这一信息,因为这些都是一个重要的历史记录。 当您确实删除一条消息时,请确保您先进行屏幕截图! 屏幕截图可以在 #mod-log 通道登录, 但在 #activity-log 中,只需说证据因敏感内容而被删除就足够了。 注:如果信息含有非法截取的材料, 复制消息链接 - 提供该消息链接到 @raisedadead 转发到 Discord 的信任和安全团队。 - -5. **不要使用 @everyone 或 @here** 在任何情况下不要使用 @everyone 或 @here ! 聊天室的每一个人都会收到通知。 在某些情况下,有数万人受到影响。 相反,如果你想让人们看到一个公告,你可以把它固定在频道上,允许每个人阅读它。 - -6. **不要威胁要封禁或暂停** 如果骆驼破坏了行为守则。 不要威胁禁止或暂停他们,也不要公开警告他们。 相反,与他们私下交谈,或向他们发送一份管理文件并签发中止令(根据上述协议)。 该频道中没有其他人需要知道您已经封禁/暂停了这个人——如果他们想要跟上这个信息,他们可以在 #activity-log 频道中查看摘要。 如果违反行为显然是无意的并且不需要暂停或私下对话, 让冒犯的摄像头知道他/她的行动,而不会被当作警告。 例如: - -- 放置一堵要求帮助的代码墙 - - 版主:@username 请使用 Codepen 或 Pastebin 发布大量代码。 - -- 或者如果你真的必须解释原因: - - 版主:@username 请使用 Codepen 或 Pastebin 发布大量代码。 因为它扰乱了每个人的聊天,并且可以根据我们的《行为守则》被视为垃圾信息。 - -- 轻微和无意违反行为守则 - - 主持人:这是一个友好的提醒,让每个人都遵循行为守则:https://code-of-conduct.freecodecamp.org/。 - -7. **不要担心自己是版主** 不要看到自己在社区上面。 你是社区。 而且社区相信你可以帮助保护我们大家分享的稀有东西——一个新开发者的 _欢迎_ 位置。 如果你敢于成为版主,你周围的人可能会感觉不舒服。 正如人们可能对一名警官感到不安的那样,即使他们没有做任何错事。 这只是人性的。 - -8. **不要反驳其他版主** 如果您不同意版主的行动。 与他们私下交谈或在#mod-聊天频道中提升它。 永远不要推翻禁令,决不要公开违背其他主持人。 相反,在模式聊天中进行冷却式的讨论,并使主持人相信,他们自己应当扭转禁令或改变他们的观点。 记住:我们都在同一团队。 我们想要使主持人的作用更加光明并提出一个统一的战线。 - -9. **与其他版主** 我们只有版主空间。 使用它! 如果你对如何处理某个情势感到不舒服,请其他版主帮忙。 如果你认为应该讨论一些问题,就这样做。 你是团队成员,我们珍视每个团队成员的投入! 即使你完全不同意这些准则或行为守则中的任何内容! - -10. **暂时不活动** 如果你因休假而暂时不活跃作为版主, 疾病或任何其他原因,请务必在 #mod-chet 渠道让其他人知道。 因此,我们知道我们是否可以指望您在服务器上定期活跃。 - -# 如何成为版主 - -如果你在一段时间内不断地帮助社区中的人们,我们的版主团队将最终注意到这一点。 并且其中一人会提到你可能是 [我们的工作人员](https://forum.freecodecamp.org/g/Team) 的版主。 没有成为版主的捷径。 - -如果您获得批准,我们将在 [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators)、 [论坛](https://forum.freecodecamp.org/g/moderators)等上将您加入我们的版主团队。 - -> [!注意] > **用于 GitHub :** 在您被接受为版主后,您将收到一个 Github 版本库邀请。 您需要走向 [免费CodeCamp GitHub 组织邀请](https://github.com/orgs/freeCodeCamp/invitation) 才能接受邀请。 为了让您能够在我们的某些仓库上写入访问权限,我们需要这样做。 - -# 我们如何退休非活动版主 - -请注意,我们将经常移除我们认为不活跃的模组。 当我们这样做时,我们将发出以下信息: - -> 这是一个通知您的标准消息, 由于你最近似乎没有成为活跃的版主,我们正在把你从我们的版主团队中删除。 我们深切感谢你过去的帮助。 - -> 如果你认为我们这样做是错误的,或者一旦你准备好返回并做出更多贡献, 只是回复此消息,让我知道。 - -# 我们的贡献者房间是如何工作的 - -任何人都欢迎来到我们Discord 上的 [贡献者房间](https://discord.gg/KVUmVXA)。 它是为以各种方式为我们社区作出贡献的主持人和其他骆驼骑手指定的聊天室。 包括通过学习小组。 - -我们的假设是,贡献者将在这个房间中阅读任何直接提到他们的内容,使用 `@username`。 其他一切都是可选的。 但可以随意阅读任何在那里的帖子并进行互动。 - -# 与律师交易 - -想要以某种方式与免费CodeCamp合作或共同品牌的组织可能会与您联系。 一旦你认识到这是他们之后的事情,请停止与他们交谈,然后告诉他们电子邮件quincy@freecodecamp.org。 他一直得到这样的建议,并且能够最好地判断这种关系对我们社会是否值得(而且很少有这种关系)。 - -# 处理(精神)健康调查 - -您可能会遇到使用者正在寻求医疗咨询或正在处理心理健康问题并寻求支助的情况。 作为一项政策,你应该避免私下谈论这些问题。 如果某个时候的情况反映回到协调委员会,我们希望将对话记录在案。 明确我们不是医疗专业人员,您鼓励用户寻找专业帮助。 尽管有时可能很难,但避免提供任何建议或建议,只是指向用户提供专业帮助! - -如果发生在Discord:挂起用户。 这不是为了惩罚他们! 暂停用户将创建一个只有用户和团队可以访问的私人频道。 这将以几种方式使用户和fCC都受益: - -- 用户有些隐私保障 -- 公共聊天不再中断。 -- 其他团队成员可以进入。如果你不舒服地处理自己的情况 - -> [!注意] 暂停用户自动给他们一个关于阅读我们的《行为守则》的消息。 请确保您通知用户,您已暂停他们以给他们一些隐私,并且他们不会受到惩罚。 这是非常重要的! 我们绝对想要避免给用户一种想法,即他们因外出寻求帮助而受到惩罚! - -如果您认为用户能够重新加入社区,请右键点击私人频道并复制ID。 将以下消息放入#mod-log中: - -> 医疗咨询: - -之后,您可以像通常那样从用户中移除暂停。 - -有用的 URL: - -http://www.suicide.org/international-suicide-hotlines.html - -# 关于言论自由的笔记 - -有时,人们会捍卫他们所说的“自由言论”冒犯或煽动性的东西。 - -这种XKCD漫画完美地概括了大多数社区对言论自由的想法。 所以,如果有人为他们说的“自由发言”辩护,就会自由地向他们发送。 - -
    - -感谢您阅读这一点,并感谢您帮助开发者社区! diff --git a/docs/i18n/Chinese/flight-manuals/using-reply-templates.md b/docs/i18n/Chinese/flight-manuals/using-reply-templates.md deleted file mode 100644 index f29e79f080..0000000000 --- a/docs/i18n/Chinese/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# 使用回复模板 - -这些是您在审查合并请求和尝试问题时可以使用的一些标准回复模板。 - -> 您可以使用 GitHub 内置的 [**保存的回复**](https://github.com/settings/replies/) 功能或使用下面的功能。 - -### 谢谢你 - -```markdown -感谢您对页面的贡献! :thumbs_up: -我们很高兴接受这些更改,并期待着未来的贡献。 🎉 -``` - -### 谢谢你和组合。 - -> 感谢并鼓励首次提供捐助者。 - -```markdown -您好 @username 恭喜您的第一个拉取请求 (PR) ! :party_poper: - -谢谢您对页面的贡献! :thumbs_up: -我们很高兴接受这些更改,并期待着未来的贡献。 📝 -``` - -### 构建错误 - -```markdown -您好 @username - -我们希望能够合并您的更改,但看起来与 Travis CI 构建有一个错误。 :waring_selector: - -一旦您解决了这些问题,我们将能够审阅您的 PR 并合并它。 :smiling_fac_with_smiling_eyes: - ----- - -> 自由参考[撰写文章的风格指南](https://github)。 在正确格式化一篇文章的时候, 这个repo的番茄/免费CodeCamp/免费CodeCamp#article-title) 可以正确格式化你的 Travis CI 构建通行证。 :whit_heavy_check_mark: -> -> 另外,它在 GitHub 上编写您在创建 PR时所作更改的简要说明。 📝 -``` - -### 正在同步Fork - -> 当PR 不是最新的 `master` 分支。 - -``````markdown -您好 @username - -我们希望能够合并您的更改,但看起来与 Travis CI 构建有一个错误。 ⚠️ - -```bash -错误:ENOTDIR: 不是一个目录,打开 'src/pages/java/data-abastraction/index.md' -`````` - -这个特定的错误不是由您的文件引起的,而是由于将错误代码合并到 `主` 分支而造成的旧错误。 自那时以来,这个问题已得到解决。 - -要传递这个版本,您必须同步来自 `FreeCodeCamp/freeCodeCodeCamp` 仓库的 `主` 分支的最新更改。 - -使用命令行,您可以通过以下三个简单步骤做到这一点: - -```bash -git 远程添加上游流的 git://github.com/freeCodeCamp/freeCodeCamp.git - -git 获取上游流 - -git 拉取上游流管理员 -``` - -如果您正在使用GUI,您可以只需 `添加一个新的遥控器...` 并使用 `github.com/freeCodeCamp/freeCodeCamp.git` 上面的链接。 - -一旦你同步你的分叉并通过构建,我们将能够审核并合并它。 😊 - ---- - -> 请随时参考GitHub 上的 [同步一个Fork](https://help.github.com/articles/syncing-a-fork/) 文章,以便更深入地了解如何跟上上游版本库更新你的叉。 🔄 -> -> 另外,它在 GitHub 上的良好做法是在创建PR时对您的更改作简要说明。 📝 -`````` - -### 合并冲突 - -> 当PR 合并冲突需要解决时。 - -```markdown -Hey @username - -我们希望能够合并你的更改,但看起来你有一些合并冲突。 :waring_selector: - -一旦您解决了这些冲突,我们将能够审阅您的 PR 并合并它。 :smiling_fac_with_smiling_eyes: - ----- - -> 如果你不熟悉合并冲突进程 请随时查看GitHub的指南["解决合并冲突"](https://help)。 ithub.com/articles/resolving-a-merge-conflict on-github/)。 :magnifying_glass_tilted_left: -> -> 另外,GitHub 上的良好做法是在创建PR时对您的更改编写简要说明。 📝 -`````` -1 如果第一个时间贡献者发生合并冲突,维护者将为他们解决冲突。 - -### Duplicate - -> 当PR 是重复或重复时。 - -```markdown -你好 @username - -这篇文章早些时候已经接受了类似的更改,很抱歉。 :downcast_fac_with_sweat: - -如果你觉得要添加更多内容,请随时打开一个新的 PR。 - -再次谢谢! :smiling_fac_with_smiling_eyes: - ----- - -> 如果你有任何疑问,请随时通过 [Gitter](https://gitter.im/FreeCodeCamp/Contributors)或通过下面的评论进行联系。 💬 -``` - -### 关闭无效的合并请求 - -> 当PR 无效 - -```markdown -您好 @username - -您没有添加任何内容,我们将关闭此PR 并将其标记为“无效”。 :downcast_fac_with_sweat: - -自由地打开另一个PR ! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Chinese/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Chinese/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Chinese/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

    https://amplify.nginx.com

    -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Chinese/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Chinese/how-to-catch-outgoing-emails-locally.md index 85b0bd591f..397ea3382a 100644 --- a/docs/i18n/Chinese/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Chinese/how-to-catch-outgoing-emails-locally.md @@ -1,84 +1,67 @@ -> **注意:** 这是一个 **可选的** 步骤,并且仅在处理电子邮件工作流时需要 +> **Note:** This is an **optional** step and is required only when working with email workflows -## 一. 导言 +## Introduction -一些电子邮件工作流,如更新用户的电子邮件,需要后端api-server发送发送电子邮件。 一个替代使用电子邮件服务提供商发送实际邮件信息的替代办法 Mailhog 是电子邮件测试的开发者工具,它将捕获您的FreeCodeCamp实例发送的邮件。 +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## 正在安装 MailHog +## Installing MailHog -MailHog可以在 macOS, Windows 和 Linux 上安装。 +MailHog can be installed on macOS, Windows and Linux. -- [一. 导言](#introduction) -- [正在安装 MailHog](#installing-mailhog) - - [在 macOS 上安装 MailHog。](#installing-mailhog-on-macos) - - [在 Windows 上安装 MailHog](#installing-mailhog-on-windows) - - [在 Linux 上安装 MailHog。](#installing-mailhog-on-linux) -- [使用 MailHog](#using-mailhog) -- [有用的链接](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### 在 macOS 上安装 MailHog。 +### Installing MailHog on macOS -使用 [自制程序](https://brew.sh/) 在 macOS 上安装 MailHog: +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash -酿造安装mailhog -酿造服务开始邮件hog。 +brew install mailhog +brew services start mailhog ``` -上述命令将在后台启动邮件钩子服务。 +The above commands will start a mailhog service in the background. -安装完成后,您可以使用 MailHog 启动 +When the installation completes, you can start [using MailHog](#using-mailhog). -。

    +### Installing MailHog on Windows +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -### 在 Windows 上安装 MailHog +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -从 [MailHog的官方存储库](https://github.com/mailhog/MailHog/releases) 下载最新版本的 MailHog。 定位并点击您的 Windows 版本 (32 或64 位) 的链接,一个 .exe 文件将下载到您的计算机。 +Start [using MailHog](#using-mailhog). -下载完成后,点击打开文件。 可能出现了 Windows 防火墙通知,请求访问 MailHog的权限。 标准的 Windows 命令行提示将打开,一旦获得防火墙访问许可,MailHog将在那里运行。 - -关闭命令提示窗口以关闭 MailHog。 若要再次启动 MailHog,请点击MailHog可执行文件 (。)。 (xe) 最初下载的文件 - 无需下载新的 MailHog安装文件。 - -使用 MailHog 启动 。

    - - - -### 在 Linux 上安装 MailHog。 - -首先,安装 [升级](https://golang.org)。 - -运行以下命令,在基于 Debian的系统上安装 GO,如Ubuntu 和 Linux Mint 。 +### Installing MailHog on Linux +First, install [Go](https://golang.org). +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` - -运行以下命令,在基于 RPM 的系统上安装GO,如CentOS、Fedora、Red Hat Linux 等。 - - +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` - -或者,运行下面的命令来安装GO。 - - +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` - -现在设置下面命令的路径。 - - +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile @@ -86,10 +69,7 @@ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile source ~/.profile ``` - -最后,输入下面的命令来安装和运行 MailHog。 - - +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -97,29 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` +Start [using MailHog](#using-mailhog). -使用 MailHog 启动 。

    +## Using MailHog +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. +![MailHog Screenshot 1](images/mailhog/1.jpg) -## 使用 MailHog +Emails sent by your freeCodeCamp installation will appear as below -打开一个新的浏览器标签页或窗口,并导航到 [http://localhost:8025](http://localhost:8025) 来打开您的 MailHog收件箱,当MailHog安装完成并且正在运行 MailHog。 收件箱将显示类似于下面的屏幕截图。 +![MailHog Screenshot 2](images/mailhog/2.jpg) -![MailHog屏幕截图 1](images/mailhog/1.jpg) +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -您的免费CodeCamp安装发送的电子邮件将显示在下方: +![MailHog Screenshot 3](images/mailhog/3.jpg) -![MailHog屏幕截图 2](images/mailhog/2.jpg) +All links in the email should be clickable and resolve to their URL. -当您打开指定的电子邮件时,允许您查看纯文本或源内容的两个选项卡。 确保下面选择纯文本标签。 +## Useful Links -![MailHog屏幕截图 3](images/mailhog/3.jpg) - -电子邮件中的所有链接都应该可以点击并解决到他们的URL。 - - - -## 有用的链接 - -- 查看 [MailHog](https://github.com/mailhog/MailHog) 存储库以获取更多与 MailHog相关的信息。 关于自定义MailHog配置的额外信息也可用。 +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Chinese/how-to-help-with-video-challenges.md b/docs/i18n/Chinese/how-to-help-with-video-challenges.md index ea94f18675..0724aaef02 100644 --- a/docs/i18n/Chinese/how-to-help-with-video-challenges.md +++ b/docs/i18n/Chinese/how-to-help-with-video-challenges.md @@ -1,199 +1,199 @@ -# 如何帮助应对视频挑战 +# How to help with video challenges -视频挑战是免费CodeCamp课程中一种新型挑战。 +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -视频挑战是关于某一特定主题的长篇视频课程的一小部分。 视频挑战页面包含YouTube视频。 每个挑战页面都有一个与视频相关的多项选择问题。 在课程中继续下一个视频挑战之前,用户必须正确回答这个问题。 +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -视频挑战页面是由免费CodeCamp团队成员创建的。 YouTube视频也由免费CodeCamp团队成员上传。 许多视频挑战还没有与此相关的问题。 +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -您可以通过创建与视频部分相关的多个选择问题以及为视频挑战将问题添加到Markdown文件中来提供帮助。 +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## 挑战模板 +## Challenge Template -下面是挑战Markdown 文件的模板。 +Below is a template of what the challenge markdown files look like. ````md --- -id: 唯一标识符 (字母数字, MongoDB_id +id: Unique identifier (alphanumerical, MongoDB_id) title: Challenge Title challengeType: 11 -video Id: 'YouTube video Id for video challenge' --- +videoId: 'YouTube videoId for video challenge' +--- -## 描述 +## Description
    -可选描述,带有与视频有关的有用信息。 +An optional description with helpful information related to the video.
    -## 测试 +## Tests
    ```yml -问题: +question: text: 'Question' - 答案: - - '答案 On' - - '答案两' - - '答案三' - 解决方法: 3 + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
    ```` -## 为视频挑战创建问题 +## Creating questions for video challenges -### 访问视频挑战Markdown 文件 +### Access the video challenge markdown files -您可以在以下课程中找到视频挑战的 markdown 文件: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [与Python Course的数据分析](https://github)。 om/freeCodeCamp/freeCodeCamp/tree/master/courum/challenges/english/08/data-analysis-with-Python/data-analysis-with-python-course) -- [TensorFlow 2.0 Course](https://github)。 om/freeCodeCamp/freeCodeCamp/tree/master/curcourum/challenges/english/11-mechanise-learning-with-python/tensorflow) -- [数字课程](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/courum/challenges/english/08-data-analysis-with-python/numpy) -- [如何神经网络工作课程](https://github.com/freeCodeCamp/tree/master/courum/challenges/english/ 111-mechande-learning-with-python/how -neural-networks-work) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) +- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -从上述选项 +Pick a challenge markdown file from the options above. -### Skim through the video associated with the challenge and create a mutiple option question +### Skim through the video associated with the challenge and create a mutiple choice question -First, seek the video Id. +First, find the videoId. -例如,在视频挑战标记文件页眉的下面代码中,视频Id 是“nVAaxZ34khk”。 关于GitHub,信息应以表格格式排列。 +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d title: Data Analysis 示例A challengeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -接下来,使用该视频ID访问YouTube视频。 视频的 url 将是: -https://www.youtube om/watch?v=[videoId] (将视频Id 添加到没有方括号的URL) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -在上面的例子中,网址是 https://www。 outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -用该视频Id Skim YouTube视频,并想到一个基于视频内容的多个选择问题。 +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### 添加问题到Markdown文件 +### Add the question to the markdown file -您可以在本地或直接通过 GitHub 接口添加问题。 要在本地添加问题,您需要[本地设置免费CodeCamp](howto setup-freecodecamp-locally.md)。 您也可以在 GitHub 上找到文件,然后点击编辑按钮在您的浏览器中添加问题。 +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -如果一个问题尚未添加到某个视频挑战中, 它将有以下默认问题: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -问题: - 文本: | - 问题 - 答案: +question: + text: | + Question + answers: - | - 一个 + one - | - 两个 + two - | - 三个 - 解决方法: 3 + three + solution: 3 ``` -用你的问题更新“问题”一词。 用可能的答案更新“一个”、“两个”和“三个”。 请务必更新答案正确的解决方案号。 您可以使用相同的格式添加更多可能的答案。 问题和答案可以用引号包围。 +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### 使用 Markdown 格式化您的问题 +#### Use markdown to format your question -问题中的文本被解析为Markdown。 确保正确格式化的最简单方式是用 `文本开始提问:|`如这样: +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -问题: - 文本: | - 问题 +question: + text: | + Question ``` -然后您需要确保您的问题在新的行上,并且缩进了一个级别超过 `文本:|`。 +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -同样的方法可以用来回答整个问题。 +The same approach can be used for the answers, so the entire question becomes ```yml -问题: - 文本: | - 问题 - 答案: +question: + text: | + Question + answers: - | - 第一个答案 + First answer - | - 第二个 + Second - | - 第三个 - 解决方案: 2 + Third + solution: 2 ``` -请确保每个答案都是合理的,但只有一个正确的答案。 +Make sure each answer is plausible but there is only one correct answer. -#### 使用 HTML +#### Use of HTML -问题和答案可以包含某些HTML标签,如 `
    ` 作为新行。 当问题无法在没有它们的情况下表达时,应该少量使用HTML标记。 +Questions and answers can contain certain HTML tags like `
    ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### 提问示例 +### Question examples -#### 没有HTML的示例 +#### Examples without HTML ````yml -问题: - 文本: | - 此 JavaScript 代码日志到控制台是什么? +question: + text: | + What does this JavaScript code log to the console? ```js console.log('hello world'); ```` - 选择答案! - 回答: - - | 你好 *世界* - - | **你好** 世界 - - | 你好世界 解决方案: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` -``yml -问题: +````yml +question: text: | - 运行此代码后打印出来的内容: + What will print out after running this code: ```py - 宽度 = 15 - 高度 = 12。 - 打印(height/3) + width = 15 + height = 12.0 + print(height/3) ```` - 回答: + answers: - | 39 - | 4 - | 4.0 - | 5.0 - - | 5 解决方案: 3 + - | 5 solution: 3 ```` -#### HTML +#### Example with HTML ```yml -问题的示例: - text:| - 运行此代码后会打印什么: -
    宽度= 15
    高度 = 12。
    打印(height/3)
    - 答案: +question: + text: | + What will print out after running this code: +
    width = 15
    height = 12.0
    print(height/3)
    + answers: - | 39 - - | - 4 - | - | 4 - | - 5. + 4.0 + - | + 5.0 - | 5 - 解决方法: 3 + solution: 3 ```` -最后一个例子表明,HTML可以使用,但它不能像没有它的版本那样可读。 +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -更多的示例,您可以查看下一个视频课程的 markdown 文件。 所有挑战都已经有问题: [Python适用于每个人课程](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## 打开拉取请求 +## Open a pull request -在创建一个或多个问题后,您可以将更改提交给一个新分支并 [打开一个拉取请求](how-to-open-a-pull-request.md)。 +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Chinese/how-to-open-a-pull-request.md b/docs/i18n/Chinese/how-to-open-a-pull-request.md index b371e52f16..2729cd6237 100644 --- a/docs/i18n/Chinese/how-to-open-a-pull-request.md +++ b/docs/i18n/Chinese/how-to-open-a-pull-request.md @@ -1,179 +1,179 @@ -# 如何打开合并请求 (PR) +# How to open a Pull Request (PR) -一个拉取请求使您能够将您在 GitHub 上的分叉中的更改发送到FreeCodeCodeCamp.org的主仓库中。 一旦您完成了代码的更改或编码挑战,您应该遵循这些指南来发送一个 PR。 +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## 准备一个好的 PR 标题 +## Prepare a good PR title -我们建议使用 [常规标题和消息](https://www.conventionalcommits.org/) 来提交和拉取请求。 公约有以下形式: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([可选范围(s)]): ` +> `([optional scope(s)]): ` > -> 例如: +> For example: > -> `修复(学习):在循环挑战的同时进行此项测试......` +> `fix(learn): tests for the do...while loop challenge` -当打开合并请求(PR),您可以使用下面的方法来确定类型、范围(可选)和描述。 +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**类型:** +**Type:** -| 类型 | 何时选择 | -|:---- |:--------------------- | -| 修复 | 已更改或更新/改进功能、测试、课本等。 | -| feat | 仅当您正在添加新功能、测试等。 | -| 合唱团 | 与课程的代码、测试或顶点无关的更改。 | -| 文档 | 更改为 `/docs` 目录或贡献指南等。 | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**范围:** +**Scope:** -您可以从 [此标签列表](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope) 中选择一个范围。 +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). **Description:** -保持简短(小于30个字符),您可以在 PR 描述框和评论中添加更多信息。 +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -优秀PRs标题的一些例子包括: +Some examples of good PRs titles would be: -- `修复(a11): 改进搜索栏对比度` -- `功能:添加更多测试到 html 和 css 挑战` -- `修复 (api,client): 防止提交窗体时发生CORS 错误` -- `docs(i18n):本地设置的中文翻译` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## 提出拉取请求 +## Proposing a Pull Request -1. 一旦编辑完成,您将被提示在您的 GitHub 页面上创建一个拉取请求。 +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![图像 - 比较GitHub 上的拉取请求](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. 默认情况下,所有合并请求都应该与免费CodeCamp的主仓库相对应, `主分支`。 +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - 请确保您的基叉已设置为免费CodeCamp/免费CodeCamp 在提升合并请求。 + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![图像 - 在提出拉取请求时比较叉数](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. 将您的分支拉取请求提交给FreeCodeCamp的 `主` 分支。 +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. 在您的 PR 正文中包含一个更详细的您所做的更改及其原因。 +4. In the body of your PR include a more detailed summary of the changes you made and why. - - 您将收到拉请求模板。 这是一个您在打开拉取请求之前应该遵循的核对表。 + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - 填写你认为合适的详细信息。 此信息将被审核,审核者将决定您的拉取请求是否被接受。 + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - 如果PR 是为了解决现有的 GitHub 问题,那么,在 结束时,您的 PR's 描述实体, 使用关键字 _关闭了有问题号的_ 到 [自动关闭了该问题,如果接受并合并了](https://help.github.com/en/articles/closing-issues-using-keywords)。 + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > 示例: `关闭 #123` 将关闭问题 123 + > Example: `Closes #123` will close issue 123 -5. 注明是否在网站的本地副本上进行过测试。 +5. Indicate if you have tested on a local copy of the site or not. - 在进行不仅仅是编辑文档或挑战描述等文本内容的更改时,这一点非常重要。 需要本地测试的更改实例包括JavaScript、CSS 或 HTML 可能改变页面功能或布局。 + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## 对合并请求的反馈 +## Feedback on pull requests -> 恭喜! :tada: 即将创建一个PR 并非常感谢花费时间做出贡献。 +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -我们的版主现在看看看并留下反馈。 请耐心看看同伴版主并尊重他们的时间。 所有合并请求都在适当时候得到审查。 +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -如果您需要任何帮助,请在 [贡献者聊天室](https://gitter.im/FreeCodeCamp/Contributors)中讨论,我们非常乐意帮助您。 +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!提示] 如果您想要提交更多的拉取请求。 我们建议您阅读 [做出更改并同步](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) 指南,以避免必须删除您的叉。 +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## 在合并请求上冲突 +## Conflicts on a pull request -可能会发生冲突,因为许多贡献者在仓库中工作,并且更改可能会破坏您正在等待审查和合并的PR 。 +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -你可能经常不需要重置基地,因为我们会挤掉所有的提交, 但是,如果在此请求重置基础,这是你应该做的。 +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### 通常错误修复和功能 +### For usual bug fixes and features When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. 重置您的本地副本: +1. Rebase your local copy: ```console - git 结帐 - git pull --rebase 上游管理员 + git checkout + git pull --rebase upstream master ``` -2. 解决任何冲突并添加/编辑提交 +2. Resolve any conflicts and add / edit commits ```console - # - git 添加 . - git 提交 -m "chore: 解决冲突" + # Either + git add . + git commit -m "chore: resolve conflicts" - # 或 - git 添加 . - git 提交 --revise --no-edit + # Or + git add . + git commit --amend --no-edit ``` -3. 将您的更改推回到PR +3. Push back your changes to the PR ```console - git 推送--force 来源 + git push --force origin ``` -### 即将开设的课程和功能 +### For upcoming curriculum and features -当您正在为我们即将上来的课程 `下一个*` 分支开发功能时,您已经做了一次棋盘选择: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. 请确保您的上游与您的本地同步: +1. Make sure your upstream comes in sync with your local: ```console - git 签出master - git 获取--all --prune - git 签出下一个 python-project - git 重置 --hard upstream/next python-projects + git checkout master + git fetch --all --prune + git checkout next-python-projects + git reset --hard upstream/next-python-projects ``` -2. 备份备份 +2. Take backup - a. 备份后删除您的本地分支(如果您仍然有本地分支): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console - git 结帐 + git checkout - # 示例: - git 结帐功能/附加numpy-video-question + # example: + # git checkout feat/add-numpy-video-question - git 结帐-b + git checkout -b - # 示例: - # git 结帐-b 备份功能/附加numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - b. 会议文件。 或者仅备份您的 pr 分支(如果您没有本地分支的话): + b. Or just a backup of your pr branch (if you do not have it locally): ```console - git 结帐-b origin/ + git checkout -b origin/ - # 例如: - # git 结帐-b b备份功能/附加numpy-video question origin/feate/addnumpy-video question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. 开始时有一个干净的套件: +4. Start off with a clean slate: ```console - git 签出 -b 下一个 python-projects - git cherry-self + git checkout -b next-python-projects + git cherry-pick ``` -5. 解决任何冲突并清理,安装运行测试 +5. Resolve any conflicts, and cleanup, install run tests ```console - npm 运行清洁 + npm run clean npm ci - npm 运行测试:course --superblock= + npm run test:curriculum --superblock= - # 例如: + # example: - # npm 运行测试:course --superblock=python-for everyone + # npm run test:curriculum --superblock=python-for-everybody ``` -6. 如果一切看起来都很好,请回到PR +6. If everything looks good push back to the PR ```console - git 推送--force 来源 + git push --force origin ``` diff --git a/docs/i18n/Chinese/how-to-setup-freecodecamp-locally.md b/docs/i18n/Chinese/how-to-setup-freecodecamp-locally.md index e8819b017a..619db733cf 100644 --- a/docs/i18n/Chinese/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Chinese/how-to-setup-freecodecamp-locally.md @@ -1,546 +1,546 @@ -遵循这些准则在您的系统上本地建立免费CodeCamp。 如果您想要定期捐款,这将是强烈推荐的。 +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -对于一些贡献的工作流,您需要在本地运行免费CodeCamp。 例如,预览编码挑战或调试和修复编解码器中的bug。 +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!提示] 如果您不想在本地建立免费CodeCamp,请使用 Gitpod,免费的在线开发环境。 +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![在 Gitpod 中打开](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (在您的浏览器中为FreeCodeCodeCamp启动一个现成的开发环境。) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## 准备您的本地机 +### How to prepare your local machine -首先为您的操作系统安装必备软件。 +Start by installing the prerequisite software for your operating system. -我们主要支持开发 **\*nix** 系统。 我们的工作人员和社区贡献者经常使用安装在 Ubuntu 和 macOS 上的工具与代码库合作。 +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -我们还通过 WSL 2 支持Windows 10,您可以通过 [阅读本指南](/how-to-setup-wsl) 来准备它。 +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -一些社区成员还在Windows 10上使用Git for Windows (Git Bash)开发,以及安装在Windows上的其他工具。 我们目前对这种设置没有官方支持,我们建议使用WSL2。 +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**前提条件:** +**Prerequisites:** -| 前提条件: | 版本 | 注 | -| ---------------------------------------------------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12.x` | [LTS 计划](https://github.com/nodejs/Release#release-schedule) | -| npm (随后与节点捆绑) | `6.x` | 没有LTS版本,我们使用与节点LTS捆绑的版本 | -| [MongoDB 社区服务器](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [发布笔记](https://docs.mongodb.com/manual/release-notes/), 注意:我们目前在 `3.6`, 计划进行 [升级](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275) | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] 如果您有不同的版本,请安装推荐版本。 我们只能支持推荐版本的安装问题。 详情见 [故障排除](#troubleshooting)。 +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -如果Node.js已经安装在您的机器上,运行以下命令来验证版本: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console -节点-v +node -v npm -v ``` -> [!提示] 我们强烈建议更新上面列出的软件的最新稳定版本,也称为长期支持(LTS)版本。 +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -一旦安装了前提条件,您需要准备您的开发环境。 这对许多发展工作流来说是常见的,你只需要做一次这么做。 +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**按照这些步骤准备好您的发展环境:** +**Follow these steps to get your development environment ready:** -1. 如果您还没有安装 [Git](https://git-scm.com/) 或您最喜欢的 Git 客户端。 更新到最新版本;与您的操作系统捆绑的版本可能已经过时。 +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (可选但推荐) [为 GitHub 设置一个 SSH 密钥](https://help.github.com/articles/generating-an-ssh-key/)。 +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. 安装您选择的代码编辑器。 +3. Install a code editor of your choice. - 我们强烈建议使用 [Visual Studio 代码](https://code.visualstudio.com/) 或 [Atom](https://atom.io/)。 这些是巨大的、免费的和开源代码编辑器。 + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. 为您的代码编辑器设置行号。 +4. Set up linting for your code editor. - 您应该在您的编辑器中运行 [ESLint](http://eslint.org/docs/user-guide/integrations.html)并且它将突出任何不符合 [免费CodeCamp的 JavaScript 风格指南](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121) 的内容。 + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!提示] 请不要忽略任何行号错误。 They are meant to **help** you and to ensure a clean and simple codebase. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## 在 GitHub 上派生仓库 +## Fork the repository on GitHub -[Forcing](https://help.github.com/articles/about-forks/) 是你在GitHub 上获取你自己的 FreeCodeCamp的主要存储库 (a.k.a _repo_) 的一个步骤。 +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -这是非常重要的,因为它允许您在GitHub上使用您自己的免费CodeCamp, 或者下载 (克隆) 您的资源库在本地工作。 稍后,您将能够通过拉取请求(PR)从分叉中提取到主存储库。 +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] 主仓库在 `https://github.com/freeCodeCamp/freeCodeCode` 经常被称为 `上游的` 仓库. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> 您在 `https://github.com/YOUR_USER_NAME/freeCodeCamp` 的叉经常被称为 `来源` 资源库。 +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**按照这些步骤派生 `https://github.com/freeCodeCamp/freeCodeCodeCamp` 仓库:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. 转到GitHub上的免费CodeCamp仓库: [https://github.com/freeCodeCodeCamp/freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp) +1. Go to the freeCodeCamp repository on GitHub: -2. 点击接口右上角的“Fork”按钮([此处有更多详细信息](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. 当仓库被解压后,你将被带到你的免费CodeCamp 仓库的副本: `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
    - 如何派生GitHub 上的 FreeCodeCamp (screshot) + How to fork freeCodeCamp on GitHub (screenshot)
    - 如何在 GitHub 上派生免费CodeCamp + How to fork freeCodeCamp on GitHub
    -## 从GitHub 复制你的叉文件 +## Clone your fork from GitHub -[克隆](https://help.github.com/articles/cloning-a-repository/) 是您的位置 **下载** 从 `远程` 处下载的仓库副本,由您或其他人拥有。 In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -在本地机器上运行这些命令: +Run these commands on your local machine: -1. 在您的工程目录中打开终端/命令提示/Shell +1. Open a Terminal / Command Prompt / Shell in your projects directory - _i.e. : `/你的项目目录/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. 克隆你的免费CodeCamp,用你的 GitHub 用户名替换 `YOUR_USER_NAME` +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console - git 克隆--depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git + git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -这将下载整个免费CodeCamp 仓库到您的项目目录。 +This will download the entire freeCodeCamp repository to your projects directory. -注意: `--depth=1` 创建了一个你的叉中的浅色克隆,只有最近的历史/提交。 +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## 设置父同步 +## Set up syncing from parent -既然你已经下载了你的叉副本,你将需要设置一个 `上游` 远程到父仓库中。 +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[如前面提到的](#fork-the-repository-on-github), 主仓库已被调用 `上游的` 仓库. 你的叉被称为 `来源` 仓库。 +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -除了 `来源于` 仓库外,您还需要本地克隆的引用到 `上游` 存储库。 这是为了您可以同步主仓库中的更改,而无需重复叉和克隆。 +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. 将目录更改为新的 FreeCodeCamp 目录: +1. Change directory to the new freeCodeCamp directory: ```console - cd 免费CodeCamp + cd freeCodeCamp ``` -2. 添加远程引用到主FreeCodeCamp仓库: +2. Add a remote reference to the main freeCodeCamp repository: ```console - git 远程添加上游版 https://github.com/freeCodeCamp/freeCodeCamp.git + git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. 确保配置正确: +3. Ensure the configuration looks correct: ```console - git 远程-v + git remote -v ``` - 输出应该像下面这样: + The output should look something like below: ```console - 原点 https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - 原点 https://github.com/YOUR_USER_NAME/freeCodeCamp.git (pack) - 上游流https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - 上游流 https://github.com/freeCodeCamp/freeCodeCamp.git (pus) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## 在本地运行免费CodeCamp +## Running freeCodeCamp locally -现在你有一个本地的免费CodeCamp,你可以按照这些指示在本地运行。 这将允许您: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- 预览将出现在学习平台上的页面. -- 4. 关于与用户界面有关的问题和改进的工作。 -- 与应用程序服务器和客户端应用程序调试和修复问题。 +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -如果您确实遇到了问题,请先对您的问题进行网页搜索,并查看是否已经回答过了。 如果您找不到解决方案, 如果尚未报告,请搜索我们的 [GitHub 问题](https://github.com/freeCodeCamp/freeCodeCamp/issues) 页面并报告问题。 +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -一如既往, 觉得可以随时连接到我们的 [贡献者聊天室在 Gitter](https://gitter.im/FreeCodeCamp/Contributors) 或 [我们的 Discord 服务器](https://discord.gg/pFspAhS), 快速查询。 +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!提示] 如果你只是编辑文件,你可能会跳过本地免费运行CodeCamp。 例如,执行 `rebase`, 或解决 `合并` 冲突。 +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> 以后您总是可以返回说明的这一部分。 You should **only** skip this step if you do not need to run the apps on your machine. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [跳过进行更改](#making-changes-locally)。 +> [Skip to making changes](#making-changes-locally). -### 配置依赖项 +### Configuring dependencies -#### 第 1 步:设置环境变量文件 +#### Step 1: Set up the environment variable file -默认 API 密钥和环境变量存储在文件 `sample.env` 中。 此文件需要复制到一个名为 `.env` 的新文件,该文件是在安装过程中动态访问的。 +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# 创建一个 "sample.env" 的副本,并命名它".env"。 -# 用必要的 API 密钥和密钥填充它: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp 样本。 nv .env +cp sample.env .env # Windows -复制 sample.env .env +copy sample.env .env ``` -`.env` 文件中的密钥 _并不需要更改_ 才能本地运行应用程序。 您可以保留从 `sample.env` 复制的默认值。 +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!提示] 如果您想要使用像Auth0 或 Algolia 这样的服务,请记住。 您必须为这些服务获取您自己的 API 密钥,并相应地在 `中编辑条目。 nv` 文件。 +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### 步骤 2: 安装依赖关系 +#### Step 2: Install dependencies -此步骤将安装应用程序运行所需的依赖关系: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### 步骤 3: 启动 MongoDB 并种子数据库 +#### Step 3: Start MongoDB and seed the database -在本地运行应用程序之前,您需要启动 MongoDB 服务。 +Before you can run the application locally, you will need to start the MongoDB service. -> [!注意] 除非您在 MongoDB 中运行的设置不同于默认, 在 `中存储为 MONGOHQ_URL` 值的 URL。 nv 文件应该正常工作。 如果您正在使用自定义配置,请根据需要修改此值。 +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -在 MongoDB 服务器单独的终端中启动: +Start the MongoDB server in a separate terminal: -- 在 macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- 在 Windows上,您必须指定 `怪物` 双进制的完整路径 +- On Windows, you must specify the full path to the `mongod` binary ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - 请确保将 `3.6` 替换为您已安装的版本 + Make sure to replace `3.6` with the version you have installed -> [!提示] 您可以通过安装它作为后台服务来避免每次启动 MongoDB 。 您可以 [在他们为您的操作系统提供的文档中了解更多关于它的信息](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -接下来,让我们来做数据库的种子。 在这个步骤中,我们运行下面的命令,将MongoDB 服务器填充一些服务所需的初始数据集。 除其他外,其中包括一些计划。 +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -npm 运行种子 +npm run seed ``` -#### 步骤 4: 启动免费CodeCam客户端应用程序和 API 服务器 +#### Step 4: Start the freeCodeCamp client application and API server -您现在可以启动 API 服务器和客户端应用程序。 +You can now start up the API server and the client applications. ```console -npm 运行开发 +npm run develop ``` -这个单一命令将会发射所有的服务,包括API服务器和客户端应用程序供您使用。 +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!注意] 一旦准备就绪, 打开网页浏览器和 **访问 ** 如果应用程序加载,恭喜——你都已设置! 您现在有一个免费CodeCamp的整个学习平台在您的本地机器上运行。 +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!提示] API 服务器在 `http://localhost:3000` 上提供 API。 Gatsby应用在 `http://localhost:8000` 为客户端应用程序服务 +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> 如果您访问 ,您应该看到可用的 API。 +> If you visit you should see the available APIs. -## 使用本地用户登录 +## Sign in with a local user -您的本地设置自动将本地用户添加到数据库中。 点击 `登录` 按钮将自动认证您进入本地应用程序。 +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -然而,访问用户组合页面有点微妙。 在发展中, Gatsby接管了客户端页面的服务,因此在本地工作时,您将获得用户组合的 `404` 页面。 +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -只需点击 **"预览自定义 404 页面"** 按钮会将您转到正确的页面。 +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
    - 如何在本地工作时登录 (屏幕截图) + How to sign in when working locally (screenshot)
    - 如何在本地工作时登录 + How to sign in when working locally
    -## 在当地进行变化 +## Making changes locally -您现在可以对文件进行更改并将您的更改提交给您的本地叉。 +You can now make changes to files and commit your changes to your local clone of your fork. -跟随这些步骤: +Follow these steps: -1. 验证您在 `master` 分支: +1. Validate that you are on the `master` branch: ```console git status ``` - 您应该获得如下输出: + You should get an output like this: ```console - 对于分支管理员 - 您的分支是最新的,带有“原始/主” + On branch master + Your branch is up-to-date with 'origin/master'. - 无需提交,工作目录清理 + nothing to commit, working directory clean ``` - 如果您不在主目录,或者您的工作目录没有被清理,解决任何未处理的文件/提交和结帐 `主`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - git 结帐管理员 + git checkout master ``` -2. 从上游的FreeCodeCamp `master` 分支同步到您的本地主分支的最新更改: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!警告] 如果你有任何未完成的拉取请求是从你的叉的 `主` 分支提出的 在这一步结束时,你会丢失他们。 + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > 您应该确保您的拉取请求在执行此步骤之前由版主合并。 To avoid this scenario, you should **always** work on a branch other than the `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - 这个步骤 **将同步来自免费CodeCamp主要仓库的最新更改**。 重要的是您尽可能频繁地将分支重新建立在最新的 `上面/主` 上面,以避免以后发生冲突。 + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - 更新您本地的 FreeCodeCamp 上游版本库: + Update your local copy of the freeCodeCamp upstream repository: ```console - git 获取上流 + git fetch upstream ``` - 使用免费CodeCamp大师重置您的主分支: + Hard reset your master branch with the freeCodeCamp master: ```console - git 重置 --hard 上游/管理员 + git reset --hard upstream/master ``` - 将您的主分支推送到您的原始位置,在GitHub上的叉上有一个干净的历史记录: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console - git 推送原始主--force + git push origin master --force ``` - 您可以通过执行一个分支来验证您当前的主匹配的上游/主: + You can validate your current master matches the upstream/master by performing a diff: ```console - git diff 上游/大师 + git diff upstream/master ``` - 生成的输出应为空。 + The resulting output should be empty. -3. 创建新分支: +3. Create a fresh new branch: - 为每个问题单独工作一个分支有助于您保持本地工作副本干净。 你永远不应该在 `主` 上工作。 这将使您的免费CodeCamp的副本土生土长,并且您可能必须从新的克隆或叉开始。 + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - 检查您是否像以前解释过的那样在 `主` 上,并从那里关闭分支: + Check that you are on `master` as explained previously, and branch off from there: ```console - git 结帐-b fix/update-guide-for-xyz + git checkout -b fix/update-guide-for-xyz ``` - 您的分支名称应该以 `修复/`、 `feature/`、 `docs/`等开头。 避免在分支中使用问题编号。 保持其简短、有意义和独特性。 + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - 良好的分支名称的一些例子包括: + Some examples of good branch names are: ```md - 修复/update-challenges-for-action + fix/update-challenges-for-react fix/update-guide-for-html-css - fix/platform-bug-sign-in issues + fix/platform-bug-sign-in-issues feat/add-guide-article-for-javascript translate/add-spanish-basic-html ``` -4. 在您最喜欢的文本编辑器中编辑页面并使用代码。 +4. Edit pages and work on code in your favorite text editor. -5. 一旦您对更改感到满意,您应该可以在本地免费运行CodeCamp来预览更改。 +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. 请确保您修复任何错误并检查您更改的格式。 +6. Make sure you fix any errors and check the formatting of your changes. -7. 检查并确认您正在更新的文件: +7. Check and confirm the files you are updating: ```console git status ``` - 这将显示您编辑的 `未发布的` 文件列表。 + This should show a list of `unstaged` files that you have edited. ```console - 对于分支功能/文档 - 您的分支是最新的 "upstream/feate/documentation"。 + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - 更改尚未提交: - (使用 git add/rm ... 更新将要执行的内容 - (使用 "git 结帐" - ." 放弃工作目录中的更改) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - 修改: CONTRIBUTING。 d - 修改:docsor README.md - 修改:docs/howto setup-freecodecamp-local。 d - 修改: docs/how-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. 阶段更改并提交: +8. Stage the changes and make a commit: - 在这个步骤中,您只应标记您自己编辑或添加的文件。 您可以执行重置和解析文件,如果需要,您不打算更改这些文件。 + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console - git 添加路径到/my/changed/file.ext + git add path/to/my/changed/file.ext ``` - 或者您可以将所有 `未发布的` 文件添加到暂存区域: + Or you can add all the `unstaged` files to the staging area: ```console - git 添加 + git add . ``` - 只有移到暂存区域的文件才会在提交时被添加。 + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - 输出: + Output: ```console - 对于分支功能/文档 - 您的分支是最新的 "upstream/feate/documentation"。 + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - 要进行的更改: - (使用 "git reset HEAD ..." to unstage) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - 修改:CONTRIBUTING.md - 修改:docs/README.md - 修改:docs/howto setup-freecodecamp-locally.md - 修改:docs/how-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - 现在,您可以用这样一个简短的消息来提交您的更改: + Now, you can commit your changes with a short message like so: ```console - git 提交 -m "修复:我的短提交信息" + git commit -m "fix: my short commit message" ``` - 一些例子: + Some examples: ```md - 修复:为 Java 更新指南文章 - 循环 - 功能:为alexa 技能添加指南文章 + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - 可选: + Optional: - 我们强烈建议发表一项常规承诺信息。 这是一个好的做法,您将在一些受欢迎的开源仓库中看到。 作为开发者,这鼓励您遵循标准做法。 + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - 常规承诺信息的一些例子是: + Some examples of conventional commit messages are: ```md - 修复:更新 HTML 指南文章 - 修复:更新 Travis-CI 版本的脚本 - 功能:为JavaScript 钩子 - 文档添加文章:更新贡献指南 + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - 保持这些短篇幅不超过50个字符。 您总是可以在提交消息的描述中添加额外信息。 + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - 这不需要任何额外的时间,只需要一个非常规信息,例如“更新文件”或“添加索引.md” + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - 您可以了解更多关于您为什么要在这里使用常规提交 [](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits)。 + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. 如果您意识到需要编辑文件或在提交后更新提交消息,您可以在编辑文件后这样做: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - git 提交 --revision + git commit --amend ``` - 这将打开一个默认文本编辑器,如 `nano` or `vi` ,您可以在那里编辑提交的消息标题并添加/编辑描述。 + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. 接下来,你可以将你的更改推到你的叉中: +10. Next, you can push your changes to your fork: ```console - git 推送来源分支/名称到这里 + git push origin branch/name-here ``` -## 提出合并请求(PR) +## Proposing a Pull Request (PR) -在您提交了您的更改后,请在这里检查 [如何打开一个合并请求](how-to-open-a-pull-request.md)。 +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## 快速命令参考 +## Quick commands reference -快速引用您在本地工作时需要的命令。 +A quick reference to the commands that you will need when working locally. -| 命令 | description | -| ---------------------------------------------------------- | ---------------------------------- | -| `npm ci` | 安装/重新安装所有依赖关系和引导不同的服务。 | -| `npm 运行种子` | 解析所有挑战Markdown文件并将其插入MongoDB。 | -| `npm 运行开发` | 启动免费CodeCamp API 服务器和客户端应用程序。 | -| `npm 测试` | 在系统中运行所有 JS 测试,包括客户端、服务器、 直线和挑战测试。 | -| `npm 运行测试:客户端` | 运行客户端测试套件。 | -| `npm 运行测试:课程` | 运行课程测试套件。 | -| `npm 运行测试:course --block='Basic HTML 和 HTML5'` | 测试特定方块。 | -| `npm 运行 test:course --superblock='responsible web-design'` | 测试一个特定的超级块。 | -| `npm 运行测试课程全文输出` | 运行课程测试套件,而不会在第一个错误后进行保养。 | -| `npm 运行测试:服务器` | 运行服务器测试套件。 | -| `npm 运行e2e` | 运行 Cypress 端口来结束测试。 | -| `npm 运行清理` | 卸载所有依赖关系并清理缓存。 | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## 故障排除 +## Troubleshooting -### 安装推荐前提条件的问题 +### Issues with installing the recommended prerequisites -我们经常在最新或最受欢迎的操作系统上开发,如macOS 10.15或更高版本,Ubuntu 18.04或更高版本,以及Windows 10(WSL2)。 +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -建议在资源上研究您的具体问题,例如谷歌、堆栈溢出和堆栈交换。 有一个很好的机会让某人面临同样的问题,你的具体查询已经有一个答案。 +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -如果您处于不同的操作系统和/或仍在出现问题,请参阅 [获取帮助](#getting-help)。 +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!警告] +> [!WARNING] > -> 请避免为前提问题创建 GitHub 问题。 它们超出了该项目的范围。 +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### UI、字体、构建错误等问题。 +### Issues with the UI, Fonts, build errors etc. -如果您面临UI问题,字体或看到构建错误,清理可能有用: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console -npm 运行清洁 +npm run clean npm ci -npm 运行种子 -npm 运行开发 +npm run seed +npm run develop ``` -或 +OR -使用快捷方式 +Use the shortcut ``` -npm 运行清理和开发 +npm run clean-and-develop ``` -如果你继续面临建筑物问题,清理工作区是推荐的。 +If you continue to face issues with the build, cleaning up the workspace is recommend. -在交互模式下使用 `git 净化` +Use `git clean` in interative mode: ``` -git 清理-ifdX +git clean -ifdX ```
    - 如何清理git 解压过的文件(屏幕截图) + How to clean git untracked files (screenshot)
    - 如何清理git 解压过的文件 + How to clean git untracked files
    -### API、登录、挑战提交等问题 +### Issues with API, Login, Challenge Submissions, etc. -如果您不能登录,而是看到一个带有错误消息的横幅,它将被报告给FreeCodeCodeCamp, 请再次检查您的本地端口 `3000` 是否没有被另一个程序使用。 +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**在 Linux / macOS / WSL 窗口上 - 从终端:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console netstat -ab | grep "3000" -tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**在 Windows 上 - 从高亮的电源架:** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab | 选择字符串"3000" +netstat -ab | Select-String "3000" -TCP 0.0.0:3000DESKTOP 列表正在注意中 +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### 安装依赖关系的问题 +### Issues installing dependencies -如果您在安装依赖时遇到错误, 请确保您不在受限制的网络中,或您的防火墙设置不会阻止您访问资源。 +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -首次设置可能需要一段时间,取决于您的网络带宽。 耐心等待,如果你仍然被卡住,我们使用GitPod 而不是脱机设置。 +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## 获取帮助 +## Getting Help -如果您被卡住并需要帮助。 通过在 [中在我们的论坛](https://forum.freecodecamp.org/c/contributors) 上询问贡献者的类别或在 Gitter 上的 [贡献者聊天室](https://gitter.im/FreeCodeCamp/Contributors) 来让我们知道。 +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -在您的浏览器控制台或Bash / Terminal / Command 行中可能有错误,将有助于识别问题。 在您的问题描述中提供此错误信息,以便其他人能够更容易地识别问题并帮助您找到解决方案。 +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Chinese/how-to-setup-wsl.md b/docs/i18n/Chinese/how-to-setup-wsl.md index c0b381987b..68bce6dde6 100644 --- a/docs/i18n/Chinese/how-to-setup-wsl.md +++ b/docs/i18n/Chinese/how-to-setup-wsl.md @@ -1,129 +1,129 @@ -# 在 Windows 子系统上为 Linux (WSL) 设置 FreeCodeCamp +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!注意] 在您遵循这些说明之前,请确保您的系统符合要求 +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (2004版本,构建19041 或更高) - 适用于包括Windows 10 Home在内的所有分发。 +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > > **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -本指南涵盖一些通用步骤,并设置了WSL2。 一旦解决了WSL2的一些共同问题。 您应该能够遵循我们的本地设置指南,在运行WSL 磁盘的Windows上使用 FreeCodeCodeCamp,比如Ubuntu。 +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## 启用 WSL +## Enable WSL -按照 [官方文档](https://docs.microsoft.com/en-us/windows/wsl/install-win10) 上的说明安装 WSL1,然后升级到 WSL2。 +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. 我们建议使用 Ubuntu-18.04 或更高版本的 WSL2。 +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!注意] + > [!NOTE] > - > 虽然你可以使用其他非德语的碎片,但他们都有自己的东西,超出了本指南的范围。 + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. 更新操作系统的依赖关系 +2. Update the dependencies for the OS ```console - sudo apt update 更新 - sudo apt 升级 -y + sudo apt update + sudo apt upgrade -y - # 清理 + # cleanup sudo apt autoremove -y ``` -## 设置 Git +## Set up Git -Git 是通过 Ubuntu 18.04 预先安装的,请确认您的 Git 版本是 `git --version`。 +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ -变量--version -git 版本 2.25.1 +❯ git --version +git version 2.25.1 ``` (Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## 安装代码编辑器 +## Installing a Code Editor -我们强烈建议在 Windows 10 上安装 [Visual Studio 代码](https://code.visualstudio.com)。 它非常支持WSL 并自动在您的 WSL 磁盘上安装所有必要的扩展。 +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -基本上,您将编辑和存储在 Ubuntu-18.04 上的 VS 代码安装在 Windows上。 +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## 安装 Docker 桌面 +## Installing Docker Desktop -**Windows停靠桌面** 允许您安装和运行数据库和服务,如MongoDB、NGINX等。 这有助于避免在Windows或WSL2上直接安装MongoDB或其他服务的常见陷阱。 +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -在 [官方文档](https://docs.docker.com/docker-for-windows/install) 上跟随指令并安装 Docker 桌面以进行Windows分发。 +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -最佳经验有一些最起码的硬件要求。 +There are some minimum hardware requirements for the best experience. -## 配置 WSL 的 Docker 桌面 +## Configure Docker Desktop for WSL -安装Docker 桌面后, [按照这些说明](https://docs.docker.com/docker-for-windows/wsl) 进行配置以使用 Ubuntu-18.04 安装作为后端。 +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -这样容器就可以在WSL一边运行,而不是在Windows上运行。 您可以在 Windows 和 Ubuntu 上访问 `http://localhost` 服务。 +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## 从 Docker Hub 安装 MongoDB +## Install MongoDB from Docker Hub -一旦您配置Docker 桌面与 WSL 2 合作,按照这些步骤启动 MongoDB 服务: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. 启动一个新的 Ubuntu-18.04 终端 +1. Launch a new Ubuntu-18.04 terminal -2. 从Docker枢纽拉取 `MongoDB 3.6` +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. 在端口 `27017`启动MongoDB 服务,并配置它在系统重启时自动运行 +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console - docker 运行 -it \ + docker run -it \ -v mongodata:/data/db \ -p 27017:27017 \ - --name mongodb - --rehread unless-standarded \ + --name mongodb \ + --restart unless-stopped \ -d mongo:3 ``` -4. 您现在可以在 `mongodb://localhost:27017` 访问Windows或Ubuntu 的服务。 +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## 安装 Node.js 和 npm +## Installing Node.js and npm -我们建议您用节点版本管理器安装 Node.js LTS 版本号 - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating)。 +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -安装后使用这些命令来安装和使用Node.js版本所需的 +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts -# 或 +# OR # nvm install nvm install 14 -# 用法 -# nvm 使用 +# Usage +# nvm use -nvm 使用 12 +nvm use 12 ``` -Node.js 与 `npm`捆绑在一起,您可以更新到 `npm` 的最新版本: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console -npm 安装-g npm@最新版本 +npm install -g npm@latest ``` -## 本地设置免费CodeCamp +## Set up freeCodeCamp locally -既然您已经安装了前提条件,按照 [我们的本地设置指南](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) 克隆、在您的机器上安装和安装免费CodeCamp。 +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!警告] +> [!WARNING] > -> 请注意目前为Cypress测试(以及相关的GUI需要)设置的工作正在进行之中。 您仍然应该能够在大部分代码片段上工作。 +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## 有用的链接 +## Useful Links -- [一个 WSL2 开发与Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - 一篇由Mrugesh Mohamapatra 编写的文章 (免费CodeCamp.org员工开发者) -- 经常提出的问题有: - - [Linux Windows子系统](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Windows停靠桌面](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Chinese/how-to-use-docker-on-windows-home.md b/docs/i18n/Chinese/how-to-use-docker-on-windows-home.md index 6054eab28f..85ac65a3e3 100644 --- a/docs/i18n/Chinese/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Chinese/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# 如何在 Windows Home 上使用 Docker +# How to use Docker on Windows Home -在WindowsHome上设置停靠台时要避免一些陷阱。 首先,您必须使用 [Docker 工具箱](https://docs.docker.com/toolbox/toolbox_install_windows/) 作为管理员。 很抱歉,Windows Home 不支持 Docker for Windows Desktop,所以必须使用工具箱。 它必须作为管理员运行,因为安装使用符号链接,否则无法创建。 +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -安装工具箱后,作为管理员运行Docker Quickstart 终端。 如果它不存在,它将创建 `默认` 虚拟机. 一旦发生这种情况,关闭终端和打开 VirtualBox (再次作为管理员)。 您应该能看到 `默认` 机。 站点资源非常密集,所以停止虚拟机并尽可能提高设置 - 尤其是内存。 它已被证实与4GB ram合作。 +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -一旦你很高兴Docker正在运行,请克隆免费CodeCamp仓库到 `C:\User` 内的目录。 这些目录是共享的 Docker 访问它在安装期间需要的本地目录的权限。 +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -如果您看到的消息就像这样了 +If you see messages like ```shell -bash: change_volumes_owners.sh: 没有这样的文件或目录 +bash: change_volumes_owner.sh: No such file or directory ``` -当你 `npm 运行docker:init` 这可能是罪魁祸首。 +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Chinese/how-to-work-on-coding-challenges.md b/docs/i18n/Chinese/how-to-work-on-coding-challenges.md index a5276ff568..2b95545e91 100644 --- a/docs/i18n/Chinese/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Chinese/how-to-work-on-coding-challenges.md @@ -1,62 +1,66 @@ -# 如何处理编码挑战 +# How to work on coding challenges -我们的目标是发展一个有趣和明确的互动学习体验。 +Our goal is to develop a fun and clear interactive learning experience. -设计互动式编码挑战是困难的。 编写长篇解释或创建视频教程要容易得多, 还有中型和YouTube上的人。 然而,就我们的核心课程而言,我们坚持的是对大多数人来说最有效的东西――一种完全交互式的视频游戏经验。 +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. -创造这些挑战需要极大的创造性和对细节的关注。 有大量的帮助。 你将得到整个贡献者团队的支持,你可以反弹和展示你的挑战。 保持在 [贡献者房间](https://gitter.im/freecodecamp/contributors) 中活动并提问大量问题。 +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/). -在你的帮助下,我们可以设计一个交互式编码课程,帮助数以百万计的人学习如何编程。 +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. -每个挑战的内容都存储在自己的Markdown文件中。 这个Markdown 文件后来被转换为 HTML ,使用我们的工具来创建交互式的网页。 +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -您可以在 [`/courum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) 目录中找到所有免费CodeCodeCodeCamp.org的课程内容。 +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 own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -在您完成课程之前,您需要设置一些工具来帮助您测试您的更改。 您可以使用下面的任何选项: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- 您可以 [在本地建立免费CodeCamp](how-to-setup-freecodecamp-locally.md)。 对于经常/重复捐款来说,这是 **个强烈推荐的** 个。 此设置允许您工作并测试您的更改。 -- 使用 Gitpod,免费在线开发环境。 点击下面的按钮将在您的浏览器中为免费CodeCodeCamp启动一个现成的开发环境。 这只需要几分钟。 +## Set up the tooling for the curriculum - [![在 Gitpod 中打开](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- 点击相应文件的铅笔图标编辑GitHub 界面上的文件。 虽然这是最快的方式,但不推荐 ****,因为您无法测试您在 GitHub 上的更改。 如果我们的维护者认为您所做的更改需要在本地测试,您将需要再次遵循以上方法。 +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## 挑战模板 + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -下面是挑战Markdown 文件当前看起来的模板。 To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: 唯一标识符 (字母数字, MongoDB_id +id: Unique identifier (alphanumerical, MongoDB_id) title: Challenge Title challengeType: 0 videoUrl: 'url of video explanation' -- +--- -#description +## Description
    -The description of the challenge and what is required to passe +A Description of the challenge and what is required to pass
    ## Instructions
    -instructions on the corresponding what is needs. +Instructions about what exactly needs to be done.
    -## 测试 +## Tests
    ```yml -测试: - - 文本:应该返回 "foo" - 测试字符串:'一个严格的函数可能使用Chai断言' +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
    @@ -67,20 +71,20 @@ instructions on the corresponding what is needs.
    -默认情况下在编辑器中显示的 ```{ext} -代码。 +```{ext} +Code displayed in the editor by default. -这是应对这一挑战的一个必要部分。 +This is a required section for the challenge. ```
    ### Before Test -
    +
    ```{ext} -可选的测试设置代码。 +Optional Test setup code. ```
    @@ -90,7 +94,7 @@ instructions on the corresponding what is needs.
    ```{ext} -可选的测试拆解代码。 +Optional Test tear down code. ```
    @@ -102,123 +106,126 @@ instructions on the corresponding what is needs.
    ```{ext} -// solution 需要 +// solution required ```
    ```` -> [!注意] +> [!NOTE] > -> 1。 在以上各节中,{ext}的例子是: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2。 对于上面的 `Tests` 部分,`text` 和 `testString` 应该是有效的 YAML 字符串。 `testString`可以是一个严格的函数或表达式,可以使用 Chai断言。 +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## 挑战数量 +## Numbering Challenges -每个挑战都需要一个 'id'。 如果您没有指定一个,则MongoDB将创建一个新的随机数据保存过程; 然而,我们不想这样做,因为我们希望挑战的标本在不同的环境中保持连贯一致(阶段性工作), 生产,许多不同的开发者等。 +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -若要在 shell 中生成一个新的 shell (假设MongoDB 是分开运行): +To generate a new one in a shell (assuming MongoDB is running separately): -1。 运行 `mongo` 命令。 -2. 运行 `ObjectId()` 命令。 +1. Run `mongo` command. +2. Run `ObjectId()` command. -例如: +For example: ```bash $ mongo -MongoDB shell 版本 v3.6.1 -连接到: mongodb:127.0.1:27017 +MongoDB shell version v3.6.1 +connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -结果是一个新的 id,例如上面 `a474d78df58bafeb3535d34`。 +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -一旦你有您的 id,将它放入Markdown 文件作为顶部的 `id` 字段,例如: +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- -id:5a474d78df58bafeb3535d34 -标题:挑战标题 +id: 5a474d78df58bafeb3535d34 +title: Challenge Title ``` -## 命名挑战 +## Naming challenges -命名东西是很难的。 我们通过施加一些限制使它变得更加容易。 +Naming things is hard. We've made it easier by imposing some constraints. -所有挑战标题都应该是明确的,应该遵循这种模式: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[对象条款\] +\[verb\]\[object clause\] -这里有一些示例挑战名称: +Here are some example challenge names: - Use Clockwise Notation to Specify the Padding of an Element -- 带.reduce压缩数组 +- Condense arrays with .reduce - Use Bracket Notation to Find the First Character in a String -## 挑战描述/说明 +## Challenge descriptions/instructions -刑期应当简明扼要,只要使用最起码的术语。 如果使用这些术语,应立即用英文对术语加以界定。 +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -保持段落简短(约1-4句)。 人们更可能阅读几个简短的段落,而不是一堵墙的文本。 +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -挑战文本应该使用第二个人("你")来帮助给它一个话音。 这样,案文和指示似乎直接与面临挑战的骆驼骑手说话。 尝试避免使用第一个人("I", "we", "let", and "us"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -不要使用出站链接。 这些会中断流程。 在这些挑战中,耕种者绝不应需要做任何事情。 如果有资源,你认为收藏家会从中受益,将它们添加到挑战相关的文章中。 +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -如果绝对必要,您可以添加图表。 +You can add diagrams if absolutely necessary. -挑战中不使用表情或表情符号。 免费CodeCamp有一个全球社区,世界各地表情或表情的文化含义可能不同。 另外,Emoji可能会在不同的系统中以不同的方式呈现。 +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -适当的封口在可能时应使用正确的大写。 下面是挑战中应该出现的一系列词语。 +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (大写字母"J" 和 "S" 且无缩略语) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- 前端开发(带有破折号的形状)是当您在前端工作时(无破折号的窗体)。 “后端”、“完整堆栈”和许多其他复合条款也是如此。 +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### 2分钟规则 +### The 2-minute rule -每项挑战都应在120秒内由一位母语英语发言者来解决,他已经完成了迎接挑战的任务。 这包括阅读方向/说明理解种子代码所需的时间。 写他们自己的代码并获得所有测试通过。 +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -如果完成挑战需要超过两分钟,您有两个选项: +If it takes longer than two minutes to complete the challenge, you have two options: -- 简化挑战,或 -- 将挑战分为两项挑战。 +- Simplify the challenge, or +- Split the challenge into two challenges. -2分钟规则迫使你这个挑战设计师简洁、你的种子代码清晰、你的测试向前进行。 +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -我们跟踪玩家需要多长时间来解决变化,并使用这种信息来确定需要简化或分割的挑战。 +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### 模块化 +### Modularity -每一项挑战都应传授一种概念,这一概念应从挑战的名称中看出。 +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -我们可以通过重复和变异来加强先前涵盖的概念――例如: 在一个挑战中提出h1元素,然后再提出3元素,然后提出几个挑战。 +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -我们的目标是面临数千分钟的挑战。 这些问题可以一起出现,重申先前涵盖的概念。 +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### 格式化挑战文本 +### Formatting challenge text -以下是质疑性案文和实例的具体格式准则: +Here are specific formatting guidelines for challenge text and examples: -- 语言关键字在 `` 标签中。 例如,HTML 标签名称或 CSS 属性名称 -- 定义关键字的第一个实例,或是一般关键词(例如"对象"或 "不可变") 在 `` 标签 -- 代码部件的引用(例如函数、方法或变量名称)应该用 `` 标签包裹。 见下面的示例: -- 使用 parseint 将变量 实数 转换为整数。 -- 多行代码块 **之前必须是空行**。 下一行必须以三个背杆开头,紧接着是 [支持的语言之一](https://prismjs.com/#supported-languages)。 要完成代码块,您必须开始一个仅有三个背面和 **另一个空行** 的换行符。 **注意:** 如果您要在 YAML 中使用示例代码 使用 `yaml` 而不是 `yml` 来查看右侧的语言。 +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -见下面的示例: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -以下是代码的示例: +The following is an example of code: ```{language} @@ -227,163 +234,237 @@ id:5a474d78df58bafeb3535d34 ```` ```` -- 应格式化笔记形式的附加信息注意: 笔记文本... -- 如果需要多个笔记 然后使用格式`注: 首注文本,单独列出所有注释。 第二个注文。 -- 在适用的情况下使用双引文 +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## 写作测试 +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -挑战应该有最低数量的必要测试来验证骆驼是否理解一个概念。 +## Writing tests -我们的目标是传达挑战试图传授的唯一观点,并检验他们对这一点的理解。 +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -挑战测试可以使用 Node.js 和 Chai.js 断言库。 此外,如有必要,用户生成的代码可以在 `code` 变量中访问。 +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## 格式化种子代码 +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -这里是挑战种子代码的特定格式准则: +## Formatting seed code -- 使用两个空格缩进 -- JavaScript 语句结尾有分号 -- 在适用的地方使用双引号 -- 评论字符和评论本身之间应该有空格 +Here are specific formatting guidelines for the challenge seed code: - `// 修复此行` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## 提示和解决方案 +### Seed code comments -每个挑战都有一个“获取提示” 按钮, 这样用户可以访问为挑战创建的任何提示/解决方案。 课程提示/解决方案主题位于`Guide`类别下[我们的论坛](https://forum.freecodecamp.org/c/guide)。 +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -如果你发现一个现有挑战的提示/解决方案主题有问题,你可以在论坛上[贡献者类别](https://forum.freecodecamp.org/c/contributors) 提出建议。 信任等级3的版主和用户将审查评论意见,并决定是否列入相应的提示/解决办法专题。 +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### 添加新的挑战提示/解决方案主题 +Example of valid single line JavaScript comment: -在添加新的挑战提示/解决方案主题时采取以下步骤。 +```js +// Only change code below this line +```` -1. 首先按照相同步骤创建一个新主题,但审查下一个步骤以创建标题。 -2. 主题的标题应该从`freeCodeCamp挑战指南:`中包含课程挑战的实际标题开始。 例如,如果挑战被命名为“`Chunky Mankey`”,主题标题将是“`freeCodeCamp挑战指南:Chunky Mokey`”。 -3. `camperbot`应该是这些主题/帖子的所有者。 所以你需要请求一个管理员来将主帖子的所有权更改为“camperbot”。 -4. 一旦创建了新主题,论坛主题ID将被创建。 它位于论坛主题URL末尾。 必须通过通常的拉请求过程将此ID添加到课程挑战文件的前台,让“获取提示”按钮链接到主题中。 +Example of a valid CSS comment: -### 提示和解决方案主题内容指南 +```js +/* Only change code above this line */ +``` -为课程挑战相关指南主题提出解决方案时 必须添加完整的代码。 这包括所有原始种子代码以及通过所有挑战测试所需的任何更改。 创建新的提示/解决方案主题时应使用以下模板: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. -``md -# 挑战名称进入这里 +```js +var a = 3; +var b = 17; +var c = 12; -- +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` -## 问题解释 +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) -这概述了需要做些什么,而不只是重置挑战说明和/或说明。 这是一个可选的章节 +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line -#### 相关链接 + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
    + { /* Change code below this line */ } + + { /* Change code above this line */ } +

    {this.state.text}

    +
    + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md +# Challenge Name Goes Here + +--- + +## Problem Explanation + +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section + +#### Relevant Links - [Link Text](link_url_goes_here) - [Link Text](link_url_goes_here) --- -## 提示 +## Hints -### # 提示1 +### Hint 1 -提示在此处 +Hint goes here ### Hint 2 -提示在这里 +Hint goes here -- +--- -## 解决方案 +## Solutions -
    Svolution 1 (click to Show/Hide) +
    Solution 1 (Click to Show/Hide) ```js -function my( - console. og('Hello World!'); +function myFunc() { + console.log('Hello World!'); } ```` -#### 代码解释 +#### Code Explanation -- 代码解释在此处 -- 代码解释在此处 +- Code explanation goes here +- Code explanation goes here -#### 相关链接 +#### Relevant Links -- [链接文本](link_url_goes_here) -- [链接文本](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
    ```` -## 测试挑战 +## Testing Challenges -在您之前[创建拉取请求](how-open-a pull-request)。 d) 对于您的更改,您需要确认您所做的更改不会无意中造成挑战问题。 +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. 要测试所有挑战,请从根目录运行下面的命令 +1. To test all challenges run the below command from the root directory ```` -npm 运行测试:课程 +npm run test:curriculum ``` -2. 您也可以通过这些命令测试一个块或一个超级挑战块 +2. You can also test a block or a superblock of challenges with these commands ``` -npm 运行测试:course --block='Basic HTML 和 HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` -npm 运行 test:course --superblock=responsible web-design +npm run test:curriculum --superblock=responsive-web-design ``` -您也可以通过执行以下步骤来测试一个挑战: +You are also able to test one challenge individually by performing the following steps: -1。 切换到“课程”目录: +1. Switch to the `curriculum` directory: ``` - cd 课程 + cd curriculum ``` -2. 对您更改过的每个挑战文件运行以下: +2. Run the following for each challenge file for which you have changed: ``` - npm 运行测试-- -g '挑战的完整英文标题' + npm run test -- -g 'the full English title of the challenge' ``` -一旦您验证了每一个挑战通过测试,[请创建一个拉取请求](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/howto opena-pull-request.md)。 +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). -> [!提示] -> 你可以将 `.env` 中的环境变量`LOCALE` 设置为你需要测试的挑战语言。 +> [!TIP] +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> 当前接受的值是 'english' 和 '中文, 默认设置为 'english' 。 +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## 即将到来的挑战模板 +## Upcoming Challenge Template -正在更新到更清洁、更少嵌套结构的挑战模板。 这还没有完全完成,但以下内容应该接近最终结构: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: -``mdx +````mdx --- -id:唯一的标识符(字母和数字, MongoDB_id -标题: '挑战标题' -challengeType: Integer, defined in "client/utils/challengeType s` +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` videoUrl: 'url of video explanation' forumTopicId: 12345 -- +--- -import Script from './script dx'; +import Script from './script.mdx'; ## --step-description-- -文字描述,Markdown +Description text, in markdown ```html
    - 示例代码 + example code
    ``` @@ -391,18 +472,18 @@ import Script from './script dx'; ![test-id-1] -将会有任意数量的 id、 说明 (Markdown) 和代码块。 +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -测试代码 +Code for test one ``` ![test-id-2] -Markdown 语法中的更多说明 +More instructions in markdown syntax ```js -更多代码 +More code ``` ## --step-seed-- @@ -410,13 +491,13 @@ Markdown 语法中的更多说明 ### --before-user-code-- ```lang -在用户之前评价过的代码 +Code evaluated before the user’s ``` -### --后用户代码-- +### --after-user-code-- ```lang -在用户完成后和测试前评估的代码 +Code evaluated after the user’s, and just before the tests ``` ### --seed-content-- @@ -424,15 +505,15 @@ Markdown 语法中的更多说明 ![index-html] ```html -部分html +Some html ``` ```css -一些css +Some css ``` ```js -一些js +Some js ``` ![index-js] @@ -447,17 +528,17 @@ Markdown 语法中的更多说明

    - 与种子部分完全相同 + Exactly the same as the seeds section

    - --next 解决-标记 + --next-solution-marker

    - 再次相同 + Same again

    @@ -471,29 +552,29 @@ Markdown 语法中的更多说明

    - 问题在此处(仅用于视频挑战) + The question would go here (only used for video challenges)

    - --ansters-marker-- + --answers-marker--

    - 答案 1 + Answer 1


    - 答案 2 + Answer 2


    - 更多答案 + More answers

    @@ -513,13 +594,13 @@ Markdown 语法中的更多说明

    - 有用的链接 + Useful Links

    - 创建和编辑挑战: + Creating and Editing Challenges:

    @@ -527,14 +608,14 @@ Markdown 语法中的更多说明
    1. - 挑战类型 - 数字挑战类型值是什么(枚举)。 + Challenge types - what the numeric challenge type values mean (enum).

    2. - 为FreeCodeCamp - 写入 ES6 挑战测试 - 一个视频跟随 Ethan Arrowood ,因为他为旧版课程做出了贡献。 + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

    3. diff --git a/docs/i18n/Chinese/how-to-work-on-the-docs-theme.md b/docs/i18n/Chinese/how-to-work-on-the-docs-theme.md index 3895c93765..bf8bf8f6c9 100644 --- a/docs/i18n/Chinese/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Chinese/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# 如何在文档主题上工作 +# How to work on the docs theme -> [!注意] 一个快速提醒, 你不需要为文档站点的内容设置任何操作。 +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> 要在贡献指南上工作,您可以在这里编辑或添加 `文档` 目录 [中的文件](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs)。 当您的更改被合并时,它将自动在文档网站上提供。 +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## 文档网站的结构 +## Structure of the docs website -网站使用 [`docsify`](https://docsify.js.org)生成,并使用GitHub 页面。 +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -通常,您不需要更改任何配置或本地构建站点。 如果你有兴趣,这里是它的工作方式: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- 此站点的主页源在 [`docs/index.html`](index.html) 中可用。 -- 我们使用 `将` 和 GitHub 页面作为一个 SPA 服务于这个文件。 -- `Docsify` 脚本生成 `markdown` 文件的内容在 `docs` 目录需要时生成. -- 主页来自 [`_coverpage.md`](_coverpage.md) -- 侧边栏导航由 [`_sidebar.md`](_sidebar.md) 生成。 +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## 在当地服务文件网站 +## Serving the documentation site locally -克隆免费CodeCamp: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git -docsify service docs +docsify serve docs ``` -安装 `对码化`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -并服务 `/docs` 目录 +and serve the `/docs` directory -```sh -对服务文档 +```console +docsify serve docs ``` -或者,如果您已经在本地安装了免费CodeCamp(见本地安装指南), 我们将CLI与开发工具捆绑在一起,以便您可以从仓库的根目录运行 `npm 运行文档:服务`。 +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Chinese/how-to-work-on-the-news-theme.md b/docs/i18n/Chinese/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Chinese/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Chinese/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Chinese/index.md b/docs/i18n/Chinese/index.md index 9adb929921..1c4add4ab3 100644 --- a/docs/i18n/Chinese/index.md +++ b/docs/i18n/Chinese/index.md @@ -1,45 +1,43 @@ -[FreeCodeCamp.org](https://freecodecamp.org) 社区是可能的,因为像你这样的数以千计的善意志愿者。 我们欢迎对社区作出的任何和所有贡献,并高兴地欢迎你们在一起。 +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!注意] 在您继续之前,请快速2分钟阅读我们的 [行为守则](https://www.freecodecamp.org/code-of-conduct) 我们在整个社会严格执行这项政策。 我们想要为FreeCodeCamp.org做出贡献,这对每个人来说都是一个安全和包容的经历。 +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -贡献愉快。 +Happy contributing. -欢迎: +You are welcome to: -- 在我们的 [编码挑战中创建、更新和修复错误](#coding-challenges)。 -- 帮助我们修复FreeCodeCamp.org的 [学习平台](#learning-platform) 中的 bug 。 -- _(即将来临)_ 帮助我们将FreeCodeCamp.org翻译成世界语言。 +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -有问题? 走到 [这些常见问题](/FAQ.md) ,我们在那里回答一些常见的关于贡献的问题。 +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## 编码挑战 +## Curriculum -我们的所有编码挑战都由社区管理,带来像你这样的志愿者的专家知识。 +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -你们可以帮助扩大它们,并使它们的措辞更好。 您也可以更新用户故事来更好地解释概念或删除多余的故事,并改进挑战测试,使其更准确地测试人们的代码。 +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**如果您有兴趣改进这些编码挑战,这里 [如何处理编码挑战](how-to-work-on-coding-challenges.md)。** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## 学习平台 +## Learning Platform -我们的学习平台运行在一个现代的 JavaScript 堆栈上。 它有各种组件、工具和库,包括但不限于:Node.js、MongoDB、LoopBack、OAuth 2.0、React、Gatsby、Webpack等等。 +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -广义而言, +Broadly, we use -- 我们有基于 Node.js 的 API 服务器。 -- 基于React的客户端应用集。 -- 一个我们用来评估我们的前端项目的脚本。 +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -为此做出贡献需要对API、ES6语法和许多好奇心有所了解。 +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -从根本上讲,我们期望基本上熟悉上述一些技术、工具和图书馆。 话虽如此,你们不必是他们的专家。 +If you want to help us improve our codebase... -**如果你想要帮助我们改进我们的代码库,你可以使用 Gitpod,免费的在线开发环境** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![在 Gitpod 中打开](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(在您的浏览器中为FreeCodeCodeCamp启动一个现成的开发环境。) +Or you can... -或 - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Hebrew/flight-manuals/moderator-handbook.md b/docs/i18n/Chinese/moderator-handbook.md similarity index 84% rename from docs/i18n/Hebrew/flight-manuals/moderator-handbook.md rename to docs/i18n/Chinese/moderator-handbook.md index 5916fb23de..126794b1a2 100644 --- a/docs/i18n/Hebrew/flight-manuals/moderator-handbook.md +++ b/docs/i18n/Chinese/moderator-handbook.md @@ -22,7 +22,7 @@ freeCodeCamp is an inclusive community, and we need to keep it that way. We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). -# Moderating GitHub +## Moderating GitHub Moderators have the ability to close issues and accept or close pull requests. @@ -31,11 +31,11 @@ Moderators have two primary responsibilities regarding GitHub: 1. QA'ing and merging pull requests 2. Evaluating and responding to issues -## Moderating Pull Requests +### Moderating Pull Requests Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. -### Types of Pull Requests +#### Types of Pull Requests 1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: @@ -49,7 +49,7 @@ Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's reposi 3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. -### How to merge or close pull requests +#### How to merge or close pull requests First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. @@ -63,7 +63,7 @@ If the pull request looks ready to merge (and doesn't require approval from @rai You should then comment on the pull request, thanking the contributor in your own personal way. -If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: ![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) @@ -83,11 +83,11 @@ In both of these situations, you should go ahead and close their pull request an If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. -## Moderating GitHub Issues +### Moderating GitHub Issues freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. -### Types of GitHub Issues +#### Types of GitHub Issues 1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. @@ -95,7 +95,7 @@ freeCodeCamp is an active open source project. We get new issues every day, all > > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. > - > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. > > Thank you and happy coding. @@ -120,15 +120,15 @@ freeCodeCamp is an active open source project. We get new issues every day, all > > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. -### Closing Stale, Outdated, Inactive Issues and Pull Requests +#### Closing Stale, Outdated, Inactive Issues and Pull Requests -- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. - Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. - If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. -### Other guidelines for Moderators on GitHub +#### Other guidelines for Moderators on GitHub Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. @@ -136,7 +136,7 @@ Also, you should never accept your own PRs. They must be QA'd by another moderat If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. -# Moderating the Forum +## Moderating the Forum As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. @@ -182,7 +182,7 @@ Please rejoin once you have reached at least 13 years of age. Thank you for understanding. ``` -# Moderating Facebook +## Moderating Facebook If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. @@ -190,7 +190,7 @@ Sometimes people will post things that they think are funny. They don't realize But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. -# Moderating Discord +## Moderating Discord Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: @@ -267,7 +267,7 @@ In all other situations - even situations where the code of conduct is violated 10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. -# How to become a moderator +## How to become a moderator If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. @@ -275,7 +275,7 @@ If you are approved, we will add you to our Moderator Teams on [GitHub](https:// > [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. -# How we retire inactive moderators +## How we retire inactive moderators Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: @@ -283,17 +283,17 @@ Please note that we will frequently remove mods whom we think are inactive. When > If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. -# How our Contributors room works +## How our Contributors room works Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. -# Dealing with solicitors +## Dealing with solicitors You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). -# Dealing with (mental) health inquiries +## Dealing with (mental) health inquiries You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! @@ -315,7 +315,7 @@ Helpful URLs: http://www.suicide.org/international-suicide-hotlines.html -# A note on free speech +## A note on free speech Sometimes people will defend something offensive or incendiary that they said as "free speech." @@ -324,3 +324,133 @@ This XKCD comic perfectly summarizes most communities' thoughts on free speech.
      Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Czech/FAQ.md b/docs/i18n/Czech/FAQ.md index 579296f9b8..e6ef4fed0d 100644 --- a/docs/i18n/Czech/FAQ.md +++ b/docs/i18n/Czech/FAQ.md @@ -1,95 +1,76 @@ -### Jsem nováček na GitHubu a Open Source, kde bych měl začít? +### I am new to GitHub and Open Source. Where should I start? -Přečtěte si naše ["Jak přispět k Open Source příručce"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Je to kompenzační zdroj projektů a pokynů prvního časovače. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Dokážu přeložit studijní programy zdarmaCodeCamp? +### Can I translate freeCodeCamp's curriculum? -Na bezplatném CodeCamp začneme nejprve s **čínskou** snahou o lokalizaci. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Plánujeme zpřístupnit učební plány ve více jazycích, ale zatím se nemůžeme zavázat k žádným termínům. Několik provozních limitů, jako jsou zaměstnanci, aktivní přispěvatelé a náklady na servery hrají roli při prosazování internacionalizace (i18n) úsilí. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Máme v úmyslu zahájit i18n úsilí v těchto jazycích: arabštině, portugalštině, Ruština a španělština (bez zvláštního pořádku) poté, co jsme v čínštině uvolnili osnovy. +### How can I report a new bug? -**Proč se nejprve zaměřujete na čínské učební plány?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -Čína je největšími demografickými regiony, v naší nerodné angličtině mluvící publikum. V současné době máme statisíce uživatelů pomocí staré verze platformy. Zaměření na čínské učební plány nám poskytne odhad logistiky zapojené do i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Zaměříme se na Latinskou Ameriku jako demografický region pro portugalský a španělský. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -V dohledné budoucnosti nemáme žádné plány na i18n v jiných jazycích, než jsou výše uvedené. +### How can I report a security issue? -Nevybízíme vás, abyste pracovali na i18n ve výše uvedených jazycích. Můžeme přijmout požadavky na natažení, aniž bychom očekávali termíny nasazení. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Jak mohu nahlásit novou chybu? +### I am a student. Can I work on a feature for academic credits? -Pokud si myslíte, že jste našli chybu, přečtěte si nejprve článek ["Pomoz mi najít chybu"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) a postupujte podle jeho pokynů. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Pokud si myslíte, že je to nová chyba, pokračujte a vytvořte nový GitHub problém. Nezapomeňte zahrnout co nejvíce informací, abychom mohli reprodukovat chybu. Máme předem definovanou šablonu problému, která vám pomůže s tímto problémem. +We request you to plan ahead and work on code contributions with this in mind. -Vezměte prosím na vědomí, že všechny problémy, které hledají pomoc s kódováním na challenge keši, budou uzavřeny. Sledování problémů je přísně určeno pro otázky a diskuze související s kódovou databází. Kdykoli máte pochybnosti, měli byste [požádat o pomoc na fóru](https://forum.freecodecamp.org) před vypracováním zprávy. +### What do these different labels that are tagged on issues mean? -### Jak mohu nahlásit bezpečnostní problém? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Pro bezpečnostní problémy prosím nevytvářejte GitHub problémy. Namísto toho pošlete e-mail na `security@freecodecamp.org` a my se ho budeme okamžitě zabývat. +### Where do I start if I want to work on an issue? -### Jsem student, mohu já nebo náš tým pracovat na funkci akademických kreditů? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Ano, jisté. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -I když jsme otevřeni všem příspěvkům, Vezměte prosím na vědomí, že nejsme schopni zavázat se k žádným lhůtám, které mohou být vyžadovány na vaší vysoké škole nebo na vysoké školě. Dostáváme mnoho žádostí o natažení a příspěvků na kód od dobrovolníků vývojářů, respektujeme jejich čas a úsilí. Nebudeme schopni věnovat žádnou zvláštní pozornost PR tomu, abychom byli spravedliví vůči všem. +### I found a typo. Should I report an issue before I can make a pull request? -Žádáme vás, abyste plánovali dopředu a pracovali na této funkci. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Co znamenají tyto různé štítky, které jsou označovány v otázkách? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -Správce kódu [zkouší](https://en.wikipedia.org/wiki/Software_bug#Bug_management) problémy a tahá požadavky na základě jejich priority, závažnosti a dalších faktorů. [můžete najít kompletní seznam jejich významů zde](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Kde začnu, když chci pracovat na nějakém problému? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Měl bys projít [**`pomoc si přát`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) nebo [**`první časovače pouze`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) problémy pro rychlý přehled toho, na čem máš možnost pracovat. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`Pomoc chtěla, aby`** problémy byly nastaveny a abyste na nich pracovali, nemusíte žádat o povolení. Problémy s **`prvním časovačem jsou však vyhrazeny pouze`** pro lidi, kteří nepřispěli do bezplatné kódovací základny CodeCamp dříve. Pokud tyto otázky nejsou jasné, co je třeba udělat, neváhejte klást v komentářích otázky. +### I am stuck on something that is not included in this documentation. -### Našel jsem typo, mám nahlásit problém, než mohu podat žádost o natažení? - -Pro překlepy a jiné změny formulací můžete přímo otevřít požadavky na natažení, aniž byste nejprve vytvořili problém. Otázky jsou spíše předmětem diskuse o větších problémech spojených s kódem nebo strukturálními aspekty učebních plánů. - -Nicméně, uveďte podrobnosti, kontext atd. v popisné oblasti požadavku na natažení, abyste nám pomohli porozumět a zkontrolovat váš příspěvek i pro drobné změny. - -### Jak mi bude přidělen úkol? - -Obvykle nepřisuzujeme problémy nikomu jinému, než je dlouholetý přispěvatel, abychom se vyhnuli nejednoznačným ukázkám. Namísto toho sledujeme následující politiku, abychom byli spravedliví vůči každému: - -1. První žádost o natažení pro jakýkoli problém je třeba sloučit. -2. V případě vícenásobných žádostí o natažení pro tutéž otázku upřednostňujeme kvalitu kódu v žádostech o natažení. - - Obsahovali jste testy? - - Zachytili jste všechna použití? - - Zajistili jste, aby všechny testy prošly, a potvrdili jste, že vše funguje lokálně? -3. A konečně, upřednostňujeme požadavky na natažení, které se řídí našimi doporučenými pokyny. - - Sledovali jste kontrolní seznam požadavků na natažení? - - Věnovali jste název požadavku na natažení smysluplně? - -Nepotřebujete žádné oprávnění pro úkoly, které jsou označeny jako `pomoc a které chtěly` nebo `první časovače` jak bylo vysvětleno dříve. - -Postupujte pečlivě podle pokynů a otevřete žádost o natažení. - -### Jsem uvězněn na něčem, co není v této dokumentaci obsaženo. - -**Neváhejte požádat o pomoc v:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Jsme rádi, že vám pomůžeme přispět k nějakému tématu, na kterém byste rádi pracovali. Nebojte se nám položit otázky ohledně související problematiky a s potěšením to vyjasníme. Před odesláním nového dotazu se ujistěte, že hledáte váš dotaz. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Buďte zdvořilí a trpěliví. Naše komunita dobrovolníků a moderátorů vás vždy vede vašimi dotazy. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Další pomoc:** +**Additional Assistance:** -Máte-li dotazy o stohu, architektuře codebase, neváhejte se obrátit na náš personál dev týmu: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Zaměstnanci | Odeslat zprávu na fóru | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | | Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | @@ -98,4 +79,4 @@ Máte-li dotazy o stohu, architektuře codebase, neváhejte se obrátit na náš | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | | Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Náš vývojářský personál můžete poslat e-mailem na: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Czech/_sidebar.md b/docs/i18n/Czech/_sidebar.md index 47cafb1b38..1b5bda2bdc 100644 --- a/docs/i18n/Czech/_sidebar.md +++ b/docs/i18n/Czech/_sidebar.md @@ -1,36 +1,39 @@ -- **Začněme** - - [Úvod](index 'Přispějte do komunity freeCodeCamp.org') - - [Často kladené otázky](FAQ.md) -- **Přispění kódu** -- - [Nastavte volný CodeCamp lokálně](how-to-setup-freecodecamp-locally.md) - - [Otevřít požadavek na natažení](how-to-open-a-pull-request.md) - - [Práce na výzvách v kódování](how-to-work-on-coding-challenges.md) - - [Pracovat na výzvách spojených s videem](how-to-help-with-video-challenges.md) - - [Práce na tématu novinek](how-to-work-on-the-news-theme.md) - - [Práce na motivu dokumentace](how-to-work-on-the-docs-theme.md) -- **Volitelné návody** - - [Ukládat odchozí e-maily lokálně](how-to-catch-outgoing-emails-locally.md) - - [Nastavit freeCodeCamp na WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Letové příručky** (pro zaměstnance & režimy) - - [Moderátor příručka](flight-manuals/moderator-handbook.md) - - [Šablony odpovědí](flight-manuals/using-reply-templates.md) - - [Přehled DevOps](devops.md) - - [Práce na serverech](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Naše komunita** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Fórum diskuze**](https://freecodecamp.org/forum/c/contributors) - - [**Chat Gitteru**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Czech/devops.md b/docs/i18n/Czech/devops.md index a6c2fcf4f7..46fb8b5382 100644 --- a/docs/i18n/Czech/devops.md +++ b/docs/i18n/Czech/devops.md @@ -1,75 +1,75 @@ -# Operace vývojáře na freeCodeCamp.org +# DevOps Handbook -Tento průvodce vám pomůže pochopit náš stack infrastruktury a jak udržujeme naše platformy. Ačkoli tato příručka nemá vyčerpávající podrobnosti pro všechny operace, mohla by být použita jako reference pro vaše pochopení systémů. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Dejte nám vědět, pokud máte zpětnou vazbu nebo dotazy a rádi si vyjasníme. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Jak vytvoříme, otestujeme a nasadíme kódovou základnu? +# Flight Manual - Code deployments -Tento repozitář je neustále budován, testován a nasazen do **oddělených souborů infrastruktury (Servers, databáze, CDN atd.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -To zahrnuje tři kroky, které je třeba dodržovat v posloupnosti: +This involves three steps to be followed in sequence: -1. Nové změny (opravy i funkce) jsou sloučeny do naší primární vývojové větve (`master`) prostřednictvím požadavků na natažení. -2. Tyto změny probíhají prostřednictvím řady automatizovaných testů. -3. Jakmile testy projdou, uvolníme změny (nebo je v případě potřeby aktualizujte) na nasazení do naší infrastruktury. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Vytváření kódové základny - mapování větví Gitu k zaměstnancům. +#### Building the codebase - Mapping Git Branches to Deployments. Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Jedná se o průběžné vydání pro naše vývojáře a dobrovolnické přispěvatele. Je také známá jako naše "staging" nebo "beta". +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Je identický s naším živým produkčním prostředím na `freeCodeCamp.org`jiné než pomocí samostatného souboru databází, serverů, web-proxies, atd. Tato izolace nám umožňuje testovat probíhající vývoj a vlastnosti v "výrobě" jako scénář, aniž by ovlivňovala běžné uživatele hlavních platforem FreeCodeCamp.org. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Jakmile je vývojářský tým [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) spokojen se změnami na přípravné platformě, tyto změny se přesouvají každých několik dní do větví [`produkčních a aktuálních`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current). +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -Toto je finální verze, která přesouvá změny do našich produkčních platforem na freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Testování změn - testování integrace a akceptace uživatelů. +#### Testing changes - Integration and User Acceptance Testing. -Pro kontrolu kvality kódu používáme různé úrovně integrace a testování. Všechny naše testy jsou prováděny prostřednictvím softwaru jako [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) a [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Máme jednotkové testy pro testování našich challenge řešení, API serveru a uživatelských rozhraní klienta. Ty nám pomáhají otestovat integraci mezi různými složkami. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!POZNÁMKA] Jsme také v procesu psaní konečných uživatelských testů, které pomohou při kopírování scénářů reálného světa, jako je aktualizace e-mailu nebo volání na API nebo služby třetích stran. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Tyto testy společně pomáhají zabránit opakování problémů a zajistit, že při práci s jinou chybou nebo funkcí nezavádíme chybu. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Publikování změn - Odesílání změn na servery. +#### Deploying Changes - Pushing changes to servers. -Nakonfigurovali jsme kontinuální doručovací software, který tlačí změny na naše vývojové a výrobní servery. +We have configured continuous delivery software to push changes to our development and production servers. -Jakmile jsou změny odeslány do chráněných distribučních větví, spustí se pro větvi automaticky spustí stavěný potrubí. Stavební plynovody jsou zodpovědné za výstavbu artefaktů a jejich udržování v chladírenském skladu pro pozdější použití. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -Stavební plynovod pokračuje tak, aby spustil odpovídající vypouštěcí plynovod po dokončení úspěšného jízdy. Vypouštěcí potrubí jsou zodpovědná za sběr stavěných artefaktů, jejich přesun na servery a život. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Stav sestavení a vydání je [k dispozici zde](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Spuštění sestavení, testování a nasazení. +## Trigger a build, test and deploy -V současné době mohou do výrobních větví tlačit pouze členové vývojářského týmu. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!POZNÁMKA] V nadcházejících dnech bychom zlepšili tento tok pomocí požadavků na natažení, pro lepší řízení přístupu a transparentnost. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Odesílání změn do Přípravných aplikací. +### Pushing changes to Staging Applications. -1. Konfigurace dálkových ovladačů správně. +1. Configure your remotes correctly. ```sh git remote -v ``` - **Výsledky:** + **Results:** ``` - původ git@github.com:raisedadead/freeCodeCamp.git (fetch) - origin git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Ujistěte se, že vaše `master` větev je nepravdivá a synchronizuje s upstreamem. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master @@ -77,51 +77,51 @@ V současné době mohou do výrobních větví tlačit pouze členové vývojá git reset --hard upstream/master ``` -3. Zkontrolujte, zda Cesta CI pokračuje na značce `master` pro předcházející proud. +3. Check that the Travis CI is passing on the `master` branch for upstream. - Testy [kontinuální integrace](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) by měly být zelené a PASIVNÍ pro hlavu ``. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
      Kontrola stavu Travis CI (screenshot) +
      Checking status on Travis CI (screenshot)
      - ![Zkontrolovat stav sestavení na Cestě CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
      - Pokud to chybí, měli byste se zastavit a vyšetřit chyby. + If this is failing you should stop and investigate the errors. -4. Potvrďte, že jste schopni vytvořit repozitář lokálně. +4. Confirm that you are able to build the repository locally. ``` - npm běh čištění a vývoj + npm run clean-and-develop ``` -5. Přesunout změny z `master` do `přípravné výroby` rychlým sloučením +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` - git Checkout production-staging - sloučení git master + git checkout production-staging + git merge master git push upstream ``` - > [!POZNÁMKA] Nebudeš moci vynutit tlačení a pokud jsi přepsal historii tak, že tyto příkazy budou chybné. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Pokud ano, možná jste udělali něco nesprávně a měli byste začít znovu. + > If they do, you may have done something incorrectly and you should just start over. -Výše uvedené kroky automaticky spustí běh na stavěném potrubí pro větev `výroby`. Po dokončení sestavení jsou artefakty uloženy jako `.zip` soubory v chladném úložišti, které mají být načteny a použity později. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -Vypouštěcí potrubí se spustí automaticky, pokud je k dispozici čerstvý artefakt z připojeného stavebního potrubí. Pro přípravné platformy tento proces nezahrnuje ruční schválení a artefakty jsou přenášeny na servery CDN a API. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP|label:Estimates] Dokončování běhu sestavení trvá obvykle ~20-25 minut a následně běh verze trvá ~15-20 minut pro klienta, a ~5-10 minut pro API je dostupné živé. Od volání kódu k živému na přípravných platformách trvá celý proces **~35-45 minut**. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Tlačítko změn výrobních aplikací. +### Pushing changes to Production Applications. -Proces je většinou stejný jako přípravné platformy, s několika dalšími kontrolami. To je jen proto, abychom se ujistili, že nerozbijeme nic na freeCodeCamp.org, který může vidět stovky uživatelů, kteří jej používají kdykoliv. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| Neprovádět tyto příkazy, pokud jste neověřili, že vše pracuje na platformě pro přípravu. Neměl bys obcházet ani přeskočit žádné testování přípravy, než budeš pokračovat. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Ujistěte se, že vaše `výrobní příprava` větev je nedokonalá a synchronizovaná s předním proudem. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh git checkout production-staging @@ -129,99 +129,580 @@ Proces je většinou stejný jako přípravné platformy, s několika dalšími git reset --hard upstream/production-staging ``` -2. Přesunout změny z `výroby` do `produkčního proudu` rychlým sloučením +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` - git checkout produkci-aktuální - sloučení výroby - git push proti stream + git checkout production-current + git merge production-staging + git push upstream ``` - > [!POZNÁMKA] Nebudeš moci vynutit tlačení a pokud jsi přepsal historii tak, že tyto příkazy budou chybné. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Pokud ano, možná jste udělali něco nesprávně a měli byste začít znovu. + > If they do, you may have done something incorrectly and you should just start over. -Výše uvedené kroky automaticky spustí běh na vývojovém potrubí pro větev `produkčně proudu`
      . Jakmile bude stavební artefakt připraven, spustí běh na vypouštěcí potrubí. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP|label:Estimates] Dokončování běhu sestavení trvá obvykle ~20-25 minut. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Další kroky pro činnost zaměstnanců** +**Additional Steps for Staff Action** -Jeden běh vydání je spuštěn, členové týmu vývojáře obdrží automatický manuální zásahový e-mail. Mohou buď _schválit_ nebo _odmítnout_ spuštění vydání. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Pokud změny fungují pěkně a byly testovány na přípravné plošině, pak mohou být schváleny. Schválení musí být uděleno do čtyř hodin od spuštění uvolnění před automatickým odmítnutím. Personál může pro odmítnuté jízdy znovu spustit spuštění ručně, nebo počkat na další cyklus vydání. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Pro zaměstnance: +For staff use: -| Zkontrolujte svůj e-mail pro přímý odkaz nebo [přejděte na dashboard vydání](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) po dokončení spuštění sestavení. | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Jakmile jeden z zaměstnanců schválí vydání, bude plynovod tlačit změny na produkční CDN a API servery freeCodeCamp.org. Obvykle zabírají ~15-20 minut pro klienta a ~5 minut pro servery API, aby byly k dispozici živé. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP|label:Estimates] Běh vydání obvykle trvá ~15-20 minut pro každou instanci klienta a ~5-10 minut pro každou instanci API je k dispozici naživu. Od kódového tlačení k živému na produkčních platformách celý proces trvá **~90-120 minut** celkem (nezapočítává se doba čekání na schválení personálem). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Postavení, test a stav nasazení +## Build, Test and Deployment Status -Zde je aktuální test, sestavení a stav nasazení kódové základny. +Here is the current test, build and deployment status of the codebase. -| Typ | Větev | Stav | Nástěnka | -|:---------------- |:-------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------ | -| Zkoušky CI | [`mistr`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Stav sestavení cestování CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Přejít na stavový panel](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Zkoušky CI | [`přípravná produkce`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Stav sestavení cestování CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Přejít na stavový panel](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Sestavit potrubí | [`přípravná produkce`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Stav sestavení](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Přejít na stavový panel](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Uvolnit potrubí | [`přípravná produkce`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Přejít na stavový panel](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| Zkoušky CI | [`výrobní proud`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Stav sestavení cestování CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Přejít na stavový panel](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Sestavit potrubí | [`výrobní proud`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Stav sestavení](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Přejít na stavový panel](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Uvolnit potrubí | [`výrobní proud`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Přejít na stavový panel](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Předčasný přístup a beta testování +## Early access and beta testing -Vítáme Vás otestovat tyto verze v režimu **"Public beta testing"** a získat včasný přístup k nadcházejícím funkcím platform. Někdy jsou tyto funkce/změny označovány jako **další, beta, staging,** atd. zaměnitelné. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Vaše příspěvky prostřednictvím zpětné vazby a hlášení problémů nám pomohou vytvořit produkční platformy na `freeCodeCamp. rg` více **odolné**, **konzistentní** a **stabilní** pro všechny. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Děkujeme vám za hlášení chyb, se kterými jste narazili a pomohli zlepšit freeCodeCamp.org. bubble raider +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Určení nadcházející verze platforem +### Identifying the upcoming version of the platforms -V současné době je veřejná beta testovací verze k dispozici na: +Currently a public beta testing version is available at:

      freecodecamp.dev

      -> [!POZNÁMKA] Název domény se liší od **`freeCodeCamp.org`**. Toto je záměrem zabránit indexování vyhledávačů a vyhnout se nejasnostem pro běžné uživatele platformy. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identifikace aktuální verze platforem +### Identifying the current version of the platforms -**Aktuální verze platformy je vždy k dispozici na [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -dev-team spojuje změny z `výrobní přípravy` větví na `produkčně aktuálně` , když se změní. Nejlepší commit by měl být, co vidíte na webu. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Přesnou verzi zavedenou můžete identifikovat návštěvou protokolů sestavení a nasazení dostupných ve stavové sekci. Případně nás můžete také kontaktovat v [přispěvatelské chatovací místnosti](https://gitter.im/FreeCodeCamp/Contributors) pro potvrzení. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Známá omezení +### Known Limitations -Při používání beta verze platformy existují některá známá omezení a kompromisy. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### Všechna data / osobní postup na těchto beta platformách `NEBUDE uložena nebo přenesena` do produkce. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Uživatelé na beta verzi budou mít oddělený účet od produkce.** Beta verze používá fyzicky oddělenou databázi od produkce. To nám dává možnost zabránit náhodným ztrátám údajů nebo úpravám. Dev tým může vymazat databázi v této beta verzi, jak je potřeba. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Na počátku a spolehlivost beta platforem nejsou žádné záruky. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Očekává se, že nasazení bude časté a v rychlých iteracích, někdy několikanásobně denně. Výsledkem bude neočekávaná výpadek v časech nebo porušená funkčnost v beta verzi. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Neposílejte na tento web běžné uživatele jako měřítko potvrzení opravy +- #### Do not send regular users to this site as a measure of confirming a fix - Beta stránka je a vždy byla rozšiřovat místní vývoj a testování, nic jiného. Není to příslib toho, co se blíží, ale pouhý pohled na to, na co se pracuje. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### Značka může vypadat jinak než v produkci +- #### Sign page may look different than production - Používáme testovacího nájemníka pro freecodecamp.dev na Auth0, a proto nemáme možnost nastavit vlastní doménu. Tím se všechny přesměrované volání a přihlašovací stránka zobrazí na výchozí doméně, jako: `https://freecodecamp-dev.auth0.com/`. To nemá vliv na funkčnost co nejblíže k produkci, jak můžeme získat. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Hlášení problémů a zanechání zpětné vazby +## Reporting issues and leaving feedback -Prosím otevřete nové problémy pro diskuzi a hlášení chyb. Můžete je označit jako **[`vydání: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** pro triage. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Pokud máte nějaké dotazy, můžete poslat e-mail na `vývojáře[at]freecodecamp.org`. Jako vždy by všechny bezpečnostní chyby měly být nahlášeny na `bezpečnost[at]freecamp.org` namísto veřejného trackeru a fóra. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

      https://amplify.nginx.com

      +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Czech/flight-manuals/moderator-handbook.md b/docs/i18n/Czech/flight-manuals/moderator-handbook.md deleted file mode 100644 index e823c7d34e..0000000000 --- a/docs/i18n/Czech/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# Oficiální příručka FreeCodeCamp Moderator. - -To vám pomůže zvládnout různá místa v naší komunitě, včetně: - -- Problémy s GitHub & tahání žádostí -- Fórum, chatovací místnosti, Facebookové skupiny a další online zasedací místa -- Události v osobách, jako jsou studijní skupiny, hackathony a konference - -**Všichni moderátoři FreeCodeCamp jsou moderátoři v celé komunitě. To znamená, že věříme, že budete na kterékoliv z těchto míst dohlížet.** - -To znamená, že můžete sloužit jako moderátor na všech místech, která vás nejvíce zajímají. Někteří moderátoři jen pomáhají na GitHubu. Jiní jen pomáhají na fóru. Někteří moderátoři jsou aktivní všude. - -Rozhodující je, že chceme, abyste byl moderátorem, a investujte svůj vzácný čas do míst, která vás zajímají. - -> [!POZNÁMKA] "S velmocí přichází velká odpovědnost." - Strýc Ben - -Jako moderátor je temperament důležitější než technické dovednosti. - -Poslouchejte. Buďte nápomocní. Nezneužívejte své pravomoci. - -freeCodeCamp je inkluzivní komunita a my ji musíme udržet tímto způsobem. - -Máme jednotný kodex chování, který řídí celou naši komunitu. Čím méně pravidel, tím snazší budou mít na paměti. Tato pravidla si můžete přečíst a vložit je do paměti [zde](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderátoři mají možnost zavřít problémy a přijmout nebo zavřít požadavky na natažení. - -Moderátoři mají v souvislosti s GitHubem dvě hlavní odpovědnosti: - -1. QA'ing a sloučení požadavků na natažení -2. Hodnocení otázek a odpovědi na ně - -## Moderování požadavků na natažení - -Pull requesty (PR) jsou způsob, jakým přispěvatelé odesílají změny do úložiště freeCodeCamp. Je důležité, abychom na žádost o stažení provedli zabezpečování kvality (QA) dříve, než se rozhodneme, zda je sloučíme, nebo je zavřete. - -### Typy požadavků na natažení - -1. **Edity instrukcí výzvy** Toto jsou změny textu challenge - popis, instrukce nebo testovací text. Můžete také zkontrolovat toto právo na GitHubu a rozhodnout, zda je sloučit. Musíme být v této věci trochu opatrnější, protože miliony lidí se s tímto textem setkají při práci prostřednictvím osnov FreeCodeCamp . Dává požadavek na natažení text jasněji, aniž by ho dával mnohem déle? Jsou úpravy relevantní a nejsou příliš pedantické? Nezapomeňte, že naším cílem je, aby byly výzvy co nejjasnější a co nejkratší. Nejsou místem pro skryté detaily. Také přispěvatelé se mohou pokusit přidat odkazy na zdroje k výzvám. Tyto požadavky na natažení můžete zavřít a odpovědět na ně takto: - - > Děkujeme za váš požadavek na natažení. - > - > Tento požadavek na natažení uzavírám. Přidejte místo toho odkazy a další podrobnosti do odpovídajícího průvodce výzvy. - > - > Pokud si myslíte, že se mýlím při uzavírání tohoto problému, otevřete jej prosím znovu a přidejte další vysvětlení. Děkuji vám a šťastné kódování. - -2. **Editace kódu Výzvy** Toto jsou změny kódu v challenge - Zdroj výzvy, řešení výzev a testovací řetězce. Tyto požadavky na natažení musí být staženy z GitHubu a testovány na vašem místním počítači, aby se zajistilo, že testovací testy budou i nadále vyhovovat současnému řešení, a nový kód nezavádí žádné chyby. Někteří přispěvatelé se mohou pokusit přidat další testy k pokrytí rohových případů u pedanů. Musíme být opatrní, abychom tuto výzvu příliš nekomplikovali. Tyto výzvy a jejich testy by měly být co nejjednodušší a intuitivnější. Vedle výzev algoritmu a náhledu by studenti měli být schopni vyřešit každou výzvu asi do 2 minut. - -3. **Codebase mění** Tento kód mění funkčnost platformy freeCodeCamp samotné. Někdy se přispěvatelé snaží provádět změny bez velkého vysvětlení, ale pro změny kódu musíme zajistit, aby byla změna skutečně potřebná. Takže tyto žádosti o stažení by měly odkazovat na existující GitHub, kde se diskutuje o důvodech změny. Pak můžete otevřít požadavek na natažení na vašem počítači a vyzkoušet jej lokálně. Poté co to uděláte, pokud změny vypadají dobře, nesloučte je docela docela docela docela docela dohromady. Můžete komentovat požadavek na natažení a označit @raisedadead, aby se mohl konečně podívat. - -### Jak sloučit nebo zavřít požadavky na natažení - -Za prvé, když zvolíte požadavek na natažení pro QA, měli byste se k němu přiřadit. Můžete to udělat kliknutím na odkaz "přiřadit sebe" pod částí "pověřenci" v pravém sloupci rozhraní GitHubu. - -V závislosti na typu žádosti o natažení se řídí příslušnými výše uvedenými pravidly. - -Před sloučením požadavku na natažení se ujistěte, že GitHub má zelené zaškrtávací značky pro všechno. Pokud existuje nějaký X, nejprve je prozkoumejte a zjistěte, jak je nejdříve změnit na zelené zaškrtávací značky. - -Někdy dojde ke konfliktu o sloučení. To znamená, že jiná žádost o natažení provedla změnu přesně stejné části stejného souboru. GitHub má nástroj pro řešení těchto fúzních konfliktů přímo na GitHubu. Můžete se pokusit tyto konflikty řešit. Použijte pouze svůj nejlepší úsudek. Změny požadavku na natažení budou nahoře a změny v hlavní větvi budou dole nastaveny. Někdy budou k dispozici nadbytečné informace, které lze odstranit. Než skončíte, nezapomeňte odstranit `<<<<<<` `======`a `>>>>>>` , které Git přidává k označení oblastí konfliktu. - -Vypadá to, že požadavek na natažení je připraven ke sloučení (a nevyžaduje schválení od @raisedadead), můžete ho dále sloučit a sloučit. Ujistěte se, že používáte výchozí funkci "Squash and Merge" na GitHubu. Tím se všechny požadavky na natažení převedou do jediného úkolu, díky čemuž je Git historie mnohem snazší přečíst. - -Poté byste se měli vyjádřit k žádosti o natažení, poděkování přispěvateli vlastním osobním způsobem. - -Pokud autor žádosti o natažení je "poprvé přispěvatel", měli byste jim také poblahopřát k jejich prvnímu sloučenému požadavku na natažení do úložiště. Můžete se podívat na horní pravý roh těla PR, abyste určili prvního přispěvatele. Zobrazí `přispěvatele na první úvazek` , jak je uvedeno níže: - -![Copy_edits_for_ _arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -Pokud požadavek na natažení nevypadá jako připravený ke sloučení, můžete zdvořile odpovědět autorovi, co by měli udělat, aby byl připraven. Doufejme, že na svůj požadavek na natažení odpoví a připraví jej. - -Často bude požadavek na natažení očividně malé úsilí. Často to můžete okamžitě sdělit, když přispěvatel neobtěžoval zaškrtávací políčka v šabloně Pull Request Template, nebo použil obecný název požadavku na natažení jako "made changes" nebo "Update index. d“. - -Existují také situace, kdy se přispěvatel snaží přidat odkaz na své vlastní webové stránky, nebo zahrnout knihovnu, kterou sami vytvořili, nebo má lehkovážnou úpravu, která neslouží nikomu jinému, ale samému. - -V obou těchto situacích byste měli pokračovat a uzavřít jejich žádost o natažení a odpovědět na tuto standardní zprávu: - -> Děkujeme vám za otevření tohoto požadavku na natažení. -> -> Toto je standardní zpráva upozorňující vás, že jsme zkontrolovali váš požadavek na natažení a rozhodli jsme se jej nesloučit. Uvítali bychom, že vás budou stahovat budoucí požadavky. -> -> Děkujeme vám a šťastné kódování. - -Pokud potřebujete druhé stanovisko k žádosti o natažení, pokračujte a nechte své připomínky k žádosti o natažení, poté přidejte štítek "diskuze" k požadavku na natažení. - -## Moderování GitHub problémů - -freeCodeCamp je aktivní open source projekt. Každý den se dostáváme k novým otázkám, které je třeba vyzkoušet a oklamat. - -### Typy GitHub problémů - -1. **Požadavky na pomoc s kódem**, pro které lidé chybně vytvořili GitHub problémy. Pokud někdo žádá o pomoc, vložte následující zprávu, zavřete problém. - - > Děkuji vám za nahlášení tohoto problému. - > - > Toto je standardní zpráva, která vás upozorňuje, že tento problém se zdá být požadavkem na pomoc. Namísto žádání o pomoc zde prosím klikněte na tlačítko \*\*"Nápověda"\*\* na tlačítko výzvy na bezplatném CodeCamp, která vám pomůže vytvořit otázku v správné části fóra. Dobrovolníci na fóru obvykle reagují na otázky během několika hodin a mohou pomoci zjistit, zda je problém s vaším kódem nebo testem výzvy. - > - > Pokud členové fóra zjistí, že není nic špatného s vaším kódem, můžete požádat o znovuotevření tohoto problému. - > - > Děkujeme vám a šťastné kódování. - -2. **Problémy s chybou nebo vyjasněním** Pokuste se reprodukovat chybu sami, pokud můžete. Pokud ne, požádejte je o kroky k reprodukci chyby a zda mají nějaké snímky obrazovky, videa, nebo další podrobnosti, které vám mohou pomoci s reprodukcí problému. Jakmile můžete problém reprodukovat - nebo alespoň potvrdit, že se jedná o problém legit - označte ho `potvrzený`. Poté - -- Pokud je to jednoduchá změna na existující výzvu, označte ji jako `první časovače pouze`, jinak označte jako `pomoc s přáním`. V případě potřeby použijte jiné štítky. -- Pokud je problém významnější, označte jako `chybu`.   Pokud existuje nějaká nejasnost, pokud jde o správný průběh jednání v otázce, neváhejte označit @raisedadead na tuto problematiku a pak přidejte značku `s diskuzí`. - -3. **Duplicitní problémy** Pokud je úkol stejný jako jiný hlášený úkol, měl by mít přednost předchozí hlášené úkoly. Označit jako `Duplikát`, vložte následující zprávu nahrazující `#XXXXX` číslem problému a pak problém uzavřete. - - > Děkuji vám za nahlášení tohoto problému. - > - > Toto je standardní zpráva, která vás oznamuje, že tento problém se zdá být velmi podobný problému #XXXXX, uzavírám ji jako duplikát. - > - > Pokud si myslíte, že se mýlím při uzavírání tohoto problému, otevřete jej prosím znovu a přidejte další vysvětlení. Děkujeme vám a šťastné kódování. - -4. **Opraveno ve stadiu** Některé problémy již byly opraveny ve stadiu, ale nemáte přiřazený problém na GitHubu. Pokud tomu tak je, můžete vložit následující zprávu, zavřít problém a přidat stav `: vyřešený/dodací štítek`: - - > Děkuji vám za nahlášení tohoto problému. - > - > Toto je standardní zpráva, která vás oznamuje, že problém, který jste zde zmínili, se vyskytuje ve výrobě, ale že již byla opravena ve stagnaci. To znamená, že až příště nasměrujeme svou přípravnou větvi na výrobu, měl by být tento problém napraven. Z toho důvodu tento problém uzavírám. - > - > Pokud si myslíte, že se mýlím při uzavírání tohoto problému, otevřete jej prosím znovu a přidejte další vysvětlení. Děkujeme vám a šťastné kódování. - -### Uzavírací schel, zastaralé, neaktivní problémy a požadavky na natažení - -- Stale Issues or PRS jsou ty, které nevidí žádnou činnost z OP po dobu 21 dnů (3 týdny od poslední činnosti), ale až poté, co moderátor požaduje více informací/změn. Ty mohou být uzavřeny ve skriptu automatického bota nebo samotnými moderátory. - -- Aktivita je definována jako: Komentáře vyžadující aktualizaci PR a triages jako `stav: potřebná aktualizace` popisek atd. - -- Pokud OPP požádá o další pomoc, nebo dokonce o dobu, lze výše uvedené uvolnit a revidovat po obdržení odpovědi. V každém případě by měly modifikace využít svého nejlepšího úsudku k vyřešení stavu zbývajících PR. - -### Další pokyny pro moderátory na GitHub - -Přestože budete mít přístup k úložišti freeCodeCamp, **nikdy byste neměli odesílat kód přímo do repozitářů zdarma CodeCamp**. Veškerý kód by měl vložit kódovací základnu bezplatného CodeCampu ve formě žádosti o natažení z vidlice úložiště. - -Také byste nikdy neměli přijímat vlastní PR. Musí být QA jiným moderátorem, stejně jako u jiných PR. - -Pokud si všimnete někoho, kdo porušuje [kodex chování](https://code-of-conduct.freecodecamp.org) na GitHub problémy, nebo otevírání požadavků na stažení se škodlivým obsahem nebo kódem, napište na e-mail dev@freecodecamp. rg s odkazem na urážející požadavek na natažení a můžeme zvážit jejich zákaz v GitHubu organizaci freeCodeCamp. - -# Moderování fóra - -Jako moderátor pomáháte udržet naši komunitu v příjemném místě pro každého, kdo se může naučit a získat pomoc. Budete se zabývat označenými příspěvky a zpracovat spam, offtopy a další nevhodné konverzace. - -Všimněte si, že jakmile budete moderátorem na fóru, začnete vidět modré moderátorské nápovědy o členech fóra, jako "toto je poprvé, co [person] zveřejnil - pojďme je přivítat v komunitě! nebo "[person] neodeslal za dlouhou dobu - pojďme je přivítat zpět." - -![Modrá textová zpráva, která říká "toto je poprvé, [person] zveřejnila - pojďme je přivítat v komunitě!](https://i.imgur.com/mPmVgzK.png) - -Toto jsou příležitosti, jak je přivítat a donutit je k tomu, aby se cítili zvláštní. Nikdy nevíte, který člověk, který je okrajově zapojen, se může stát naším dalším superpomocníkem, který pomůže mnoha dalším lidem v jejich cestě. I nejmenší laskavost může vyvolat kaskádu dobrých činů. - -### Mazání příspěvků na fóru - -Moderátoři fóra mají možnost odstranit příspěvky uživatele. Měli byste to udělat pouze pro následující instance: - -1. Někdo zveřejnil pornografický nebo graficky násilný obraz. -2. Někdo zveřejnil odkaz nebo kód, který je svou povahou škodlivý a mohl by poškodit jiné kamery, kteří na něj kliknou. -3. Někdo zaplavil vlákno se spoustou nevyžádaných zpráv. - -### Řešení se spamem - -Pro první spam post uživatele jim pošlete zprávu vysvětlující problém a podle potřeby odstraňte odkaz nebo příspěvek. Ponechte na profilu uživatele poznámku vysvětlující opatření, která jste provedli. Pokud problém přetrvává, pak postupujte podle výše uvedeného procesu. V tichosti zablokovat uživateli publikování (pomocí možnosti ticha na panelu Správce uživatelů), poté poslat varování s kodexem chování. Zaškrtněte políčko v soukromé zprávě označující, že vaše zpráva je "formální varování". - -Můžete klást otázky a nahlásit incidenty v [fóru](https://forum.freecodecamp.com/c/staff). - -### Řešení konverzací mimo téma - -Příspěvky nebo témata, která se zdají být na nesprávném místě, mohou být přeřazeny do nové kategorie nebo přejmenovány na cokoli, co by bylo vhodné. - -Ve výjimečných případech může být vhodné, aby moderátor rozeslal diskusi o více vláknech. - -Pokud máte nějaké problémy nebo otázky, proveďte příspěvek se svými akcemi v kategorii zaměstnanců, a označte jiného moderátora, pokud chcete, aby přezkoumali své moderátorské akce. - -### Uživatelé nezletilých - -Naše smluvní podmínky vyžadují, aby uživatelé bezplatného CodeCamp měli alespoň 13 let. V případě, že uživatel zjistí, že je mladší 13 let, pošlete jim níže uvedenou zprávu a smažte jejich účet na fóru (pokud není smazání dostupné, pozastavení účtu je dostatečné). Potom napište e-mail [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) nebo [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) pro odstranění uživatelova účtu zdarmaCodeCamp - -```markdown -PŘEDMĚT: Uživatelé mladší 13 let nesmějí používat fórum pro smluvní podmínky - -Upozornili na to, že jste mladší 13 let. Za [freeCodeCamp podmínky služby](https://www.freecodecamp.org/news/terms-of-service), musíte být alespoň 13 let, abyste mohli používat tuto stránku nebo fórum. Budeme odstraňovat jak váš účet zdarmaCodeCamp tak váš účet na fóru. Toto omezení nás drží v souladu s právními předpisy Spojených států. - -Připojte se prosím znovu, jakmile dosáhnete alespoň 13 let věku. - -Děkuji vám za pochopení. -``` - -# Moderování Facebooku - -Pokud uvidíte cokoliv, co se zdá být porušením našeho [Kodexu chování](https://code-of-conduct.freecodecamp.org/), měli byste jej okamžitě odstranit. - -Někdy lidé publikují věci, o nichž si myslí, že jsou zábavné. Neuvědomují si, že to, co řekli nebo co sdíleli, by bylo možné interpretovat jako urážlivé. V těchto případech by jejich funkce měla být odstraněna, ale osoba, která ji vyslala, nemusí být nutně zakázána. Doufejme, že tím, že své místo vymažou, pochopí, že to, co vyslali, je nevhodné. - -Jenže je-li to nehorázný přestupek, který nelze přiměřeně přičítat kulturním rozdílům nebo nedorozumění angličtině, pak byste měli důkladně zvážit blokování člena z Facebookové skupiny. - -# Moderování Discordu - -Zde je, jak moderátoři řeší porušování našeho [kodexu chování](https://code-of-conduct.freecodecamp.org/) na Discordu: - -1. **Ujistěte se, že mělo být porušeno kodex chování.** Ne všechna porušení kodexu chování byla jako taková zamýšlena. Nový kamerátor by mohl odeslat velké množství kódu pro pomoc, nevědí, že to může být považováno za spamming. V těchto případech je můžete požádat o vložení jejich kódu se službami, jako jsou Codepen nebo Pastebin. - -2. **Pokud kamper jasně porušuje kodex chování, moderátor postupuje takto:** - -- Pozastavit útočného kamaráda, ale nevarovat ani hrozit. Namísto toho jim v tichosti dáte pozastavenou roli na Discordu, pak jim pošlete následující zprávu: - -``` -Toto je standardní zpráva oznamující, že jsem tě musel dočasně pozastavit od rozhovorů na serveru Discord freeCodeCamp. - -Jsem moderátor jednající jménem naší komunity s otevřeným zdrojovým kódem. Mohu zvážit odstranění vašeho pozastavení, ale nejdříve musíte udělat tři následující kroky: - -1. Přečtěte si náš kodex chování: https://code-of-conduct.freecodecamp.org/ -2. Napište mi zpět potvrzení, že jste ji dokončili. -3. Vysvětlete mi, proč si myslíte, že vás pozastavil a proč bych měl vaše pozastavení zrušit. -``` - -- Nahlaste krátké shrnutí události a jak na ni reagovali v #admin kanálu. Zde je příklad toho, jak by takové shrnutí mohlo vypadat: - -``` -Pozastaveno: _@username_ -Důvod(y): _Spamming, trolling_ -Událost: _Jedno nebo více odkazů na urážející zprávu(y)_ -CoC: _Sent_ -``` - -- Zpráva o odstranění pozastavení by měla vypadat takto: - -``` -Odebral jsem pozastavení z ` @username `. Poslal jsem jim kodex chování. Právě dnes si uvědomili, že byli pozastaveni a omluveni za to, co udělali. -``` - -- Na základě odpovědi pachatelů se moderátor rozhodne, zda odebere pozastavení z útočného kamera. Pokud se zdají být uctivé a omluvitelné, moderátor může pozastavení odstranit. Moderátoři budou v rámci politiky během tohoto procesu zdvořilí, ať už se urážející kamera chová jakkoliv. Pokud nejsou respektováni nebo ochotni CoC přijmout, mělo by po pozastavení následovat zákaz na serveru Discord. Použijte stejný souhrn jako výše, ale nahraďte "Pozastaveno:" "Zablokováno:". - -3. **Jak zakázat a/nebo odbanovat** - -- Chcete-li někomu zakázat, klikněte pravým tlačítkem myši na jeho uživatelské jméno/profilový obrázek a vyberte "Zabanovat" ". Budete mít možnost odstranit jejich předchozí zprávy - vyberte "Neodstraňovat niko", zprávy by měly zůstat zachovány jako historický záznam. -- Pokud se rozhodnete někoho zakázat, znamená to, že nejsou ochotni dodržovat náš kodex chování. Proto by k odblokování kamery mělo dojít jen zřídka. Pokud je to potřeba, můžete tak učinit kliknutím na název serveru, zvolením "Nastavení serveru", výběrem "Bans", výběrem uživatele, kterého chcete odbanovat, a kliknutím na tlačítko "Zrušit ban". - -Discord Bany jsou globální - nelze zablokovat uživatele z konkrétního kanálu, pouze z celého serveru. - -4. **Odstranění zpráv** moderátoři mají možnost odstranit zprávy na Discordu. Tuto schopnost by měli vykonávat pouze ve čtyřech velmi specifických situacích: - -- Někdo zveřejnil pornografický nebo graficky násilný obraz. -- Někdo zveřejnil odkaz nebo kód, který je svou povahou škodlivý a mohl by poškodit jiné kamery, kteří na něj kliknou. -- Někdo zaplavil chat tak extrémním způsobem (obvykle s pomocí robotů), že je chatování zcela nepoužitelné. -- Někdo zveřejnil reklamu a / nebo samopropagující zprávu / obrázek (sociální média). - -Ve všech ostatních situacích - a to i v situacích, kdy je kodex chování porušován - by moderátoři neměli tuto zprávu smazat, protože se jedná o významný historický záznam. Když odstraníte zprávu, ujistěte se, že jste si ji nejdříve pořídili! Snímek obrazovky lze přihlásit do kanálu #mod-log, ale pokud jde o #activity-log, stačí říci, že důkazy byly "odstraněny z důvodu citlivého obsahu". Poznámka: Pokud zpráva obsahuje materiál, který by byl nezákonný pro pořízení snímku obrazovky, místo toho zkopírujte odkaz na zprávu - poskytněte odkaz na zprávu @raisedadead pro přeposlání do týmu důvěry a bezpečnosti Discordu. - -5. **Nepoužívejte @everyone nebo @here** Nepoužívejte @everyone nebo @here za žádných okolností! Každá osoba v této chatovací místnosti obdrží oznámení. V některých případech desetitisíce lidí. Místo toho chcete-li, aby lidé viděli oznámení, můžete ho připnout k kanálu, aby ho všichni mohli přečíst. - -6. **Nevyhrožujte zákazem nebo pozastavením** Pokud kamera porušuje kodex chování, nehrozit jejich zákazem nebo pozastavením a nikdy je na veřejnosti nevarovat. Namísto toho s nimi soukromě, nebo jim pošlete DM a vystavte pozastavení (podle výše uvedeného protokolu). Nikdo jiný v tomto kanálu nepotřebuje vědět, že jste zakázán/pozastavil osobu - kamery mohou zobrazit shrnutí v #aktivita-log kanálu, pokud chtějí držet krok s těmito informacemi. Pokud bylo porušení zjevně nezamýšleno a neopravňuje k pozastavení nebo soukromé konverzaci, aby urážlivý kamera věděl o svých / svých akcích, aniž by přišel jako varování. Například: - -- Kampaň publikuje zeď kódu pro žádost o pomoc - - Moderátor: @username použijte prosím Codepen nebo Pastebin při vkládání velkých množství kódu. - -- Nebo pokud opravdu musíte vysvětlit, proč: - - Moderátor: @username použijte prosím Codepen nebo Pastebin při vkládání velkého množství kódu, protože narušuje chat pro každého a mohl by být považován za spamování podle našeho kodexu chování. - -- V případě mírného a neúmyslného porušení kodexu chování - - Moderátor: Toto je přátelská připomínka pro každého, aby dodržoval kodex chování: https://code-of-conduct.freecodecamp.org/ - -7. **Nedělejte se stát moderátorem** Nevidějte se jako nad komunitou. Jste komunita. Komunita vám věřila, že vám pomůže chránit něco vzácného, co všichni sdílíme - _vítající_ místo pro nové vývojáře. Pokud se budete chtít stát moderátorem, lidé se mohou cítit znepokojeni kolem vás, stejným způsobem, jakým se lidé mohou cítit znepokojeni kolem policisty, i když nedělají nic špatného. To je jen lidská povaha. - -8. **Neodporujte ostatním moderátorům** Pokud nesouhlasíte s akcí moderátora, mluví s nimi v soukromém nebo ho vychatu na #mod-chatu. Nikdy zákaz nenahrazovat a nikdy neodporovat ostatním moderátorům/moderátorům veřejnosti. Místo toho se v mod-chatu diskutuje s chladnou hlavou a umírněnce přesvědčuje, že by sami měli zrušit zákaz nebo změnit svůj názor. Nezapomeňte: jsme všichni ve stejném týmu. Chceme důstojně plnit úlohu moderátorů a vystupovat jednotně. - -9. **Mluvte s ostatními moderátory** Máme místo pouze pro moderátory. Použij ho! Pokud se vám nelíbí, jak zvládnout určitou situaci, požádejte ostatní moderátory o pomoc. Pokud si myslíte, že by se o něčem mělo diskutovat, udělejte to. Jste součástí týmu a my si ceníme vstupu každého člena týmu! I když naprosto nesouhlasíte s něčím v těchto pokynech nebo s kodexem chování! - -10. **Dočasně neaktivní** Pokud nebudete kvůli dovolené aktivní jako moderátor, nemoc nebo jiný důvod se ujistěte, že ostatní vědí v kanálu #mod-chatu. To je tak, že víme, zda se můžeme spolehnout na tebe pravidelně na serveru, nebo ne. - -# Jak se stát moderátorem - -Pokud pomáháte lidem v komunitě důsledně v průběhu času, náš moderátorský tým si nakonec všimne, a jeden z nich vás zmíní jako možného moderátora [našeho personálu](https://forum.freecodecamp.org/g/Team). Neexistují žádné zkratky, které by se mohly stát moderátorem. - -Pokud jste schváleni, přidáme vás do našich moderátorových týmů na [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [fóru](https://forum.freecodecamp.org/g/moderators)atd. - -> [!POZNÁMKA] > **Pro GitHub:** Po přijetí jako moderátor obdržíte pozvánku na repozitář Github. Abyste mohli přijmout pozvánku, musíte přejít na [bezplatného CodeCamp GitHub organizace](https://github.com/orgs/freeCodeCamp/invitation). Toto je vyžadováno, abychom vám mohli dát přístup k zápisu do některých našich repozitářů. - -# Jak odcházíme do důchodu neaktivní moderátoři - -Vezměte prosím na vědomí, že budeme často odstraňovat mody, které považujeme za neaktivní. Až tak učiníme, pošleme následující zprávu: - -> Toto je standardní zpráva, která vás o tom informuje: protože se zdá, že jste v poslední době nebyl aktivním moderátorem, odstraňujeme vás z našeho moderátorského týmu. Velice si vážíme vaší pomoci v minulosti. - -> Pokud si myslíte, že jsme to udělali omylem, nebo jakmile jste připraveni se vrátit a přispět více, stačí odpovědět na tuto zprávu, která mi dá vědět. - -# Jak funguje naše přispěvatelská místnost - -Kdokoli je vítán v [přispěvatelské místnosti na našem Discordu](https://discord.gg/KVUmVXA). Je to určená chatovací místnost pro moderátory a další kamery, kteří přispívají do naší komunity všemi způsoby, včetně prostřednictvím skupin studií. - -Předpokládáme, že přispěvatelé si v této místnosti přečtou cokoli, co je přímo zmiňuje s `@username`. Všechno ostatní je nepovinné. Ale neváhejte si přečíst cokoliv, co tam někdo příspěvky a komunikovat. - -# Zacházení s advokáty - -K vám mohou přistupovat organizace, které chtějí nějakým způsobem partnera nebo spoluznačky s freeCodeCamp. Jakmile si uvědomíte, že to je to, co jsou, přestaňte s nimi mluvit a řekněte jim, aby zaslali e-mail quincy@freecodecamp.org. Takovýto návrh dostává vždy a je v nejlepším postavení, aby mohl posoudit, zda takový vztah bude pro naši komunitu cenný (a jen zřídka). - -# Řešení (duševních) zdravotních šetření - -Můžete se setkat se situacemi, kdy uživatelé hledají lékařskou radu nebo se zabývají otázkami duševního zdraví a hledají podporu. Pokud jde o politiku, neměli byste o těchto záležitostech hovořit soukromě. Pokud by se situace v určitém okamžiku odrazila zpět na fCC, chceme, aby byla konverzace zaznamenána. Dejte jasně najevo, že nejsme lékaři a že doporučujete uživateli, aby našel profesionální pomoc. Jak obtížné, jak to může někdy být, vyhněte se poskytovat tipy nebo rady jiné než ukazovat uživatele ve směru profesionální pomoci! - -Pokud se tak stane na Discordu: Pozastavte uživatele. Tím nechci je trestat! Pozastavení uživatele vytvoří soukromý kanál, který je přístupný pouze uživateli a týmu. Z toho bude mít prospěch jak uživatel, tak i fCC několika způsoby: - -- Uživatel má zaručeno nějaké soukromí -- Veřejný chat již není přerušen -- Další členové týmu se mohou stavět, pokud byste nebyli spokojeni se situací sami - -> [!POZNÁMKA] Pozastavení uživatele automaticky dává zprávu o čtení našeho kodexu chování. Ujistěte se, že jste uživatele pozastavili, abyste jim poskytli nějaké soukromí a že nejsou potrestáni. To je velmi důležité! Naprosto se chceme vyhnout tomu, abychom uživatelům dali představu, že jsou trestáni za oslovení a získání pomoci! - -Pokud se domníváte, že se uživatel může připojit k komunitě, klikněte pravým tlačítkem myši na soukromý kanál a zkopírujte ID. Vložte následující zprávu do #mod-log: - -> Referenční lékařská poradenství: - -Poté můžete odebrat pozastavení uživatele jako obvykle. - -Pomocné URL: - -http://www.suicide.org/international-suicide-hotlines.html - -# Poznámka ke svobodnému projevu - -Někdy budou lidé hájit něco urážlivého či zápalného, co řekli jako ,,svobodný projev". - -Tento XKCD komic dokonale shrnuje myšlenky většiny komunit na svobodu projevu. Pokud tedy někdo obhajuje něco, co říká jako ,,svobodný projev", má se k tomu svobodný pocit, že jim to posílá. - -
      - -Děkujeme, že jste si to přečetli, a děkuji za pomoc vývojářské komunitě! diff --git a/docs/i18n/Czech/flight-manuals/using-reply-templates.md b/docs/i18n/Czech/flight-manuals/using-reply-templates.md deleted file mode 100644 index 4e4effbe82..0000000000 --- a/docs/i18n/Czech/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Použití šablon odpovědí - -Toto jsou některé standardní šablony odpovědí, které můžete použít při přezkoumávání požadavků na natažení a pokusů. - -> Můžete si vytvořit vlastní s vestavěnou funkcí [**Uložené odpovědi**](https://github.com/settings/replies/) nebo použít níže uvedené funkce. - -### Děkujeme - -```markdown -Děkujeme za váš příspěvek na stránku! 👍 -Jsme rádi, že přijmeme tyto změny a těšíme se na budoucí příspěvky. 🎉 -``` - -### Děkuji vám a Gratulacím - -> Za poděkování a povzbuzení přispěvatelů na první místo. - -```markdown -Ahoj @username. Gratulujeme k prvnímu požadavku na natažení (PR)! 🎉 - -Děkujeme vám za váš příspěvek na stránku! 👍 -Jsme rádi, že přijmeme tyto změny a těšíme se na budoucí příspěvky. 📝 -``` - -### Chyba sestavení - -```markdown -Ahoj @username - -Rádi bychom byli schopni vaše změny sloučit, ale zdá se, že došlo k chybě při vytváření Travis CI build. ⚠️ - -Jakmile tyto problémy vyřešíte, budeme moci zkontrolovat váš PR a sloučit. 😊 - ---- - -> Neváhejte odkazovat na [Style Průvodce psaním článků](https://github. om/freeCodeCamp/freeCodeCamp#article-title) pro tento repo při správném formátování článku, takže vaše Travis CI build passes. ✅ -> -> Také je to dobrý postup na GitHub psát stručný popis vašich změn při vytváření PR. 📝 -``` - -### Synchronizace fork - -> Když PR není aktualizován na `master` větvi. - -``````markdown -Ahoj @username - -Rádi bychom byli schopni vaše změny sloučit, ale zdá se, že došlo k chybě při vytváření Travis CI build. ⚠️ - -```bash -Chyba: ENOTDIR: není adresář, otevřít 'src/pages/java/data-abstraction/index.md' -`````` - -Tato konkrétní chyba nebyla způsobena vaším souborem, ale byla starou chybou způsobenou sloučením chybného kódu s větví `master` Od té doby byla vyřešena. - -Chcete-li předat sestavení, budete muset synchronizovat nejnovější změny z repou `master` větve `freeCodeCamp/freeCodeCamp`. - -Pomocí příkazové řádky to můžeš udělat ve třech jednoduchých krocích: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream -``` - -Pokud používáte GUI, můžete jednoduše `přidat novou vzdálenou...` a použít odkaz `git://github.com/freeCodeCamp/freeCodeCamp.git` shora. - -Jakmile synchronizujete rozštěpení a předejdete sestavení, budeme moci zkontrolovat Váš PR a sloučit. 😊 - ---- - -> Neváhejte odkazovat na [synchronizaci článku Fork](https://help.github.com/articles/syncing-a-fork/) na GitHub pro více informací o tom, jak udržet rozštěp s předním repozitářem. 🔄 -> -> Také je to dobrá praxe na GitHubu psát stručný popis vašich změn při vytváření PR. 📝 -`````` - -### Sloučit konflikty - -> Pokud PR spojuje konflikty, které je třeba vyřešit..1 - -```markdown -Ahoj @username - -Rádi bychom byli schopni sloučit vaše změny, ale zdá se, že máte nějaké fúzní konflikty. ⚠️ - -Jakmile tyto konflikty vyřešíte, budeme moci zkontrolovat Váš PR a sloučit. 😊 - ---- - -> Pokud nejste obeznámeni s procesem slučování, Neváhejte a podívejte se na GitHubův průvodce ["Vyřešení merge conflict"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> Také je dobré na GitHub napsat stručný popis vašich změn při vytváření PR. 📝 -`````` -1 Pokud má první přispěvatel fúzní konflikt, udržovatelé konflikt vyřeší. - -### Duplicate - -> Pokud je PR opakovaná nebo duplicitní. - -```markdown -Hey @username - -Zdá se, že podobné změny již byly přijaty dříve pro tento článek, který upravujete, je to líto. 😓 - -Pokud máte pocit, že jste přidali více, neváhejte otevřít nové PR. - -Znovu děkuji! 😊 - ---- - -> Pokud máte jakékoliv dotazy, neváhejte se kontaktovat prostřednictvím [Gitter](https://gitter.im/FreeCodeCamp/Contributors) nebo níže uvedeným komentářem. 💬 -``` - -### Zavření neplatných požadavků na natažení - -> Když je PR neplatný. - -```markdown -Ahoj @username - -Nepřidali jste žádný obsah, zavříme tento PR a označíme jej jako `neplatné`. 😓 - -Nebojte se však otevřít další PR! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Czech/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Czech/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 5338a4fd18..0000000000 --- a/docs/i18n/Czech/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,481 +0,0 @@ -# Flight Manual for working on Virtual Machines - -jako zaměstnanec nebo dev-team, vám byl umožněn přístup k našim poskytovatelům cloudových služeb, jako je Azure, Digital Ocean, atd. - -Zde jsou nějaké přímočaré příkazy, které můžete použít k práci na virtuálních strojích (VM), například provádění aktualizací údržby nebo obecné houeskeeping. - -# Get a list of the VMs - -> [!POZNÁMKA] Zatímco již máte přístup k VM SSH, to samo o sobě vám neumožní seznam VM, pokud vám nebude umožněn přístup k cloudovým portálům. - -## Azure - -Nainstalujte Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Nainstalujte si CLI Digital Ocean `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Přepínání ověřování a kontextů: https://github.com/digitalocean/doctl#auticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Ujistěte se, že VM bylo poskytnuto zcela a neexistují žádné kroky po instalaci. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -Konfigurace NGINX je k dispozici na [tomto repozitáři](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -Pokud jste nepoužili konfiguraci cloud-init dříve použijte níže uvedené pro ruční nastavení NGINX a chybové stránky: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Získejte certifikáty původu Cloudflare z zabezpečeného úložiště a nainstalujte na požadovaných místech. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Aktualizace instancí (Maintenance) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

      https://amplify.nginx.com

      -## Updating Instances (Maintenance) - -Změny konfigurace v našich instancích NGINX jsou udržovány na GitHubu, měly by být nasazeny v každé instanci, jako také: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Vyzkoušejte a obnovte konfiguraci [se signály](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Aktualizace instancí (Maintenance) - -```console -## Logování a sledování - -```console -pm2 logů -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Spusťte zástupné instance pro webového klienta, budou aktualizovány s artefakty z Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Aktualizace instancí (Maintenance) - -```console -## Logování a sledování - -```console -pm2 logů -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Czech/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Czech/how-to-catch-outgoing-emails-locally.md index 82ac1e070a..397ea3382a 100644 --- a/docs/i18n/Czech/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Czech/how-to-catch-outgoing-emails-locally.md @@ -1,75 +1,75 @@ -> **Poznámka:** Toto je **volitelný** krok a je vyžadován pouze při práci s e-mailovými pracovními postupy +> **Note:** This is an **optional** step and is required only when working with email workflows -## Úvod +## Introduction -Některé e-mailové workflow, jako je aktualizace e-mailu uživatele, vyžaduje api-server na back-end odeslání odchozích e-mailů. alternativou k použití poskytovatele e-mailové služby pro odesílání aktuálních e-mailových zpráv, Mailhog je vývojářský nástroj pro testování e-mailů, který bude chytat zprávy odeslané instancí vašeho freeCodeCamp. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Instalace MailHog +## Installing MailHog -MailHog může být nainstalován na macOS, Windows a Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Úvod](#introduction) -- [Instalace MailHog](#installing-mailhog) - - [Instalace MailHog na macOS](#installing-mailhog-on-macos) - - [Instalace MailHog na Windows](#installing-mailhog-on-windows) - - [Instalace MailHog na Linux](#installing-mailhog-on-linux) -- [Použití MailHog](#using-mailhog) -- [Užitečné odkazy](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Instalace MailHog na macOS +### Installing MailHog on macOS -Nainstalujte MailHog na macOS s [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash brew install mailhog brew services start mailhog ``` -Výše uvedené příkazy spustí mailhog službu na pozadí. +The above commands will start a mailhog service in the background. -Po dokončení instalace můžete spustit [pomocí MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Instalace MailHog na Windows +### Installing MailHog on Windows -Stáhněte si nejnovější verzi MailHog z oficiálního repositáře [MailHog's](https://github.com/mailhog/MailHog/releases). Najděte a klikněte na odkaz pro verzi Windows (32 nebo 64 bitů) a soubor .exe bude stažen do vašeho počítače. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Po dokončení stahování klikněte pro otevření souboru. Může se objevit notifikace Windows firewall s žádostí o přístupové oprávnění pro MailHog. Standardní příkazová řádka Windows se otevře tam, kde bude MailHog spuštěn, jakmile bude umožněn přístup k firewall. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Zavřete MailHog zavřením okna s výzvou k příkazu. Chcete-li znovu spustit MailHog, klikněte na spustitelný soubor MailHog (. xe) soubor, který byl původně stažen - není nutné stahovat nový instalační soubor MailHog. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Začněte [používat MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Instalace MailHog na Linux +### Installing MailHog on Linux -Nejprve nainstalujte [Go](https://golang.org). +First, install [Go](https://golang.org). -Spusťte následující příkazy k instalaci GO na systémy jako Ubuntu a Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Spusťte následující příkazy k instalaci GO na systémy založené na RPM jako CentOS, Fedora, Red Hat Linux, atd. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Případně spusťte následující příkazy k instalaci GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Nyní nastavte cestu pro Jít s následujícími příkazy. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile -ozvěna 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile +echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile source ~/.profile ``` -Konečně zadejte příkazy níže pro instalaci a spuštění MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Začněte [používat MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Použití MailHog +## Using MailHog -Otevřete novou záložku nebo okno prohlížeče a přejděte na [http://localhost:8025](http://localhost:8025) pro otevření vaší schránky MailHog po dokončení instalace MailHog a spuštění MailHog. Doručená pošta se zobrazí podobně jako snímek obrazovky níže. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. ![MailHog Screenshot 1](images/mailhog/1.jpg) -E-maily odeslané vaší instalací freeCodeCamp se zobrazí níže +Emails sent by your freeCodeCamp installation will appear as below ![MailHog Screenshot 2](images/mailhog/2.jpg) -Při otevření daného e-mailu budou k dispozici dvě záložky, které vám umožní zobrazit prostý text nebo zdrojový obsah. Ujistěte se, že je vybrána záložka prostého textu, jak je uvedeno níže. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. ![MailHog Screenshot 3](images/mailhog/3.jpg) -Všechny odkazy v e-mailu by měly být možné kliknout a vyřešit jejich URL. +All links in the email should be clickable and resolve to their URL. -## Užitečné odkazy +## Useful Links -- Podívejte se na úložiště [MailHog](https://github.com/mailhog/MailHog) pro další informace týkající se MailHog. Další informace jsou k dispozici také o vlastních konfiguracích MailHog. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Czech/how-to-help-with-video-challenges.md b/docs/i18n/Czech/how-to-help-with-video-challenges.md index a406c19f8f..0724aaef02 100644 --- a/docs/i18n/Czech/how-to-help-with-video-challenges.md +++ b/docs/i18n/Czech/how-to-help-with-video-challenges.md @@ -1,199 +1,199 @@ -# Jak pomoci s výzvami videa +# How to help with video challenges -Video výzvy jsou novým typem výzvy v osnovách freeCodeCamp. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -Video výzva je malá část videohovoru s plnou délkou na konkrétní téma. Stránka s výzvou pro video vloží YouTube video. Každá stránka s výzvou má jednu otázku s možností výběru z více možností, která se týká videa. Uživatel musí odpovědět na otázku správně, než v kurzu přejde na další videohovor. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -Stránky video challenge jsou vytvořeny členy týmu freeCodeCamp. YouTube videa jsou také nahrávána členy FreeCodeCamp týmu. Mnohé z videohovorů s nimi ještě nejsou spojeny. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Můžete pomoci vytvořením otázek s více možnostmi souvisejících s kapitolami video a přidáním otázek do souborů markdown pro videohovory. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Šablona výzvy +## Challenge Template -Níže je šablona toho, jak vypadají soubory challenge markdown. +Below is a template of what the challenge markdown files look like. ````md --- -id: jedinečný identifikátor (alfanumerický, MongoDB_id) -název: Challenge Title +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 11 -videoId: 'YouTube videoId pro video challenge' +videoId: 'YouTube videoId for video challenge' --- -## Popis +## Description
      -Volitelný popis s užitečnými informacemi o videu. +An optional description with helpful information related to the video.
      -## Testy +## Tests
      ```yml -otázka: - text: 'Otázka' - odpovědi: - - 'Odpovězte na jedno' - - 'Odpověď' - - 'Odpověď' - řešení: 3 +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
      ```` -## Vytváření otázek pro videohovory challenge markdown +## Creating questions for video challenges -### Přístup k souborům pro video challenge markdown +### Access the video challenge markdown files -Najdete soubory markdown pro videohovory na následujících místech ve učebních osnovách: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Datová analýza s Pythonovým kurzem](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) -- [TensorFlow 2.0 Course](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) - [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) - [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -Pick a challenge markdown soubor z možností výše. +Pick a challenge markdown file from the options above. -### Skim přes video spojené s výzvou a vytvořte otázku "mutiple select" +### Skim through the video associated with the challenge and create a mutiple choice question -Nejprve najděte videoId. +First, find the videoId. -Například, v následujícím kódu z záhlaví video challenge markdown souboru, videoId je "nVAaxZ34khk". Na GitHubu by informace měly být rozvrženy ve formátu tabulky. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Příklad A challengeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -Dále získejte přístup k YouTube video s tímto videem. Adresa url videa bude: -https://www.youtube. om/watch?v=[videoId] (přidat videoID k URL bez hranatých závorek) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -V příkladu výše je url https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim YouTube video s tímto videoID a přemýšlejte o otázce s vícenásobným výběrem na základě obsahu videa. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Přidejte otázku do souboru markdown +### Add the question to the markdown file -Otázku můžete přidat lokálně nebo přímo přes rozhraní GitHub. Chceš-li tuto otázku lokálně přidat, musíš [nastavit freeCodeCamp lokálně](how-to-setup-freecodecamp-locally.md). Na GitHub můžete také najít soubor a kliknout na tlačítko upravit pro přidání otázky přímo ve vašem prohlížeči. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Pokud otázka ještě nebyla přidána do konkrétní video výzvy, bude mít následující výchozí otázku: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -otázka: +question: text: | - Odpovědi - : + Question + answers: - | - jeden + one - | - dva + two - | - tři - řešení: 3 + three + solution: 3 ``` -Aktualizujte slovo „otázka“ na vaši otázku. Aktualizujte „jeden“, „dva“ a „tři“ s možnými odpověďmi. Ujistěte se, že aktualizujete číslo řešení, se kterým je odpověď správná. Můžete přidat více možných odpovědí pomocí stejného formátu. Otázka a odpovědi mohou být obklopeny uvozovkami. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### Použijte markdown pro formátování otázky +#### Use markdown to format your question -Text v této otázce je uveden jako markdown. Nejjednodušším způsobem, jak se ujistit, že je správně naformátovaný, je začít s `textem: |`, jako je toto: +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -otázka: +question: text: | - Otázka + Question ``` -Potom se musíte ujistit, že vaše otázka je na nové řádce a odsazená o jednu úroveň je více než `text: |`. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -Stejný přístup lze použít i pro odpovědi, takže se celá otázka stane +The same approach can be used for the answers, so the entire question becomes ```yml -Otázka: +question: text: | - Odpovědi - + Question + answers: - | - První odpověď + First answer - | - Druhý + Second - | - Třetí - řešení: 2 + Third + solution: 2 ``` -Ujistěte se, že je každá odpověď věrohodná, ale existuje pouze jedna správná odpověď. +Make sure each answer is plausible but there is only one correct answer. -#### Použití HTML +#### Use of HTML -Otázky a odpovědi mohou obsahovat určité HTML tagy jako `
      ` pro nový řádek. HTML tagy by měly být používány opatrně, když bez nich nemohou být vyjádřeny otázky. +Questions and answers can contain certain HTML tags like `
      ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Příklady otázek +### Question examples -#### Příklady bez HTML +#### Examples without HTML ````yml -Otázka: +question: text: | - Co dělá tento JavaScript kód log? + What does this JavaScript code log to the console? ```js console.log('hello world'); ```` - Vyberte odpověď! - odpovědi: - - | ahoj *svět* - - | **ahoj** svět - - | Ahoj svět řešení: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -otázka: +question: text: | - Co se vytiskne po spuštění tohoto kódu: + What will print out after running this code: ```py - šířka = 15 - výška = 12. - vytisknout (výška/3) + width = 15 + height = 12.0 + print(height/3) ```` - odpovědi: + answers: - | 39 - | 4 - | 4.0 - | 5.0 - - | 5 roztok: 3 + - | 5 solution: 3 ```` -#### Příklad s HTML +#### Example with HTML ```yml -otázka: +question: text: | - Co se vytiskne po spuštění tohoto kódu: -
      šířka = 15
      výška = 12.
      tiskárny (výška/3)
      - odpovědí: + What will print out after running this code: +
      width = 15
      height = 12.0
      print(height/3)
      + answers: - | 39 - | 4 - | - 4. + 4.0 - | - 5. + 5.0 - | 5 - roztok: 3 + solution: 3 ```` -Konečný příklad ukazuje, že HTML lze použít, ale není tak čitelná jako verze bez ní. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Více příkladů se můžete podívat na soubory markdown pro následující video kurz. Všechny challenge keše již mají otázky: [Python pro každý kurz](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Otevřít požadavek na natažení +## Open a pull request -Po vytvoření jedné nebo více otázek můžete provést změny do nové větve a [otevřít požadavek na natažení](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Czech/how-to-open-a-pull-request.md b/docs/i18n/Czech/how-to-open-a-pull-request.md index 23ac29d852..2729cd6237 100644 --- a/docs/i18n/Czech/how-to-open-a-pull-request.md +++ b/docs/i18n/Czech/how-to-open-a-pull-request.md @@ -1,102 +1,102 @@ -# Jak otevřít požadavek na natažení (PR) +# How to open a Pull Request (PR) -Požadavek na natažení umožňuje odesílat změny z tvého rozštěpení na GitHubu na hlavní repositář FreeCodeCamp.org. Jakmile provedete změny kódu, nebo kódovací výzvy, měli byste se řídit těmito pokyny a poslat PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Připravte dobrý PR název +## Prepare a good PR title -Doporučujeme použít [běžný název a zprávy](https://www.conventionalcommits.org/) pro revize a požadavek na natažení. Úmluva má tento formát: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([volitelný rozsah(y)]): ` +> `([optional scope(s)]): ` > -> Například: +> For example: > -> `fix(naučení): testy pro to... zatímco smyčka výzva` +> `fix(learn): tests for the do...while loop challenge` -Při otevírání Pull Request(PR) můžete použít níže uvedené k určení typu, rozsahu (volitelné) a popisu. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**Typ:** +**Type:** -| Typ | Kdy vybrat | -|:----------- |:---------------------------------------------------------------------------- | -| opravit | Změněná nebo aktualizovaná/vylepšená/funkčnost, zkoušky, verbiáž lekce, atd. | -| pek | Pouze pokud přidáváte nové funkce, testy atd. | -| koruna | Změny, které se nevztahují k kódu, testům nebo slovnímu znění lekce. | -| dokumentace | Změny adresáře `/docs` nebo pokynů pro přispívání atd. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Oblast působnosti:** +**Scope:** -Můžete si vybrat rozsah z [tohoto seznamu štítků](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Popis:** +**Description:** -Zachovejte ji krátkou (méně než 30 znaků) a jednoduše můžete přidat více informací do políčka pro popis PR a komentáře. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Některé příklady dobrých PRS by byly: +Some examples of good PRs titles would be: -- `fixa11y): zlepšený kontrast vyhledávací lišty` -- `funkce: přidejte další testy do html a css challenge` -- `oprava (api,client): brání chybám CORS při vkládání formulářů` -- `Dokumenty(i18n): Čínský překlad lokálního nastavení` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Návrh požadavku na natažení +## Proposing a Pull Request -1. Jakmile budou provedeny úpravy, budete vyzváni k vytvoření požadavku na natažení na GitHubu stránce. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Obrázek - Porovnat požadavek na natažení na GitHubu](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Ve výchozím nastavení by všechny požadavky na natažení měly být proti hlavnímu repozitáři freeCamp `, master` větvi. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Ujistěte se, že při zvednutí požadavku na natažení je vaše základní rozštěpení nastaveno na volný CodeCamp/freeCodeCamp + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Obrázek - porovnávání vidlic při požadavku na natažení](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Odešlete požadavek na natažení od větev na pobočku freeCodeCamp's `master` FreeCamp. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. V těle vašeho PR uveďte podrobnější shrnutí změn, které jste provedli a proč. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Budete prezentováni s šablonou požadavku na natažení. Toto je kontrolní seznam, který jste měli před otevřením požadavku na natažení následovat. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Vyplňte podrobnosti, jak to považujete za vhodné. Tyto informace budou přezkoumány a hodnotitelé rozhodnou, zda je vaše žádost o natažení přijata, či nikoli. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Pokud má PR řešit existující GitHub problém, pak na konci popisného orgánu vašeho PR, použít klíčové slovo _Zavře_ s číslem úkolu [automaticky zavřít tento úkol, pokud je PR přijat a sloučen](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Příklad: `Uzavře #123` zavře úkol 123 + > Example: `Closes #123` will close issue 123 -5. Uveďte, zda jste testovali na místní kopii stránky, nebo ne. +5. Indicate if you have tested on a local copy of the site or not. - To je velmi důležité při provádění změn, které nejsou pouhými úpravami textového obsahu, jako je dokumentace nebo popis výzvy. Příklady změn, které vyžadují místní testování, zahrnují JavaScript, CSS nebo HTML, které mohou změnit funkčnost nebo rozložení stránky. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Zpětná vazba na požadavky na natažení +## Feedback on pull requests -> Blahopřejeme! :tada: při vytváření PR a moc děkujeme za to, že věnoval čas na příspěvek. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Naši moderátoři se nyní podívají a zanechají vám zpětnou vazbu. Buďte prosím trpěliví s kolegy moderátory a respektujte jejich čas. Všechny požadavky na natažení jsou včas přezkoumány. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Pokud potřebujete pomoc, prosím diskutujte v chatovací místnosti [přispěvatelů](https://gitter.im/FreeCodeCamp/Contributors), rádi Vám pomůžeme. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Pokud chcete přispět dalšími požadavky na natažení, doporučujeme přečíst si [dělat změny a synchronizovat](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) pokyny, abyste nemuseli mazat vaše rozštěpení. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Konflikty na žádost o stažení +## Conflicts on a pull request -Konflikty mohou nastat, protože mnoho přispěvatelů pracuje v úložišti a změny mohou poškodit váš PR, který čeká na recenzi a fúzi. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Častěji než nemusíte vyžadovat rebázi, protože všechny závazky rozmělňujeme, Nicméně pokud je zde požadována rebace, je to, co byste měli udělat. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Pro běžné opravy chyb a funkce +### For usual bug fixes and features -Když pracujete na běžných chybách a funkcích na naší vývojové větvi `master`můžete udělat jednoduchou rebázi: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Rebujte svou místní kopii: +1. Rebase your local copy: ```console git checkout - git pull --rebase proti master + git pull --rebase upstream master ``` -2. Vyřešit konflikty a přidat / upravit revize +2. Resolve any conflicts and add / edit commits ```console - # Buď + # Either git add . git commit -m "chore: resolve conflicts" @@ -105,17 +105,17 @@ Když pracujete na běžných chybách a funkcích na naší vývojové větvi ` git commit --amend --no-edit ``` -3. Přesuňte změny zpět do PR +3. Push back your changes to the PR ```console - git push --force původ + git push --force origin ``` -### Pro nadcházející učební plány a funkce +### For upcoming curriculum and features -Když pracujete na funkcích pro naše nadcházející učební osnovy `další*` pobočky, máte možnost vybrat: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Ujistěte se, že váš předcházející stream je synchronizován s vašimi lokálními: +1. Make sure your upstream comes in sync with your local: ```console git checkout master @@ -124,41 +124,41 @@ Když pracujete na funkcích pro naše nadcházející učební osnovy `další* git reset --hard upstream/next-python-projects ``` -2. Vytvořit zálohu +2. Take backup - „Technologie“ ve smyslu všeobecné poznámky k technologii pro „vývoj“, „výrobu“ nebo „užití“ zařízení nebo „softwaru“ uvedených v položkách 3A, 3B nebo 3D. Buď smažte svou místní větev po přijetí zálohy (pokud ji stále lokálně máte): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout - # příklad: + # example: # git checkout feat/add-numpy-video-question git checkout -b - # příklad: - # git checkout -b backup-feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - „Technologie“ ve smyslu všeobecné poznámky k technologii pro „vývoj“, „výrobu“ nebo „užití“ zařízení nebo „softwaru“ uvedených v položkách 7A, 7B nebo 7C. Nebo jen zálohu vaší pr větve (pokud ji lokálně nemáte): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # příklad: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Začněte s čistým slatem: +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Vyřešit konflikty a vyčistit, nainstalovat testy +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean @@ -172,8 +172,8 @@ Když pracujete na funkcích pro naše nadcházející učební osnovy `další* ``` -6. Pokud vše vypadá dobře zpátky do PR +6. If everything looks good push back to the PR ```console - git push --force původ + git push --force origin ``` diff --git a/docs/i18n/Czech/how-to-setup-freecodecamp-locally.md b/docs/i18n/Czech/how-to-setup-freecodecamp-locally.md index 1bbc16d206..619db733cf 100644 --- a/docs/i18n/Czech/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Czech/how-to-setup-freecodecamp-locally.md @@ -1,326 +1,326 @@ -Postupujte podle těchto pravidel pro lokální nastavení freeCodeCamp ve vašem systému. To je velmi doporučeno, pokud chcete přispívat pravidelně. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Pro některé příspěvkové workflow, musíte mít freeCodeCamp běžet lokálně. Například, prohlížení výzev kódování nebo ladění a opravování chyb v kódu. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] Pokud nemáte zájem o nastavení bezplatného CodeCamp lokálně zvážit použití Gitpod, bezplatné online prostředí pro vývojáře. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Otevřít v Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Spustí prostředí vývojáře připraveného ke kódu pro freeCodeCamp ve vašem prohlížeči.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Připravte svůj místní stroj +### How to prepare your local machine -Začněte instalací nezbytného softwaru pro váš operační systém. +Start by installing the prerequisite software for your operating system. -Podporujeme především vývoj na **\*nix** systémech. Naši zaměstnanci a přispěvatelé komunity pravidelně pracují s kódovou databází pomocí nástrojů nainstalovaných na Ubuntu a macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Podporujeme také Windows 10 prostřednictvím WSL2, který můžete připravit na [čtení tohoto průvodce](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Někteří členové komunity se také vyvíjejí na Windows 10 nativně s Git pro Windows (Git Bash) a dalšími nástroji nainstalovanými v Windows. V tuto chvíli nemáme oficiální podporu pro takové nastavení, doporučujeme místo toho použít WSL2. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Předpoklady:** +**Prerequisites:** -| Předpokladem | Verze | Poznámky | -| --------------------------------------------------------------------------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12x` | [LTS rozvrh](https://github.com/nodejs/Release#release-schedule) | -| npm (přichází s Nodem) | `6.x` | Nemá žádné verze LTS, používáme verzi propojenou s Node LTS | -| [MongoDB komunitní server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Poznámky k vydání](https://docs.mongodb.com/manual/release-notes/), Poznámka: Aktuálně jsme na `3.6`, [aktualizace je naplánována](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Pokud máte jinou verzi, nainstalujte prosím doporučenou verzi. Podporujeme pouze problémy s instalací doporučených verzí. Detaily viz [řešení problémů](#troubleshooting). +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Pokud je Node.js již nainstalován na vašem počítači, spusťte následující příkazy pro ověření verzí: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console -uzel -v +node -v npm -v ``` -> [!TIP] Důrazně doporučujeme aktualizovat na nejnovější stabilní verze výše uvedeného softwaru, známého také jako Long Term Support (LTS) release. +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Jakmile máte nainstalované předpoklady, musíte připravit své vývojové prostředí. To je běžné u mnoha vývojových pracovních postupů a budete to muset udělat pouze jednou. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Postupujte podle těchto kroků, abyste mohli své vývojové prostředí připravit:** +**Follow these steps to get your development environment ready:** -1. Nainstalujte [Git](https://git-scm.com/) nebo Vašeho oblíbeného Git klienta, pokud již nemáte. Aktualizujte na nejnovější verzi; verze, která byla připojena k vašemu OS může být zastaralá. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Volitelné, ale doporučeno) [Nastavte klíč SSH](https://help.github.com/articles/generating-an-ssh-key/) pro GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Nainstalujte si editor kódu dle vašeho výběru. +3. Install a code editor of your choice. - Důrazně doporučujeme používat [Visual Studio Code](https://code.visualstudio.com/) nebo [Atom](https://atom.io/). Jsou to skvělé, zdarma a open source editory. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Nastavte odkaz pro editor kódu. +4. Set up linting for your code editor. - V editoru byste měli mít [ESLint](http://eslint.org/docs/user-guide/integrations.html), a zvýrazní vše, co neodpovídá + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!TIP] Neignorujte prosím žádné chyby odkazu. Mají pomoci **vám** a zajistit čistou a jednoduchou kódovou základnu. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Rozštěpit úložiště na GitHubu +## Fork the repository on GitHub -příručce JavaScriptů [ freeCodeCamp.](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Toto je nezbytné, protože umožňuje pracovat na vlastní kopii freeCodeCamp na GitHubu, nebo stáhnout (klonovat) váš repozitář, aby fungoval lokálně. Později budete moci prostřednictvím požadavku na natažení (PR) požádat o změny na hlavní repozitář. +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] Hlavní repozitář na `https://github.com/freeCodeCamp/freeCodeCamp` je často označován jako `předcházející repozitář`. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Vaše rozštěpení na `https://github.com/YOUR_USER_NAME/freeCodeCamp` je často označováno jako `původ`. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Postupujte podle těchto kroků a rozštěpte repozitář `https://github.com/freeCodeCamp/freeCodeCamp`:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Přejděte do repositáře freeCodeCamp na GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. Klikněte na tlačítko "Fork" v pravém horním rohu rozhraní ([Další podrobnosti](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Po rozdělení repozitáře budete pořízeni do kopie repositáře freeCodeCamp na `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
      - Jak rozštěpit volný CodeCamp na GitHubu (snímek obrazovky) + How to fork freeCodeCamp on GitHub (screenshot)
      - Jak rozštěpit bezplatný CodeCamp na GitHubu + How to fork freeCodeCamp on GitHub
      -## Klonovat rozštěpení z GitHub +## Clone your fork from GitHub -[Klonování](https://help.github.com/articles/cloning-a-repository/) je místo, kde **stáhnete** kopii repozitáře z `vzdálené` polohy, kterou buď vlastníte, nebo někdo jiný. V takovém případě je toto vzdálené umístění vaší `fork` z repozitáře freeCodeCamp, který by měl být k dispozici na `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Spustit tyto příkazy na vašem lokálním počítači: +Run these commands on your local machine: -1. Otevřete Terminál / Příkazový příkaz / Shell v adresáři projektů +1. Open a Terminal / Command Prompt / Shell in your projects directory - _tj.: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. Klonujte si rozštěpení volného CodeCamp, nahrazte `YOUR_USER_NAME` vaším GitHub uživatelským jménem +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console - git klonovat --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git + git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Spustit tyto příkazy na vašem lokálním počítači: +This will download the entire freeCodeCamp repository to your projects directory. -Toto stáhne celý freeCodeCamp repositář do adresáře projektů. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Nastavit synchronizaci od nadřazeného +## Set up syncing from parent -Poznámka: `--depth=1` vytvoří mělký klon tvého vidlice s nejaktuálnější historií/commit. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Jak již bylo zmíněno](#fork-the-repository-on-github), hlavní repozitář je určen `před repozitářem`. Vaše rozštěpení označované jako `původ`. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Potřebujete odkaz z vašeho lokálního klonu do `předcházejícího` repozitáře kromě `původu`. To je tak, že můžete synchronizovat změny z hlavního repositáře bez požadavku na opakované vytváření a klonování. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Změnit adresář na nový freeCodeCamp adresář: +1. Change directory to the new freeCodeCamp directory: ```console - cd bezplatný CodeCamp + cd freeCodeCamp ``` -2. Přidat vzdálený odkaz do hlavního repositáře freeCodeCamp: +2. Add a remote reference to the main freeCodeCamp repository: ```console git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Ujistěte se, že konfigurace vypadá správně: +3. Ensure the configuration looks correct: ```console git remote -v ``` - Výstup by měl vypadat jako níže: + The output should look something like below: ```console - původ https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - původ https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Místně spuštěný bezplatný CodeCamp +## Running freeCodeCamp locally -Nyní, když máte lokální kopii freeCodeCamp, můžete sledovat tyto instrukce a spustit je lokálně. To vám umožní: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Náhled úprav na stránky, jak by se objevily na platformě učení. -- Práce na problémech a vylepšeních souvisejících s uživatelským rozhraním. -- Ladit a opravit problémy s aplikačními servery a klientskými aplikacemi. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Pokud se narazíte na problémy, nejprve proveďte vyhledání vašeho problému a zjistěte, zda byl již zodpovězen. Pokud nemůžete najít řešení, prosím prohledejte naše [GitHub problémy](https://github.com/freeCodeCamp/freeCodeCamp/issues) pro řešení a nahlaste problém, pokud ještě nebyl nahlášen. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -A jako vždy, neváhejte skočit na naši [Chatovací místnost na Gitteru](https://gitter.im/FreeCodeCamp/Contributors) nebo [náš Discord server](https://discord.gg/pFspAhS), pro rychlé dotazy. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Pokud jednoduše upravujete soubory, můžete ho přeskočit lokálně. Například provedení `rebase`nebo řešení `sloučení` konfliktů. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Do této části pokynů se vždy můžete vrátit později. Měli byste **** tento krok přeskočit, pokud nepotřebujete spouštět aplikace na vašem počítači. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Přeskočit na provedení změn](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Nastavení závislostí +### Configuring dependencies -#### Krok 1: Nastavte proměnnou prostředí +#### Step 1: Set up the environment variable file -Výchozí API klíče a proměnné prostředí jsou uloženy v souboru `sample.env`. Tento soubor musí být zkopírován do nového souboru s názvem `.env` , který je dynamicky přístupný během instalačního kroku. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Vytvořte kopii "sample.env" a pojmenujte ji ".env". -# Vyplňte potřebné API klíče a tajné klíče: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp vzorek. nv .env +cp sample.env .env # Windows copy sample.env .env ``` -Klávesy v souboru `.env` nejsou __ vyžadovány pro místní spuštění aplikace. Můžete ponechat výchozí hodnoty zkopírované z `vzor.env` jako. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!TIP] Mějte na paměti, pokud chcete používat služby jako Auth0 nebo Algolia, pro tyto služby budete muset získat vlastní API klíče a odpovídajícím způsobem upravit položky v `. nv` soubor. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Krok 2: Instalovat závislosti +#### Step 2: Install dependencies -Tento krok nainstaluje závislosti, které jsou nezbytné pro spuštění aplikace: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Krok 3: Start MongoDB a seed databáze +#### Step 3: Start MongoDB and seed the database -Než budete moci spustit aplikaci lokálně, budete muset spustit službu MongoDB. +Before you can run the application locally, you will need to start the MongoDB service. -> [!POZNÁMKA] Pokud není MongoDB spuštěno v jiném nastavení, než je výchozí nastavení, URL uložená jako hodnota `MONGOHQ_URL` v `. nv` soubor by měl fungovat v pořádku. Pokud používáte vlastní konfiguraci, upravte tuto hodnotu podle potřeby. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Tento krok nainstaluje závislosti, které jsou nezbytné pro spuštění aplikace: +Start the MongoDB server in a separate terminal: -- Na macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- V systému Windows musíte zadat úplnou cestu k binárnímu `mongod` +- On Windows, you must specify the full path to the `mongod` binary ```console - "C:\Program Soubory\MongoDB\Server\3.6\bin\mongod" + "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Ujistěte se, že chcete nahradit `3.6` verzí, kterou jste nainstalovali + Make sure to replace `3.6` with the version you have installed -> [!TIP] Můžete se vyhnout tomu, abyste MongoDB museli kdykoliv spustit instalací služby na pozadí. Můžete se o tom [dozvědět více v jejich dokumentaci pro váš OS](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Dále pojďme získat databázi. V tomto kroku spustíme níže uvedený příkaz, který vyplňuje server MongoDB s počátečními datovými sadami, které jsou vyžadovány službami. Patří k nim mimo jiné několik schémat. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console npm run seed ``` -#### Krok 4: Spusťte klientskou aplikaci FreeCamp a API server +#### Step 4: Start the freeCodeCamp client application and API server -Spusťte MongoDB server v samostatném terminálu: +You can now start up the API server and the client applications. ```console -vývoj npm běhu +npm run develop ``` -Ujistěte se, že chcete nahradit `3.6` verzí, kterou jste nainstalovali +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!POZNÁMKA] Jakmile je tento prohlížeč připraven, otevřete webový prohlížeč a **navštivte **. Pokud se aplikace načítá, blahopřejeme – vše je nastaveno! Nyní máte kopii celé vzdělávací platformy FreeCodeCamp, která běží na vašem místním počítači. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] API Server slouží API na `http://localhost:3000`. Aplikace Gatsby slouží klientské aplikaci na `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Pokud navštívíte [http://localhost:3000/Explorer](http://localhost:3000/explorer) , měli byste vidět dostupné API. +> If you visit you should see the available APIs. -## Přihlásit se s místním uživatelem +## Sign in with a local user -Vaše místní nastavení automaticky vyplní místního uživatele v databázi. Kliknutím na tlačítko `Přihlásit se` vás automaticky ověří do místní aplikace. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Nicméně přístup k uživatelským portfoliovým stránkám je trochu trický. Ve vývoji, Gatsby přebírá obsluhu stránek na straně klienta a proto dostanete `404` stránku pro uživatelské portfolio při lokálním fungování. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Tento jediný příkaz spustí všechny služby, včetně API serveru a klientských aplikací, na kterých můžete pracovat. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
      - Jak se přihlásit při práci na místě (snímek obrazovky) + How to sign in when working locally (screenshot)
      - Jak se přihlásit při práci na místě + How to sign in when working locally
      -## Probíhá lokální změny +## Making changes locally -Nyní můžete provést změny v souborech a provést změny v místním klonu rozštěpení. +You can now make changes to files and commit your changes to your local clone of your fork. -Postupujte podle těchto kroků: +Follow these steps: -1. Ověřte, že jste na `master` větvi: +1. Validate that you are on the `master` branch: ```console git status ``` - Měli byste získat výstup takto: + You should get an output like this: ```console - Na pobočce master - Vaše větev je aktuální s 'původ/mistrovství'. + On branch master + Your branch is up-to-date with 'origin/master'. - nic k ověření, čištění pracovního adresáře + nothing to commit, working directory clean ``` - Pokud nejste na mistru nebo není váš pracovní adresář čistý, vyřešte všechny nevyřízené soubory/commity a pokladnu `master`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - mistr git pokladny + git checkout master ``` -2. Synchronizujte nejnovější změny z volné CodeCamp proti proudu `master` do vaší místní hlavní větve: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!VAROVÁNÍ] Pokud máte nějaký nevyřízený požadavek na natažení, který jste podali od `master` větve tvého vidlice, na konci tohoto kroku je ztratíte. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Před provedením tohoto kroku byste měli zajistit, aby byl váš požadavek na natažení sloučen moderátorem. Abychom se tomuto scénáři vyhnuli, měli byste **vždy** pracovat na jiné větvi než je `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Tento krok **synchronizuje nejnovější změny** z hlavního repositáře freeCodeCamp. Je důležité, abyste přeorientovali větev na nejnovější `upstream/master` co nejčastěji, abyste se později vyhnuli konfliktům. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Aktualizujte svou lokální kopii repositáře freeCodeCamp před repozitářem: + Update your local copy of the freeCodeCamp upstream repository: ```console - git načíst proti proudu + git fetch upstream ``` - Těžko resetovat svou hlavní větev pomocí volného CodeCamp master: + Hard reset your master branch with the freeCodeCamp master: ```console - git resetuje --hard upstream/master + git reset --hard upstream/master ``` - Stiskněte svou hlavní větev do svého původu, abyste měli čistou historii na tvém forku na GitHubu: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console git push origin master --force ``` - Váš aktuální mistr se shoduje s aktuálním streamem/mistrem tím, že provedete rozdíl: + You can validate your current master matches the upstream/master by performing a diff: ```console - git odlišit nahoru/master + git diff upstream/master ``` - Výsledný výstup by měl být prázdný. + The resulting output should be empty. -3. Vytvořit novou větev: +3. Create a fresh new branch: - Práce na samostatné pobočce pro každý problém vám pomůže udržet vaši místní kopii čistý. Nikdy byste neměli pracovat na `mistrovi`. Uloží vaši kopii freeCodeCamp a možná budete muset začít s novým klonem nebo vidlicí. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Zkontrolujte, zda jste na `master` , jak bylo vysvětleno výše, a odsud odešlete od: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Název větve by měl začínat `fix/`, `funkcí/`, `dokumentací/`, atd. Vyhněte se používání čísel úkolů v větvích. Uchovávejte je krátké, smysluplné a jedinečné. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Mezi dobré názvy poboček patří: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,156 +330,156 @@ Postupujte podle těchto kroků: translate/add-spanish-basic-html ``` -4. Upravte stránky a pracujte na kódu v oblíbeném textovém editoru. +4. Edit pages and work on code in your favorite text editor. -5. Jakmile jste spokojeni se změnami, měli byste volitelně spustit freeCodeCamp pro zobrazení změn. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Ujistěte se, že jste opravili chyby a zkontrolujte formátování změn. +6. Make sure you fix any errors and check the formatting of your changes. -7. Zkontrolujte a potvrďte aktualizované soubory: +7. Check and confirm the files you are updating: ```console git status ``` - Toto by mělo zobrazit seznam `nefázovaných` souborů, které jste upravili. + This should show a list of `unstaged` files that you have edited. ```console - Funkce větev / dokumentace - Vaše větev je aktuální s 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Změny nejsou ve stadiu pro commit: - (použijte "git add/rm ... pro aktualizaci toho, co bude přidáno) - (použijte "git checkout -- . " pro odstranění změn v pracovním adresáři) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - změněny: PŘÍSPĚVEK d - změněn: dokumenty/README.md - změněny: dokumenty/how-to-setup-freecodecamp-local. d - změněny: dokumentaci/jak-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Funguje změny a učiní závazek: +8. Stage the changes and make a commit: - V tomto kroku byste měli označit pouze soubory, které jste upravili nebo přidali. Můžete provést resetování a vyřešit soubory, které jste v případě potřeby nezamýšleli změnit. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console - git přidat cestu/do/my/changed/file.ext + git add path/to/my/changed/file.ext ``` - Nebo můžete přidat všechny `nefázované` soubory do oblasti přípravy: + Or you can add all the `unstaged` files to the staging area: ```console git add . ``` - Až vytvoříte commit, budou přidány pouze soubory, které byly přesunuty do přípravné oblasti. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Výstup: + Output: ```console - Funkce větev / dokumentace - Vaše větev je aktuální s 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Změny, které mají být provedeny: - (použijte "git reset HEAD ..." to unstage) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - změněny: CONTRIBUTING.md - změněny: docs/README.md - změněny: docs/how-to-setup-freecodecamp-locally.md - upraveno: docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Nyní můžete provést své změny s krátkou zprávou, jako je toto: + Now, you can commit your changes with a short message like so: ```console - git commit -m "opravit: moje krátká zpráva commitu" + git commit -m "fix: my short commit message" ``` - Některé příklady: + Some examples: ```md - oprava: update guide article for Java - for smyčka + fix: update guide article for Java - for loop feat: add guide article for alexa skills ``` - Nepovinné: + Optional: - Důrazně doporučujeme vytvořit konvenční zprávu commitu. Toto je dobrá praxe, kterou uvidíte u některých populárních Open Source repozitářů. Jako vývojář vás to povzbuzuje ke sledování standardních postupů. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Některé příklady konvenčních zpráv commitů jsou: + Some examples of conventional commit messages are: ```md - oprava: update HTML guide article + fix: update HTML guide article fix: update build scripts for Travis-CI feat: add article for JavaScript hoisting - docs: update přispívající pravidla + docs: update contributing guidelines ``` - Zachovat tyto krátké, ne více než 50 znaků. V popisu zprávy commitu můžete vždy přidat další informace. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Netrvá to více času než nekonvenční zpráva jako 'update file' nebo 'add index.md' + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Více informací o tom, proč byste měli používat konvenční commity [zde](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Pokud si uvědomíte, že po provedení revize je třeba upravit soubor nebo aktualizovat zprávu commitu, můžete tak učinit po úpravě souborů: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console git commit --amend ``` - Tímto se otevře výchozí textový editor, jako je `nano` nebo `vi` , kde můžete upravit název zprávy a přidat/upravit popis. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Dále můžete odeslat své změny na rozštěpení: +10. Next, you can push your changes to your fork: ```console git push origin branch/name-here ``` -## Návrh požadavku na natažení (PR) +## Proposing a Pull Request (PR) -Poté, co jste změnili své změny, podívejte se zde na [jak otevřít Pull Request](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Odkaz na rychlé příkazy +## Quick commands reference -Nyní můžete provést změny v souborech a provést změny v místním klonu rozštěpení. +A quick reference to the commands that you will need when working locally. -| příkaz | Popis | -| -------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `npm ci` | Instalujte / přeinstalujte všechny závislosti a bootstrapy různé služby. | -| `npm run seed` | Analyzuje všechny soubory challenge markdown a vloží je do MongoDB. | -| `vývoj npm běhu` | Spustí Free CodeCamp API Server a aplikace klienta. | -| `npm test` | Spustit všechny JS testy v systému, včetně klienta, serveru, linky a challenge testů. | -| `npm run test:klient` | Spustit klientskou testovací sadu. | -| `npm run test:curriculum` | Spustit testovací sadu učebních plánů. | -| `npm run test:curriculum --block='Základní HTML a HTML5'` | Vyzkoušejte specifický blok. | -| `npm run test:curriculum --superblock='responsive-web-design'` | Vyzkoušejte specifický SuperBlock. | -| `npm run test-curriculum full-výstup` | Po první chybě spustit testovací sadu učebních osnov | -| `npm run test:server` | Spustit serverovou testovací sadu. | -| `npm běh e2e` | Spusťte konec Cypresu pro ukončení testů. | -| `npm vyčistit` | Odinstaluje všechny závislosti a vyčistí mezipaměti. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Řešení problémů +## Troubleshooting -### Problémy s instalací doporučených předpokladů +### Issues with installing the recommended prerequisites -Postupujte podle těchto kroků: +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Doporučujeme prozkoumat váš konkrétní problém u zdrojů, jako je Google, Stack Overflow nebo Stack Exchange. Existuje velká šance, že někdo čelil stejnému problému a na váš konkrétní dotaz již existuje odpověď. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Pokud jste na jiném OS a/nebo stále běžejí problémy, podívejte se na [získání nápovědy](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> Pokud navštívíte [http://localhost:3000/Explorer](http://localhost:3000/explorer) , měli byste vidět dostupné API. +> [!WARNING] > -> Vyhněte se prosím vytváření GitHub problémů v nezbytných podmínkách. Jsou mimo rozsah tohoto projektu. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Problémy s uživatelským rozhraním, písmy, chyby sestavení atd. +### Issues with the UI, Fonts, build errors etc. -Pokud narazíte na problémy s UI, fonty nebo uvidíte chyby sestavení, může být čištění užitečné: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean @@ -488,17 +488,17 @@ npm run seed npm run develop ``` -NEBO +OR -Použít zástupce +Use the shortcut ``` -npm běh čištění a vývoj +npm run clean-and-develop ``` -Výsledný výstup by měl být prázdný. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Použít `git čištění` v interativním režimu: +Use `git clean` in interative mode: ``` git clean -ifdX @@ -506,41 +506,41 @@ git clean -ifdX
      - Jak vyčistit git nesledované soubory (screenshot) + How to clean git untracked files (screenshot)
      - Jak vyčistit git nesledované soubory + How to clean git untracked files
      -### Problémy s API, přihlášením, podáním výzvy atd. +### Issues with API, Login, Challenge Submissions, etc. -Pokud se nemůžete přihlásit a místo toho uvidíte banner s chybovou zprávou, že bude nahlášen na freeCodeCamp, prosím zkontrolujte, zda váš místní port `3000` není používán jiným programem. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**Na Linuxu / macOS / WSL na Windows - Z terminálu:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console netstat -ab | grep "3000" -tcp4 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**Na Windows - Z Elevated PowerShell:** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab | Vybraný řetězec "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Problémy při instalaci závislostí +### Issues installing dependencies -Nepovinné: +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -Nastavení může chvíli trvat poprvé, v závislosti na šířce pásma. Buďte trpěliví, a pokud jste stále uvězněni, obnovujeme místo offline nastavení GitPod. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Získávání nápovědy +## Getting Help -Pokud jste uvízli a potřebujete pomoc, dejte nám vědět tím, že se zeptáte v kategorii ['přispěvatelé' na našem fóru](https://forum.freecodecamp.org/c/contributors) nebo [přispěvatelé](https://gitter.im/FreeCodeCamp/Contributors) na Gitteru. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -V konzoli prohlížeče nebo v Bash / Terminálu / příkazovém řádku může být chyba, která pomůže identifikovat problém. Zadejte tuto chybovou zprávu v popisu problému, aby ostatní mohli problém snadněji identifikovat a pomohli vám najít řešení. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Czech/how-to-setup-wsl.md b/docs/i18n/Czech/how-to-setup-wsl.md index 9d3bdce310..68bce6dde6 100644 --- a/docs/i18n/Czech/how-to-setup-wsl.md +++ b/docs/i18n/Czech/how-to-setup-wsl.md @@ -1,80 +1,80 @@ -# Nastavit freeCodeCamp na Windows Subsystem pro Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!POZNÁMKA] Dříve než budete postupovat podle těchto pokynů, ujistěte se, že váš systém splňuje požadavky +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (verze 2004, Build 19041 nebo vyšší) - k dispozici pro všechny distribuce včetně Windows 10 Domů. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop pro Windows**: Viz příslušné požadavky pro [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) a [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Tento návod pokrývá některé společné kroky s nastavením WSL2. jakmile se řeší některé společné problémy s WSL2, byste měli být schopni sledovat náš místní průvodce nastavením a pracovat s freeCodeCamp na systému Windows a běžet tak jako Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Povolit WSL +## Enable WSL -Postupujte podle pokynů na [oficiální dokumentaci](https://docs.microsoft.com/en-us/windows/wsl/install-win10) a nainstalujte WSL1 a poté přejděte na WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Doporučujeme používat Ubuntu-18.04 nebo vyšší s WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!POZNÁMKA] + > [!NOTE] > - > I když můžete použít jiné nedebianské distros, všechny přicházejí s jejich vlastními gotchas a jsou mimo rámec tohoto průvodce. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Aktualizovat závislosti pro OS +2. Update the dependencies for the OS ```console sudo apt update sudo apt upgrade -y - # čištění + # cleanup sudo apt autoremove -y ``` -## Nastavit Git +## Set up Git -Git přichází předinstalovaný s Ubuntu 18.04, ověřte, zda vaše Git verze s `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ - git --version -git verze 2.25.1 +❯ git --version +git version 2.25.1 ``` -(Volitelné, ale doporučeno) Nyní můžete pokračovat v [nastavení ssh klíče](https://help.github.com/articles/generating-an-ssh-key) pomocí GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Instalace editoru kódu +## Installing a Code Editor -Důrazně doporučujeme nainstalovat [Visual Studio Code](https://code.visualstudio.com) na Windows 10. Má velkou podporu pro WSL a automaticky nainstaluje všechna potřebná rozšíření do distro. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -V podstatě upravíte a uložíte svůj kód na Ubuntu-18.04 s VS kódem nainstalovaným v Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Instalace Docker Desktop +## Installing Docker Desktop -**Docker Desktop pro Windows** umožňuje instalovat a spouštět databázi a služby jako MongoDB, NGINX, atd. To je užitečné, abychom se vyhnuli běžným nástrahám při instalaci MongoDB nebo jiných služeb přímo na Windows nebo WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Postupujte podle instrukcí na [oficiální dokumentaci](https://docs.docker.com/docker-for-windows/install) a nainstalujte Docker Desktop pro vaši distribuci Windows. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Existují minimální požadavky na hardware pro nejlepší zážitky. +There are some minimum hardware requirements for the best experience. -## Konfigurace Docker pro WSL +## Configure Docker Desktop for WSL -Jakmile je Docker Desktop nainstalován, [postupujte podle těchto instrukcí](https://docs.docker.com/docker-for-windows/wsl) a nastavte jej tak, aby byla jako backend použita instalace Ubuntu-18.04. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -To znamená, že kontejnery běží na WSL místo běhu na Windows. Budete mít přístup ke službám přes `http://localhost` jak na Windows, tak na Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Instalovat MongoDB z Docker Hub +## Install MongoDB from Docker Hub -Jakmile jste nakonfigurovali Docker pro práci s WSL2, postupujte podle těchto kroků pro spuštění služby MongoDB: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Spustit nový terminál Ubuntu-18.04 +1. Launch a new Ubuntu-18.04 terminal -2. Pull `MongoDB 3.6` z dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Spusťte službu MongoDB na portu `27017`a nastavte ji tak, aby běžela automaticky při restartování systému +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console docker run -it \ @@ -85,13 +85,13 @@ Jakmile jste nakonfigurovali Docker pro práci s WSL2, postupujte podle těchto -d mongo:3 ``` -4. Nyní máte přístup ke službě jak z Windows tak z Ubuntu na `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Instalace Node.js a npm +## Installing Node.js and npm -Doporučujeme nainstalovat verzi LTS pro Node.js se správcem verzí uzlu - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Po instalaci použijte tyto příkazy k instalaci a použijte podle potřeby verzi Node.js +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts @@ -107,23 +107,23 @@ nvm install 14 nvm use 12 ``` -Node.js přichází s `npm`, můžete aktualizovat na nejnovější verze `npm` pomocí: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console npm install -g npm@latest ``` -## Nastavit volný CodeCamp lokálně +## Set up freeCodeCamp locally -Nyní, když jste nainstalovali předběžné požadavky, postupujte podle [našeho místního průvodce nastavením](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) pro klonování, instalaci a nastavení freeCodeCamp lokálně na vašem počítači. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!VAROVÁNÍ] +> [!WARNING] > -> Mějte prosím na paměti, že právě probíhá nastavení Cypress testů (a související potřeby GUI). Měli byste být stále schopni pracovat na většině kódu. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Užitečné odkazy +## Useful Links -- [WSL2 Dev Setup s Ubuntu 20.04, Node.js, MongoDB, VS Code a Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - článek Mrugesh Mohapatra (Staff Developer na freeCodeCamp.org) -- Často kladené otázky na: - - [Podsystém Windows pro Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Docker pro Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Czech/how-to-use-docker-on-windows-home.md b/docs/i18n/Czech/how-to-use-docker-on-windows-home.md index 30ef877eb1..85ac65a3e3 100644 --- a/docs/i18n/Czech/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Czech/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Jak používat Docker na Windows Home +# How to use Docker on Windows Home -Při nastavení doku na Windows Home je třeba se vyhnout několika nástrahám. Nejprve musíte použít [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) jako správce. Windows Home bohužel nepodporuje Docker pro Windows Desktop, proto musí být místo toho použit panel nástrojů. Musí být spuštěn jako administrátor, protože instalace používá symlinky, které nelze vytvořit jinak. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Po instalaci panelu nástrojů spusťte Docker Quickstart Terminal jako správce. Tímto vytvoříte `výchozí` virtuální stroj, pokud již neexistuje. Jakmile k tomu došlo, zavřete terminál a otevřete VirtualBox (opět jako Administrator). Měli byste mít možnost vidět `výchozí` počítač. Stránka je poměrně náročná na zdroje, takže zastavit virtuální stroj a zvýšit nastavení co nejvíce můžete - zejména paměť. Bylo potvrzeno, že pracuje se 4GB rázu. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Jakmile jste spokojeni, že Docker funguje, naklonujte freeCodeCamp repositář do adresáře uvnitř `C:\Users`. Tyto adresáře jsou sdíleny tak, aby dokovací adresáře měly přístup k místním adresářům, které potřebuje během instalace. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Pokud vidíte zprávy jako +If you see messages like ```shell -bash: change_volumes_owner.sh: žádný takový soubor nebo adresář +bash: change_volumes_owner.sh: No such file or directory ``` -když `npm spustíte docker:init` je to pravděpodobně viník. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Czech/how-to-work-on-coding-challenges.md b/docs/i18n/Czech/how-to-work-on-coding-challenges.md index 3ce824f0b3..2b95545e91 100644 --- a/docs/i18n/Czech/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Czech/how-to-work-on-coding-challenges.md @@ -1,286 +1,367 @@ -# Jak pracovat na programování úkolů +# How to work on coding challenges -Naším cílem je rozvíjet zábavné a jasné interaktivní učení. +Our goal is to develop a fun and clear interactive learning experience. -Navrhování interaktivních úkolů kódování je obtížné. Bylo by mnohem snazší napsat dlouhé vysvětlení nebo vytvořit video tutoriál, a je zde místo pro lidi na středním a YouTube. Nicméně pro naše základní osnovy se držíme toho, co funguje nejlépe pro většinu lidí - plně interaktivní zážitek z videoher. +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. -Chceme kamery, aby se dosáhlo stavu toku. Chceme, aby prostřednictvím našich osnov vytvořili hybnou sílu a s co nejmenším počtem hlemýžďů. Chceme, aby se zapojili do projektů s důvěrou a získali velké vystavení koncepcím programování. +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. -Vytváření těchto výzev vyžaduje obrovskou tvořivost a pozornost k detailům. K dispozici je spousta pomoci. Budete mít podporu od celého týmu přispěvatelů, kterým se můžete odvracet nápady a demo své výzvy. Zůstaňte aktivní v [přispěvatelském sále](https://gitter.im/freecodecamp/contributors) a položte mnoho otázek. +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/). -S Vaší pomocí můžeme navrhnout interaktivní programovací osnovy, které pomohou milionům lidí naučit se programovat v následujících letech. +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. -Obsah každé výzvy je uložen v jeho vlastním markdown souboru. Tento soubor markdown je později převeden na HTML pomocí našich nástrojů pro vytváření interaktivních webových stránek. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Veškerý obsah měn freeCodeCamp.org naleznete v adresáři [`/curriculum/challenge`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges). +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. -## Nastavit nástroj pro učební plány +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Než budete pracovat na učebních plánech, musíte nastavit nějaké nástroje, které vám pomohou vyzkoušet vaše změny. Můžete použít libovolnou možnost z níže: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- Můžete [nastavit volný CodeCamp lokálně](how-to-setup-freecodecamp-locally.md). To je **vysoce doporučeno** pro pravidelné/opakované příspěvky. Toto nastavení vám umožní pracovat a otestovat vaše změny. -- Použijte Gitpod, bezplatné online prostředí pro vývojáře. Kliknutím na tlačítko níže spustíte prostředí pro vývojáře freeCodeCamp ve vašem prohlížeči. Trvá to jen několik minut. +## Set up the tooling for the curriculum - [![Otevřít v Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Upravte soubory na rozhraní GitHubu kliknutím na ikonu tužky pro odpovídající soubor. I když je to nejrychlejší způsob, není doporučeno ****, protože nejste schopni otestovat změny na GitHubu. Pokud naši správci dospějí k závěru, že změny, které jste provedli, musí být vyzkoušeny lokálně, musíte místo toho znovu použít výše uvedené metody. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Šablona výzvy + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Níže je šablona toho, jak vypadají soubory challenge markdown v současné době. Chcete-li zobrazit zjednodušenou šablonu, uvidíme [níže](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: jedinečný identifikátor (alfanumerický, MongoDB_id) -název: Challenge Title +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 0 videoUrl: 'url of video explanation' --- -## Popis +## Description
      -Popis challenge a co je nutné předat +A Description of the challenge and what is required to pass
      -## Instrukce +## Instructions
      -Instrukce o tom, co přesně je třeba udělat. +Instructions about what exactly needs to be done.
      -## Testy +## Tests
      ```yml -testy: - - text: Měl by vrátit "foo" - testString: 'Stringified funkce možná pomocí Chai asserts' +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
      -## Seed výzvy +## Challenge Seed
      ```{ext} -Kód zobrazený ve výchozím nastavení v editoru. +Code displayed in the editor by default. -Toto je požadovaná sekce pro výzvu. +This is a required section for the challenge. ```
      -### Před zkouškou +### Before Test
      ```{ext} -Volitelný kód pro testovací nastavení. +Optional Test setup code. ```
      -### Po zkoušce +### After Test
      ```{ext} -Volitelný kód testu dolů. +Optional Test tear down code. ```
      -## Roztok +## Solution
      ```{ext} -// řešení vyžadováno +// solution required ```
      ```` -> [!POZNÁMKA] +> [!NOTE] > -> 1. Ve výše uvedených oddílech příklady `{ext}` jsou: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Pro část `Tests` výše, `text` a `testString` by měly být platné YAML řetězce. `testString` může být stringified funkce nebo výraz, který může používat Chai tvrzení. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Číslování výzev +## Numbering Challenges -Každá výzva potřebuje `id`. Pokud jej nespecifikujete, MongoDB vytvoří náhodně nový při ukládání dat; nechceme to však udělat, protože chceme, aby byly děti spojené s výzvou napříč různými prostředími (stagnace, výroba, spousta různých vývojářů atd.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -Možnost generovat nový ve skořápce (za předpokladu, že MongoDB běží samostatně): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Spustit příkaz `mongo`. -2. Spustit příkaz `ObjectId()`. +1. Run `mongo` command. +2. Run `ObjectId()` command. -Například: +For example: ```bash $ mongo -MongoDB shell verze v3.6.1 -připojující se k: mongodb://127.0.0.1:27017 -MongoDB verze serveru: 3.4.10 +MongoDB shell version v3.6.1 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Výsledkem je nový id, například `5a474d78df58bafeb35d34`. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -Jakmile budete mít své id , vložte jej do souboru markdown jako pole `id` nahoře, např. +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- -id: 5a474d78df58bafeb35d34 -název: Challenge Title +id: 5a474d78df58bafeb3535d34 +title: Challenge Title ``` -## Pojmenovávání úkolů +## Naming challenges -Pojmenování věcí je těžké. Usnadnili jsme to zavedením určitých omezení. +Naming things is hard. We've made it easier by imposing some constraints. -Všechny názvy výzev by měly být explicitní a měly by odpovídat tomuto vzoru: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[klauzule objektu\] +\[verb\]\[object clause\] -Zde je několik příkladů názvů výzev: +Here are some example challenge names: -- Použít upozornění ve směru hodinových ručiček pro zadání Padding prvku -- Kondenzovaná pole s .redukcí -- Použijte poznámku závorek k nalezení první postavy v řetězci +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Popisy/pokyny k výzvě +## Challenge descriptions/instructions -Věty by měly být jasné a stručné s minimálním žargonem. V případě použití by měl být žargon okamžitě definován v jednoduché angličtině. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Zachovejte odstavce krátké (kolem 1-4 vět). Pravděpodobně si lidé přečtou několik krátkých odstavců než zeď textu. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Text výzvy by měl použít druhou osobu („vy“), aby jí pomohl dát konverzační tón. Tímto způsobem text a instrukce vypadají, že mluví přímo s kamerem, který pracuje výzvou. Zkuste se vyhnout používání první osoby ("I", "my", "let's" a "ná"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Nepoužívat odchozí odkazy. To přerušilo tok. Kameraři by nikdy neměli v těchto výzvách nic vygoognovat. Pokud existují zdroje, které by podle vás mohly mít užitek, přidejte je do článku příručky pro výzvu. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -V případě potřeby můžete přidat diagramy. +You can add diagrams if absolutely necessary. -Nepoužívat emoji ani emotikony v výzvách. freeCodeCamp má globální komunitu a kulturní význam emoji nebo emotikonu se může po celém světě lišit. Na různých systémech se mohou zobrazovat emoji odlišně. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Řádné nouny by měly používat správnou kapitalizaci, pokud je to možné. Níže je seznam slov, která by se měla objevit v výzvách. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (velká písmena v "J" a "S" a bez zkratek) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Vývoj front-end (přídavný formulář s pomlčkou) je při práci na předním konci (jmenný formulář bez pomlčky). Totéž platí pro "back end", "full stack" a mnoho dalších složených termínů. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### Dvouminutové pravidlo +### The 2-minute rule -Každá výzva by měla být vyřešena do 120 sekund rodilým anglickým mluvčím, který dokončil výzvy, které jí přináší. To zahrnuje dobu potřebnou k přečtení směrů/instrukcí rozumí kódu seedu, napište svůj vlastní kód a získejte všechny testy. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Pokud to trvá déle než dvě minuty, máte dvě možnosti: +If it takes longer than two minutes to complete the challenge, you have two options: -- Zjednodušit výzvu, nebo -- Rozdělte výzvu na dvě výzvy. +- Simplify the challenge, or +- Split the challenge into two challenges. -Dvouminutové pravidlo tlačí tvůj návrhář, aby tvé pokyny byly stručné, aby tvůj zdrojový kód byl jasný a tvé testy byly jednoduché. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Sledujeme, jak dlouho trvá kamera, aby vyřešili změny a použili tyto informace k identifikaci výzev, které je třeba zjednodušit nebo rozdělit. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modularita +### Modularity -Každá výzva by měla naučit přesně jeden koncept a tento koncept by měl být zřejmý z názvu výzvy. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Dříve zakryté koncepty můžeme posílit opakováním a odlišnostmi - například zavedení prvků h1 do jedné výzvy, poté h3 bude mít později několik výzev. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Naším cílem je mít tisíce dvouminutových výzev. Ty mohou společně proudit a zopakovat dříve zakryté koncepce. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Formátování textu výzvy +### Formatting challenge text -Zde jsou konkrétní směry formátování pro text výzvy a příklady: +Here are specific formatting guidelines for challenge text and examples: -- Klíčová slova jazyka jdou do značek ``. Například, názvy HTML značek nebo názvy CSS vlastností -- První instance klíčového slova, když je definováno, nebo obecná klíčová slova (např. "objekt" nebo "neměnitelná") jdou na `` tagy -- Odkazy na části kódu (tj. funkce, metoda nebo názvy proměnných) by měly být baleny do značek ``. Viz příklad níže: -- Použijte parseInt k převodu proměnné realNumber na celé číslo. -- Bloky víceřádkových kódů **musí předcházet prázdný řádek**. Další řádek musí začínat třemi zadními vrátky, po nichž bezprostředně následuje jeden z [podporovaných jazyků](https://prismjs.com/#supported-languages). Chcete-li dokončit blok kódu, musíte spustit novou řádek, který má pouze tři zadky a **další prázdný řádek**. **Poznámka:** Pokud chcete použít příklad kódu v YAML, použít `yaml` místo `yml` pro jazyk vpravo od backtiků. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Viz příklad níže: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Příklad kódu: +The following is an example of code: ```{language} -[VAŠE KÓD ŠERE] +[YOUR CODE HERE] ```` ```` -- Další informace ve formě poznámky by měly být formátovány `Poznámka: Zbytek textu poznámky... -- Pokud je zapotřebí více poznámek, pak uveďte všechny poznámky v samostatných větách ve formátu `Poznámky: Text první poznámky. Text druhé poznámky.`. -- Použijte v případě potřeby dvojí uvozovky +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Testy psaní +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Výzvy by měly mít minimální počet zkoušek nutný k ověření, že kampery rozumí koncepci. +## Writing tests -Naším cílem je komunikovat o jediném bodu, který se výzva snaží vyučovat, a otestovat, zda tento bod pochopili. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Testy výzev mohou využít výpočetní knihovny Node.js a Chai.js. V případě potřeby je k dispozici uživatelsky generovaný kód v proměnné `code`. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Formátování kódu seedu +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Zde jsou specifické pokyny pro formátování kódu challenge seedu: +## Formatting seed code -- Používejte dvě mezery k odsazení -- příkazy JavaScriptu končí středníkem -- Použijte dvojité uvozovky, kde je to na místě, -- Komentáře by měly mít mezeru mezi znaky komentáře a komentářem samotným +Here are specific formatting guidelines for the challenge seed code: - `// Opravit tuto řádek` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable + +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
      + { /* Change code below this line */ } + + { /* Change code above this line */ } +

      {this.state.text}

      +
      + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions -Každá výzva má tlačítko `Získat nápovědu`, aby uživatel měl přístup k jakýmkoli nápovědám/řešením, která byla vytvořena pro výzvu. Témata kuriculum hints/solutions jsou umístěna na [našem fórum](https://forum.freecodecamp.org/c/guide) v kategorii `Guide`. +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. -Pokud najdeš problém s tématem nápovědy/řešení existující výzvy, můžeš předložit návrhy v kategorii [přispěvatelů](https://forum.freecodecamp.org/c/contributors) na fóru. Moderátoři a uživatelé s úrovní důvěry 3 prověří připomínky a rozhodnou, zda zahrnou změny do příslušného tématu h/řešení. +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. -### Přidání nových nápověd/řešení výzev +### Adding new Challenge hints/solutions Topics -Proveďte následující kroky při přidání nových nápověd/řešení souvisejících otázek. +Take the following steps when adding a new challenge hints/solutions related topic. -1. Začněte sledováním stejných kroků pro vytvoření nového tématu, ale podívejte se na další pro vytvoření titulku. -2. Titulek tématu by měl začínat `freeCodeCamp Challenge Guide: ` spojen se skutečným názvem výzvy učebních plánů. Například, pokud je výzva pojmenována ""Chunky Monkey", titulek tématu bude ""freeCodeCamp Challenge Guide: Chunky Monkey". -3. `camperbot` by měl být vlastníkem těchto témat/příspěvků, takže budete muset požádat správce, aby změnil vlastnictví hlavního příspěvku na `camperbot`. -4. Jakmile je nové téma vytvořeno, je vytvořeno ID tématu fóra. Je umístěn na konci URL tématu fóra. Toto ID musí být přidáno do fronty souboru výzev učebních plánů pomocí normálního procesu požadavku na natažení pro tlačítko `Získat nápovědu` pro propojení s tématem. +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. -### Pokyny pro obsah témat tipů a řešení +### Guidelines for content of hints and solutions topics -Při navrhování řešení pro téma průvodce učebních osnov, musí být přidán celý kód. To zahrnuje všechny původní kódy osiva a veškeré změny potřebné k provedení všech provokačních testů. Následující šablona by měla být použita při vytváření nových témat nápověd/řešení: +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: ````md # Challenge Name Goes Here --- -## Vysvětlení problémů +## Problem Explanation -Toto shrnuje, co je třeba udělat, aniž by jen opakovalo popis challenge a/nebo pokyny. Toto je volitelná sekce +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section #### Relevant Links -- [Link Text](link_url_goes_here e) +- [Link Text](link_url_goes_here) - [Link Text](link_url_goes_here) --- @@ -289,101 +370,101 @@ Toto shrnuje, co je třeba udělat, aniž by jen opakovalo popis challenge a/neb ### Hint 1 -Hint zde +Hint goes here ### Hint 2 -Hint zde +Hint goes here --- ## Solutions -
      Řešení 1 (Click to Show/Hide) +
      Solution 1 (Click to Show/Hide) ```js -funkce myFunc() { - konzola. og('Hello World!'); +function myFunc() { + console.log('Hello World!'); } ```` -#### Vysvětlení kódu +#### Code Explanation -- Vysvětlení kódu je zde -- Vysvětlení kódu je zde +- Code explanation goes here +- Code explanation goes here -#### Relevantní odkazy +#### Relevant Links -- [Text odkazu](link_url_goes_here) -- [Text odkazu](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
      ```` -## Testování výzev +## Testing Challenges -Předtím, než [vytvoříš požadavek na natažení](how-to-open-a-pull-request. d) pro vaše změny, musíte potvrdit, že změny, které jste provedli, nezpůsobují neúmyslně problémy s výzvou. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Pro otestování všech challenge spusťte příkaz níže z kořenového adresáře +1. To test all challenges run the below command from the root directory ```` npm run test:curriculum ``` -2. Můžeš také otestovat blok nebo superblok výzev pomocí těchto příkazů +2. You can also test a block or a superblock of challenges with these commands ``` -npm run test:curriculum --block='Základní HTML a HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` npm run test:curriculum --superblock=responsive-web-design ``` -Můžete také vyzkoušet jednu výzvu individuálně provedením následujících kroků: +You are also able to test one challenge individually by performing the following steps: -1. Přepněte do adresáře `curriculum`: +1. Switch to the `curriculum` directory: ``` - cd osnovy + cd curriculum ``` -2. Spusťte následující pro každý soubor s výzvou, pro který jste změnili: +2. Run the following for each challenge file for which you have changed: ``` - npm run test -- -g 'The full Czech title of the challenge' + npm run test -- -g 'the full English title of the challenge' ``` -Jakmile jste ověřili, že každá výzva prošla testy, [prosím vytvořte požadavek na natažení](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> Můžete nastavit proměnnou prostředí `LOCALE` v jazyce `.env` na jazyk výzev, které musíte testovat. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> Aktuálně přijaté hodnoty jsou `english` a `chinese`, přičemž `english` je ve výchozím nastavení nastaveno. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Nadcházející šablona výzvy +## Upcoming Challenge Template -Šablona výzvy v procesu aktualizace na čistší, méně vnořenou strukturu. Toto nebylo úplně dokončeno, ale následující by měly být blízko konečné struktury: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: -``mdx +````mdx --- -id: jedinečný identifikátor (alfanumerický, Název MongoDB_id) -: 'Název výzvy' -challengeType: Integer, definovaný v `client/utils/challengeTypes. s` +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` videoUrl: 'url of video explanation' forumTopicId: 12345 --- -import skriptu z './script. dx'; +import Script from './script.mdx'; ## --step-description-- -Popis textu v markdown +Description text, in markdown ```html
      - příklad kódu + example code
      ``` @@ -391,18 +472,18 @@ Popis textu v markdown ![test-id-1] -Bude existovat libovolný počet trojic idů, instrukcí (v markdown) a kódových bloků. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Kód pro zkoušku č. 1 +Code for test one ``` ![test-id-2] -Další pokyny v markdown syntaxi +More instructions in markdown syntax ```js -Další kód +More code ``` ## --step-seed-- @@ -410,13 +491,13 @@ Další kód ### --before-user-code-- ```lang -Kód vyhodnocen před uživatelem. +Code evaluated before the user’s ``` ### --after-user-code-- ```lang -Kód vyhodnocen po provedení testu uživatele a těsně před testy. +Code evaluated after the user’s, and just before the tests ``` ### --seed-content-- @@ -424,15 +505,15 @@ Kód vyhodnocen po provedení testu uživatele a těsně před testy. ![index-html] ```html -Některé html +Some html ``` ```css -Nějaký css +Some css ``` ```js -Několik js +Some js ``` ![index-js] @@ -447,7 +528,7 @@ Několik js

      - Přesně stejná jako sekce osiva + Exactly the same as the seeds section

      @@ -457,7 +538,7 @@ Několik js

      - Znovu stejné + Same again

      @@ -471,7 +552,7 @@ Několik js

      - Otázka by šla sem (pouze pro videohovory) + The question would go here (only used for video challenges)

      @@ -481,19 +562,19 @@ Několik js

      - Odpověď 1 + Answer 1


      - Odpověď 2 + Answer 2


      - Odpověď 2 + More answers

      @@ -513,13 +594,13 @@ Několik js

      - Užitečné odkazy + Useful Links

      - Vytváření a editace výzev: + Creating and Editing Challenges:

      @@ -527,14 +608,14 @@ Několik js
      1. - Typy výzev - co znamenají numerické hodnoty typu výzvy (enum). + Challenge types - what the numeric challenge type values mean (enum).

      2. - Přispění k FreeCodeCamp - psaní testů výzev ES6 - video po Ethan Arrowood , protože přispívá ke staré verzi učebních plánů. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

      3. diff --git a/docs/i18n/Czech/how-to-work-on-the-docs-theme.md b/docs/i18n/Czech/how-to-work-on-the-docs-theme.md index 044b3e8cf0..bf8bf8f6c9 100644 --- a/docs/i18n/Czech/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Czech/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Jak pracovat na tématu dokumentace +# How to work on the docs theme -> [!POZNÁMKA] Rychlé upozornění, že nemusíte nic nastavovat pro práci na obsahu stránky dokumentace. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Chcete-li pracovat na pokynech pro přispívání, můžete upravit nebo přidat soubory do adresáře `dokumentace` [k dispozici zde](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Jakmile budou vaše změny sloučeny, budou automaticky zpřístupněny na stránce dokumentace. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Struktura internetových stránek dokumentace +## Structure of the docs website -Stránka je generována pomocí [`docsify`](https://docsify.js.org)a servírována pomocí stránek GitHub. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Obvykle byste nemuseli měnit žádnou konfiguraci nebo stavět web lokálně. V případě, že máte zájem, zde je to, jak funguje: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- Zdroj domovské stránky je k dispozici v [`docs/index.html`](index.html). -- Tento soubor slouží jako SPA pomocí `docsify` a GitHub stránek. -- Skript `docsify` na vyžádání generuje obsah souborů `markdown` v `dokumentech`. -- Domovská stránka je generována z [`_coverpage.md`](_coverpage.md). -- postranní navigace je generována z [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Místní obsluha stránky dokumentace +## Serving the documentation site locally -Klonovat volný CodeCamp: +Clone freeCodeCamp: -```sh -git klonovat https://github.com/freeCodeCamp/freeCodeCamp.git +```console +git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -Nainstalovat `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -a obsluhovat adresář `/docs` +and serve the `/docs` directory -```sh -docsify servisní dokumenty +```console +docsify serve docs ``` -Případně pokud jste nainstalovali freeCodeCamp lokálně (viz příručka lokálního nastavení), spojujeme CLI s vývojovými nástroji, takže můžete spustit `npm run docs:serve` od kořene repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Czech/how-to-work-on-the-news-theme.md b/docs/i18n/Czech/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Czech/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Czech/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Czech/index.md b/docs/i18n/Czech/index.md index ff22a202c8..1c4add4ab3 100644 --- a/docs/i18n/Czech/index.md +++ b/docs/i18n/Czech/index.md @@ -1,45 +1,43 @@ -Komunita [freeCodeCamp.org](https://freecodecamp.org) je možná díky tisícům milých dobrovolníků, jako jste Vy. Vítáme všechny příspěvky do komunity a rádi vás přivítáme na palubě. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!POZNÁMKA] Než budete pokračovat, přečtěte si prosím rychle 2 minuty našeho [Kodexu chování](https://www.freecodecamp.org/code-of-conduct). Striktně ji prosazujeme napříč naší komunitou. Chceme, aby přispěl k bezplatnému CodeCamp.org aby byl bezpečný a inkluzivní zážitek pro všechny. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Šťastný příspěvek. +Happy contributing. -Jste vítáni: +You are welcome to: -- Vytvořit, aktualizovat a opravit chyby v našich [programovacích výzvách](#coding-challenges). -- Pomozte nám opravit chyby ve [vzdělávací platformě freeCamp.org](#learning-platform). -- _(již brzy)_ Pomozte nám přeložit zdarma CodeCamp.org do světových jazyků. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Máte otázky? Přejděte na [tyto FAQ](/FAQ.md) , kde odpovídáme na některé běžné dotazy o příspěvku. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Výzvy programování +## Curriculum -Všechny naše programovací výzvy jsou zredukovány komunitou a přinášejí odborné znalosti od dobrovolníků, jako je Vy. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Můžete jim pomoci rozšířit a zlepšit jejich znění. Můžete také aktualizovat uživatelské příběhy, abyste lépe vysvětlili koncept nebo odstranili ty nadbytečné a vylepšili challenge testy, aby byli přesněji testováni lidským kódem. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Pokud máte zájem o vylepšení těchto úkolů v kódování, je zde [jak pracovat na programování úkolů](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Platforma pro učení +## Learning Platform -Naše vzdělávací platforma běží na moderním JavaScriptovém zásobníku. Má různé komponenty, nástroje a knihovny, včetně Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, a další. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Celkově +Broadly, we use -- Máme API server založený na Node.js. -- Soubor klientských aplikací založených na reakci. -- Skript, který používáme k hodnocení našich front-end projektů. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Přispívání k tomu vyžaduje pochopení API, syntaxe ES6 a mnoho zvědavosti. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -V zásadě očekáváme základní znalost některých výše uvedených technologií, nástrojů a knihoven. S tím se od vás nevyžaduje, abyste na ně přispíval odborníkem. +If you want to help us improve our codebase... -**Pokud nám chcete pomoci zlepšit naši základnu kódu, můžete použít buď Gitpod, bezplatné prostředí online vývojáře** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Otevřít v Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Spustí prostředí vývojáře připraveného ke kódu pro freeCodeCamp ve vašem prohlížeči.) +Or you can... -NEBO - -**můžete [nastavit volný CodeCamp lokálně](how-to-setup-freecodecamp-locally.md) na vašem počítači.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Czech/moderator-handbook.md b/docs/i18n/Czech/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Czech/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
        + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Danish/FAQ.md b/docs/i18n/Danish/FAQ.md index 01c6821415..e6ef4fed0d 100644 --- a/docs/i18n/Danish/FAQ.md +++ b/docs/i18n/Danish/FAQ.md @@ -1,95 +1,76 @@ -### Jeg er ny til GitHub og Open Source, hvor skal jeg starte? +### I am new to GitHub and Open Source. Where should I start? -Læs vores ["Sådan bidrager du til Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Det er en kompressiv ressource af første timer venlige projekter og retningslinjer. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Kan jeg oversætte freeCodeCamp's pensume? +### Can I translate freeCodeCamp's curriculum? -Vi vil kicking-off lokaliseringsindsatsen på freeCodeCamp starter med **kinesisk** først. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Vi agter at gøre pensum tilgængelig på flere sprog, men kan ikke forpligte sig til nogen frister endnu. Flere operationelle grænser som personale, aktive bidragsydere og server omkostninger spiller en rolle i at drive internationaliseringen (i18n) indsats. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Vi agter at starte i18n indsats på disse sprog: arabisk, portugisisk Russisk og spansk (i ingen bestemt rækkefølge) efter vi har udgivet pensum på kinesisk. +### How can I report a new bug? -**Hvorfor fokuserer du først på kinesisk læseplan?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -Kina er de største demografiske regioner i vores ikke-indfødte engelsktalende publikum. I øjeblikket har vi hundredtusindvis af brugere, der bruger en gammel version af platformen. Fokus på den kinesiske pensum vil give os et skøn over logistik involveret i i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Vi vil fokusere på Latinamerika som den demografiske region for portugisisk og spansk. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -Vi har ikke nogen planer om i18n til andre sprog end ovenstående inden for en overskuelig fremtid. +### How can I report a security issue? -Vi opfordrer Dem ikke til at arbejde på i18n på ovenstående sprog. Vi kan acceptere pull requests, uden nogen forventning om nogen tidslinjer på implementeringer. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Hvordan kan jeg rapportere en ny fejl? +### I am a student. Can I work on a feature for academic credits? -Hvis du tror, du har fundet en fejl, så læs først artiklen ["Hjælp jeg har fundet en fejl"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) og følg dens instruktioner. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Hvis du er sikker på, at det er en ny fejl, skal du gå videre og oprette et nyt GitHub problem. Sørg for at inkludere så mange oplysninger som muligt, så vi kan reproducere fejlen. Vi har en foruddefineret problemskabelon til at hjælpe dig gennem dette. +We request you to plan ahead and work on code contributions with this in mind. -Bemærk, at eventuelle problemer, der søger kodning hjælp på en udfordring, vil blive lukket. Spørgsmålet tracker er strengt til kodebase relaterede spørgsmål og diskussioner. Når du er i tvivl, bør du [søge hjælp på forummet](https://forum.freecodecamp.org) , før du laver en rapport. +### What do these different labels that are tagged on issues mean? -### Hvordan kan jeg rapportere et sikkerhedsproblem? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Opret ikke GitHub problemer for sikkerhedsproblemer. I stedet skal du sende en e-mail til `security@freecodecamp.org` , og vi vil undersøge den med det samme. +### Where do I start if I want to work on an issue? -### Jeg er studerende, kan jeg eller vores team arbejde på en funktion til akademiske kreditter? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Ja, sikker. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -Mens vi er åbne over for alle bidrag, Bemærk venligst, at vi ikke er i stand til at forpligte os til tidsfrister, der kan være et krav på dit kollegium eller universitet. Vi modtager mange pull-anmodninger og kodebidrag fra frivillige udviklere, og vi respekterer deres tid og indsats. Vi vil ikke være i stand til at give nogen PR nogen særlig opmærksomhed til at være retfærdig over for alle. +### I found a typo. Should I report an issue before I can make a pull request? -Vi beder dig om at planlægge forude og arbejde på en funktion med dette i tankerne. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Hvad betyder disse forskellige etiketter, der er mærket på emner? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -Kodevedligeholderne [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues og pull requests baseret på deres prioritet, sværhedsgrad og andre faktorer. Du kan [finde en komplet ordliste over deres betydninger her](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Hvor starter jeg, hvis jeg ønsker at arbejde på et spørgsmål? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Du bør gå gennem [**`hjælp ønskede`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) eller [**`første timere kun`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) problemer for en hurtig oversigt over, hvad der er tilgængeligt for dig at arbejde på. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`hjælp ønskede`** problemer er op til grabs, og du behøver ikke at søge tilladelse, før du arbejder på dem. Problemer med den **`første timer kun`** etiket er dog reserveret til personer, der ikke har bidraget til freeCodeCamp kodebase før. Hvis disse spørgsmål mangler klarhed om, hvad der skal gøres, er du velkommen til at stille spørgsmål i kommentarerne. +### I am stuck on something that is not included in this documentation. -### Jeg fandt en stavefejl, skulle jeg rapportere et problem, før jeg kan lave en pull-anmodning? - -For taxier og andre ordlyd ændringer, kan du direkte åbne pull anmodninger uden at oprette et problem først. Spørgsmål er mere for at diskutere større problemer forbundet med kode eller strukturelle aspekter af pensum. - -Dog bedes du nævne detaljer, kontekst osv. i pull request's beskrivelse område for at hjælpe os med at forstå og gennemgå dit bidrag selv for mindre ændringer. - -### Hvordan får jeg et problem tildelt mig? - -Vi tildeler typisk ikke problemer til andre end mangeårige bidragsydere for at undgå tvetydige no-shows. I stedet følger vi nedenstående politik for at være retfærdig over for alle: - -1. Den første pull-anmodning for ethvert problem er foretrukket at blive flettet. -2. I tilfælde af flere pull anmodninger om samme emne, vi prioriterer kvaliteten af koden i pull requests. - - Har du inkluderet test? - - Fangede du alle usecases? - - Har du sikret, at alle tests passerer, og du har bekræftet alt fungerer lokalt? -3. Endelig går vi ind for anmodninger, der følger vores anbefalede retningslinjer. - - Har du fulgt tjeklisten for pull request? - - Har du navngivet din pull request titel meningsfuldt? - -Du behøver ikke tilladelse til problemer, der er markeret `hjælp ønskede` eller `første timere` som forklaret tidligere. - -Følg retningslinjerne omhyggeligt og åbn en pull-anmodning. - -### Jeg er fast besluttet på noget, der ikke er medtaget i denne dokumentation. - -**Du er velkommen til at bede om hjælp i:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Vi er glade for at hjælpe dig med at bidrage til alle de emner, du gerne vil arbejde på. Du er velkommen til at stille os spørgsmål om de relaterede emner tråde, og vi vil med glæde præcisere. Sørg for at søge efter din forespørgsel, før du sender en ny. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Vær høflig og tålmodig. Vores fællesskab af frivillige og moderatorer er altid rundt for at guide dig gennem dine forespørgsler. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Yderligere Assistans:** +**Additional Assistance:** -Hvis du har spørgsmål om stakken, arkitektur af kodebasen, velkommen til at nå ud til vores personale dev team: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Personale | Send besked på forum | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | | Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | @@ -98,4 +79,4 @@ Hvis du har spørgsmål om stakken, arkitektur af kodebasen, velkommen til at n | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | | Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Du kan e-maile vores udviklerpersonale på: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Danish/_sidebar.md b/docs/i18n/Danish/_sidebar.md index 46eca65ad1..1b5bda2bdc 100644 --- a/docs/i18n/Danish/_sidebar.md +++ b/docs/i18n/Danish/_sidebar.md @@ -1,35 +1,38 @@ -- **Kom I Gang** - - [Indledning](index 'Bidrag til freeCodeCamp.org Fællesskabet') - - [Ofte Stillede Spørgsmål](FAQ.md) -- **Kode Bidrag** -- - [Opsæt freeCodeCamp lokalt](how-to-setup-freecodecamp-locally.md) - - [Åbn en pull-anmodning](how-to-open-a-pull-request.md) - - [Arbejde med kodningsudfordringer](how-to-work-on-coding-challenges.md) - - [Arbejde med videoudfordringer](how-to-help-with-video-challenges.md) - - [Arbejd på nyheder tema](how-to-work-on-the-news-theme.md) - - [Arbejde på dokument-temaet](how-to-work-on-the-docs-theme.md) -- **Valgfrie Guider** - - [Fang udgående e-mails lokalt](how-to-catch-outgoing-emails-locally.md) - - [Konfigurer freeCodeCamp på WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Flyvemanualer** (for medarbejdere & møder) - - [Moderator Håndbog](flight-manuals/moderator-handbook.md) - - [Svar Skabeloner](flight-manuals/using-reply-templates.md) - - [Oversigt Over DevOps](devops.md) - - [Arbejder på servere](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Vores Fællesskab** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) diff --git a/docs/i18n/Danish/devops.md b/docs/i18n/Danish/devops.md index ddf9500bc3..46fb8b5382 100644 --- a/docs/i18n/Danish/devops.md +++ b/docs/i18n/Danish/devops.md @@ -1,127 +1,127 @@ -# Udvikleroperationer på freeCodeCamp.org +# DevOps Handbook -Denne guide vil hjælpe dig med at forstå vores infrastruktur stak og hvordan vi vedligeholder vores platforme. Mens denne guide ikke har udtømmende detaljer for alle operationer, kan den bruges som reference for din forståelse af systemerne. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Lad os vide, hvis du har feedback eller forespørgsler, og vi vil med glæde præcisere. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Hvordan kan vi opbygge, teste og implementere kodebasen? +# Flight Manual - Code deployments -Dette repository bygges løbende, testes og implementeres til **separate sæt af infrastruktur (servere, databaser, CDN'er osv.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Dette indebærer tre trin, der skal følges i rækkefølge: +This involves three steps to be followed in sequence: -1. Nye ændringer (både rettelser og funktioner) fusioneres til vores primære udviklingsgren (`master`) via pull requests. -2. Disse ændringer gennemføres gennem en række automatiserede tests. -3. Når testene passerer, frigiver vi ændringerne (eller opdaterer dem, hvis det er nødvendigt) til implementering på vores infrastruktur. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Opbygning af kodebase - Mapping Git Branches til implementeringer. +#### Building the codebase - Mapping Git Branches to Deployments. -Typisk [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (standard udviklingsgrenen) er fusioneret til [`produktions-iscenesættelse`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) filial en gang om dagen og frigives til en isoleret infrastruktur. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Dette er en mellemudgivelse for vores udviklere og frivillige bidragsydere. Det er også kendt som vores "iscenesættelse" eller "beta" udgivelse. +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Det er identisk med vores live produktionsmiljø på `freeCodeCamp.org`, bortset fra det ved hjælp af et separat sæt databaser, servere, web-fuldmagter osv. Denne isolation lader os teste løbende udvikling og funktioner i en "produktion" som scenario, uden at påvirke almindelige brugere af freeCodeCamp.org's hovedplatforme. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Når udviklerteamet [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) er tilfreds med ændringerne på iscenesættelsesplatformen, disse ændringer flyttes hvert par dage til [`produktions-nuværende`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) filial. +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -Dette er den endelige udgivelse, der flytter ændringer til vores produktionsplatforme på freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Testændringer - Integration og Brugeraccepttest. +#### Testing changes - Integration and User Acceptance Testing. -Vi anvender forskellige niveauer af integrations- og accepttest for at kontrollere kvaliteten af kodeksen. Alle vores test er udført gennem software som [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) og [Azure rørledninger](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Vi har enhedstest til at teste vores udfordringsløsninger, Server API'er og Client User interfaces. Disse hjælper os med at teste integrationen mellem forskellige komponenter. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!BEMÆRK] Vi er også i færd med at skrive slutbrugertest, som vil hjælpe med at kopiere virkelige verden scenarier som opdatering af en e-mail eller foretage et opkald til API eller tredjeparts tjenester. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Sammen hjælper disse tests med at forhindre problemer i at gentage sig selv og sikre, at vi ikke introducerer en fejl, mens vi arbejder på en anden fejl eller en funktion. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Deploying Changes - Pushing ændringer til servere. +#### Deploying Changes - Pushing changes to servers. -Vi har konfigureret løbende levering software til at skubbe ændringer til vores udviklings- og produktionsservere. +We have configured continuous delivery software to push changes to our development and production servers. -Når ændringerne er skubbet til de beskyttede udgivelsesgrene, udløses en byggerørledning automatisk for filialen. Bygningsrørledningerne er ansvarlige for at bygge artefakter og holde dem på kølelager til senere brug. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -Byggeledningen fortsætter med at udløse en tilsvarende udløsningsrørledning, hvis den fuldfører en vellykket kørsel. Udgivelsesrørledningerne er ansvarlige for at indsamle de bygge artefakter, flytte dem til serverne og gå levende. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Status for byggeri og udgivelser er [tilgængelig her](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Udløsning af en bygning, test og implementering. +## Trigger a build, test and deploy -I øjeblikket kan kun medlemmer på udviklerteamet skubbe til produktionsgrene. Ændringerne af `produktion-*` grene kan kun lande via en hurtig sammenlægning til [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!BEMÆRK] I de kommende dage vil vi forbedre dette flow til at blive gjort via pull-requests, for bedre adgang forvaltning og gennemsigtighed. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Skubber ændringer til Staging-programmer. +### Pushing changes to Staging Applications. -1. Konfigurer dine fjernbetjeninger korrekt. +1. Configure your remotes correctly. ```sh git remote -v ``` - **Resultater:** + **Results:** ``` - oprindelse git@github.com:raisedadead/freeCodeCamp.git (fetch) - oprindelse git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Sørg for, at din `master` gren er uberørt og synkroniseret med upstream. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master - git henter --all --prune + git fetch --all --prune git reset --hard upstream/master ``` -3. Kontrollér, at Travis CI kører videre på `master-` -grenen for upstream. +3. Check that the Travis CI is passing on the `master` branch for upstream. - De [kontinuerlige integrationstest](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) skal være grønne og PASSING for `master` -grenen. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
        Kontrollerer status på Travis CI (skærmbillede) +
        Checking status on Travis CI (screenshot)
        - ![Tjek build status på Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
        - Hvis dette ikke er tilfældet, bør du stoppe og undersøge fejlene. + If this is failing you should stop and investigate the errors. -4. Bekræft at du er i stand til at bygge depotet lokalt. +4. Confirm that you are able to build the repository locally. ``` npm run clean-and-develop ``` -5. Flyt ændringer fra `master` til `produktions-iscenesættelse` via en hurtig sammenfletning +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` - git checkout produktion-iscenesættelse + git checkout production-staging git merge master git push upstream ``` - > [!BEMÆRK] Du vil ikke være i stand til at tvinge skubb, og hvis du har omskrevet historikken på alligevel vil disse kommandoer fejle ud. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Hvis de gør, kan du have gjort noget forkert, og du bør lige starte forfra. + > If they do, you may have done something incorrectly and you should just start over. -Ovenstående trin vil automatisk udløse en kørsel på byggerørledningen til `produktions-iscenesættelse` gren. Når byggeriet er færdig, gemmes artefakterne som `.zip` filer i et koldt lager, der skal hentes og bruges senere. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -Udløsningsrørledningen udløses automatisk, når en ny artefakt er tilgængelig fra den tilsluttede byggerørledning. For iscenesættelsesplatforme indebærer denne proces ikke manuel godkendelse, og artefakterne skubbes til klientens CDN og API-serverne. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP label:Estimates] Typisk byggekørslen tager ~20-25 minutter at fuldføre efterfulgt af udgivelsen kørsel, som tager ~15-20 minutter for klienten, og ~5-10 minutter for API'en til rådighed live. Fra kode push til at være live på iscenesættelsesplatformene tager hele processen **~ 35-45 minutter** i alt. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Skub ændringer til produktionsprogrammer. +### Pushing changes to Production Applications. -Processen er for det meste den samme som mellemstationen platforme, med et par ekstra kontrol på plads. Dette er blot for at sikre, at vi ikke bryder noget på freeCodeCamp.org, som kan se hundredvis af brugere bruge det når som helst. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| Udfør IKKE disse kommandoer, medmindre du har bekræftet, at alt fungerer på iscenesættelsesplatformen. Du bør ikke omgå eller springe nogen test på iscenesættelse, før du fortsætter yderligere. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Sørg for, at din `produktions-iscenesættelse` gren er uberørt og synkroniseret med upstream. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh git checkout production-staging @@ -129,7 +129,7 @@ Processen er for det meste den samme som mellemstationen platforme, med et par e git reset --hard upstream/production-staging ``` -2. Flyt ændringer fra `produktionsfaser` til `produktionsstrøm` via en hurtig sammenfletning +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` git checkout production-current @@ -137,91 +137,572 @@ Processen er for det meste den samme som mellemstationen platforme, med et par e git push upstream ``` - > [!BEMÆRK] Du vil ikke være i stand til at tvinge skubb, og hvis du har omskrevet historikken på alligevel vil disse kommandoer fejle ud. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Hvis de gør, kan du have gjort noget forkert, og du bør lige starte forfra. + > If they do, you may have done something incorrectly and you should just start over. -Ovenstående trin vil automatisk udløse en kørsel på byggerørledningen for `produktionsstrømmen` gren. Når en build artefakt er klar, vil det udløse en kørsel på udgivelsesrørledningen. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP label:Estimates] Typisk byggekørslen tager ~20-25 minutter at fuldføre. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Yderligere trin for personalets indsats** +**Additional Steps for Staff Action** -En udgivelseskørsel er udløst, medlemmer af udviklerpersonalet vil modtage en automatisk manuel intervention e-mail. De kan enten _godkende_ eller _afvise_ udgivelsesrunden. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Hvis ændringerne fungerer pænt og er blevet testet på mellemstationsplatformen, kan den godkendes. Godkendelsen skal gives senest 4 timer efter, at udgivelsen er udløst, før den automatisk afvises. Et personale kan re-trigger release køre manuelt for afviste kørsler, eller vente på den næste cyklus af udgivelse. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Til brug for personalet: +For staff use: -| Tjek din e-mail for et direkte link eller [gå til udgivelsesinstrumentbrættet](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) , når byggekørslen er færdig. | -|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Når en af personalet godkender en udgivelse, vil rørledningen skubbe ændringerne live til freeCodeCamp.org's produktion CDN og API-servere. De tager typisk ~15-20 minutter for klienten, og ~5 minutter for API servere til at være til rådighed live. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP label:Estimates] Udgivelsen køre typisk tager ~15-20 minutter for hver klient eksempel, og ~5-10 minutter for hver API instans at være til rådighed live. Fra kode push til at være levende på produktionsplatformene hele processen tager **~ 90-120 mins** i alt (ikke tælle ventetiden til personalets godkendelse). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Opbygning, test og implementering Status +## Build, Test and Deployment Status -Her er den aktuelle test, opbygge og implementere status af kodebasen. +Here is the current test, build and deployment status of the codebase. -| Type | Gren | Status | Instrumentbræt | -|:--------------- |:--------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | -| CI Test | [`mester`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis Ci Byg Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Gå til statusdashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| CI Test | [`produktion-iscenesættelse`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis Ci Byg Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Gå til statusdashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Byg Rørledning | [`produktion-iscenesættelse`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Byg Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Gå til statusdashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Slip Rørledning | [`produktion-iscenesættelse`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Gå til statusdashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| CI Test | [`produktionsstrøm`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis Ci Byg Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Gå til statusdashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Byg Rørledning | [`produktionsstrøm`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Byg Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Gå til statusdashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Slip Rørledning | [`produktionsstrøm`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Gå til statusdashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Tidlig adgang og beta-test +## Early access and beta testing -Vi byder dig velkommen til at teste disse udgivelser i en **"public beta testing"** tilstand og få tidlig adgang til kommende funktioner på platformene. Nogle gange bliver disse funktioner/ændringer omtalt som **næste, beta, iscenesættelse,** osv. udskifteligt. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Dine bidrag via feedback og issue reports vil hjælpe os med at gøre produktionen platforme på `freeCodeCamp. rg` more **resilient**, **konsekvent** og **stabil** for alle. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Vi takker dig for at have rapporteret fejl, som du støder på og hjælper med at gøre freeCodeCamp.org bedre. Du klippe! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Identifikation af den kommende version af platformene +### Identifying the upcoming version of the platforms -I øjeblikket er en offentlig beta-test version tilgængelig på: +Currently a public beta testing version is available at:

        freecodecamp.dev

        -> [!BEMÆRK] Domænenavnet er forskelligt fra **`freeCodeCamp.org`**. Dette er tilsigtet at forhindre søgemaskine indeksering og undgå forvirring for almindelige brugere af platformen. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identificering af den aktuelle version af platformene +### Identifying the current version of the platforms -**Den aktuelle version af platformen er altid tilgængelig på [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -Dev-teamet fusionerer skifter fra `produktions-staging` filialen til `produktions-current` , når de udgiver ændringer. Den øverste begår bør være, hvad du ser live på webstedet. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Du kan identificere den nøjagtige version implementeret ved at besøge build og implementering logs tilgængelige i statussektionen. Alternativt kan du også ping os i [bidragsyderes chatrum](https://gitter.im/FreeCodeCamp/Contributors) for en bekræftelse. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Kendte Begrænsninger +### Known Limitations -Der er nogle kendte begrænsninger og tradeoffs, når du bruger betaversionen af platformen. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### Alle data / personlige fremskridt på disse beta platforme `vil IKKE blive gemt eller overført` til produktion. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Brugere på betaversionen vil have en separat konto fra produktionen.** Beta-versionen bruger en fysisk adskilt database fra produktion. Dette giver os mulighed for at forhindre enhver utilsigtet tab af data eller ændringer. Dev teamet kan rense databasen på denne betaversion efter behov. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Der er ingen garantier for oppetid og pålidelighed af beta platforme. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Deployering forventes at være hyppig og i hurtige iterationer, undertiden flere gange om dagen. Som et resultat vil der være uventet nedetid til tider eller brudt funktionalitet på beta-versionen. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Send ikke almindelige brugere til dette websted som et mål for at bekræfte en rettelse +- #### Do not send regular users to this site as a measure of confirming a fix - Beta-stedet er og har altid været at øge den lokale udvikling og afprøvning, intet andet. Det er ikke et løfte om, hvad der kommer, men et glimt af, hvad der arbejdes på. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### Signsiden kan se anderledes ud end produktionen +- #### Sign page may look different than production - Vi bruger en testlejer til freecodecamp.dev på Auth0, og har derfor ikke mulighed for at indstille et brugerdefineret domæne. Dette gør det således, at alle omdirigeringstilbagekaldelser og login-siden vises på et standard domæne som: `https://freecodecamp-dev.auth0.com/`. Dette påvirker ikke funktionaliteten er så tæt på produktion, som vi kan få. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Rapporteringsproblemer og tilbagemelding +## Reporting issues and leaving feedback -Åbne nye problemer for diskussioner og rapportering af fejl. Du kan mærke dem som **[`udgivelse: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Du kan sende en e-mail til `dev[at]freecodecamp.org` , hvis du har spørgsmål. Som altid bør alle sikkerhedssårbarheder rapporteres til `sikkerhed[at]freecodecamp.org` i stedet for den offentlige tracker og forum. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

        https://amplify.nginx.com

        +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Danish/flight-manuals/moderator-handbook.md b/docs/i18n/Danish/flight-manuals/moderator-handbook.md deleted file mode 100644 index ea08e835d2..0000000000 --- a/docs/i18n/Danish/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# Den officielle freeCodeCamp Moderator Handbook. - -Dette vil hjælpe dig med at moderere forskellige steder i vores samfund, herunder: - -- GitHub issues & pull requests -- Forummet, chatrum, Facebook-grupper og andre online mødesteder -- In-person begivenheder som studiegrupper, hackathons, og konferencer - -**Alle freeCodeCamp Moderatorer er moderatorer i hele samfundet. Det betyder, at vi har tillid til, at du fører tilsyn med nogen af disse steder.** - -Dette er sagt, kan du tjene som en moderator i hvilke steder er af mest interesse for dig. Nogle moderatorer hjælper bare på GitHub. Andre hjælper bare på forummet. Nogle moderatorer er aktive overalt. - -Den nederste linje er, at vi vil have dig til at nyde at være en moderator, og investere din knappe tid på steder, der er af interesse for dig. - -> [!BEMÆRK] "Med stor magt kommer stort ansvar." - Onkel Ben - -Som moderator er temperament vigtigere end tekniske færdigheder. - -Lyt. Vær Hjælpfuld. Må ikke misbruge din magt. - -freeCodeCamp er et rummeligt fællesskab, og vi er nødt til at bevare det på den måde. - -Vi har en fælles adfærdskodeks, der styrer hele vores fællesskab. Jo færre regler, jo lettere er de at huske. Du kan læse disse regler og forpligte dem til hukommelse [her](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderatorerne har mulighed for at lukke problemer og acceptere eller lukke pull anmodninger. - -Moderatorer har to primære ansvarsområder vedrørende GitHub: - -1. QA'ing and fletning pull requests -2. Evaluering og svar på spørgsmål - -## Modererende Pull-forespørgsler - -Pull Requests (PR'er) er, hvordan bidragsydere indsender ændringer til freeCodeCamp's repository. Det er vigtigt, at vi udfører kvalitetssikring (QA) på pull anmodninger, før vi beslutter, om vi vil fusionere dem eller lukke dem. - -### Typer af Pull-forespørgsler - -1. **Challenge Instruction Edits** Dette er ændringer i teksten af udfordringer - Beskrivelse, Instruktioner eller Test Text. Du kan også gennemgå disse højre på GitHub og beslutte, om at flette dem. Vi er nødt til at være lidt mere forsigtige med disse, fordi millioner af mennesker vil støde på denne tekst, mens de arbejder gennem freeCodeCamp pensum. Gør pull-anmodningen teksten mere klar uden at gøre den meget længere? Er redigeringerne relevante og ikke alt for pedantiske? Husk, at vores mål er, at udfordringerne skal være så klare og så korte som muligt. De er ikke stedet for obskure detaljer. Bidragydere kan også forsøge at tilføje links til ressourcer til udfordringerne. Du kan lukke disse pull anmodninger og besvare dem med dette: - - > Tak for din pull-anmodning. - > - > Jeg er ved at afslutte denne anmodning. Tilføj links og andre detaljer til udfordringens tilsvarende guide artikel i stedet. - > - > Hvis du tror, jeg er forkert i at lukke dette problem, skal du genåbne det og tilføje yderligere afklaring. Tak og glad kodning. - -2. **Challenge Code Edits** Dette er ændringer af koden i en udfordring - Challenge Seed, Challenge Solution, and Test Strings. Disse pull-anmodninger skal trækkes ned fra GitHub og testes på din lokale computer for at sikre, at udfordringstestene stadig kan bestået med den aktuelle løsning, og den nye kode ikke indføre nogen fejl. Nogle bidragsydere kan forsøge at tilføje yderligere test til at dække pedantiske hjørnetilfælde. Vi skal passe på, at vi ikke gør udfordringen for kompliceret. Disse udfordringer og deres test bør være så enkle og intuitive som muligt. Bortset fra de algoritme udfordringer og interview prep sektion, bør eleverne være i stand til at løse hver udfordring inden for omkring 2 minutter. - -3. **Kodebase Ændringer** Disse kode redigerer ændre funktionaliteten af freeCodeCamp platformen selv. Nogle gange forsøger bidragsydere at foretage ændringer uden megen forklaring, men for kodeændringer er vi nødt til at sikre, at der er et reelt behov for ændringen. Så disse pull anmodninger bør henvise til en eksisterende GitHub problem, hvor årsagerne til ændringen er drøftet. Derefter kan du åbne pull request på din computer og teste dem ud lokalt. Når du har gjort det, hvis ændringerne ser godt ud, så lad være med at flette dem helt endnu. Du kan kommentere på pull request siger "LGTM", og derefter nævne @raisedadead, så han kan tage et endeligt udseende. - -### Sådan flettes eller lukkes pull anmodninger - -Først og fremmest, når du vælger en pull anmodning til QA, bør du tildele dig selv til det. Du kan gøre dette ved at klikke på "tildele dig selv" linket under "tildelte" del i højre kolonne i GitHub interface. - -Afhængigt af typen af pull anmodning det er, følge de tilsvarende regler anført ovenfor. - -Før du sammenfletter en pull-anmodning, skal du sørge for, at GitHub har grønne checkmarks for alt. Hvis der er nogen X's, undersøge dem først og finde ud af, hvordan du får dem forvandlet til grønne checkmarks først. - -Nogle gange vil der være en sammenfletningskonflikt. Det betyder, at en anden pull request har foretaget en ændring af den nøjagtige samme del af samme fil. GitHub har et værktøj til at løse disse sammenfletningskonflikter direkte på GitHub. Du kan forsøge at løse disse konflikter. Bare brug din bedste bedømmelse. pull request's ændringer vil være på toppen, og Master branchens ændringer vil være i bunden. Nogle gange vil der være overflødige oplysninger deri, der kan slettes. Før du er færdig, skal du sørge for at slette `<<<<<<`, `=======`, og `>>>>>>` at Git bidrager til at angive konfliktområder. - -Hvis pull request ser klar til at flette (og kræver ikke godkendelse fra @raisedadead), kan du gå videre og flette det. Vær sikker på at bruge standard "Squash og Merge" funktionalitet på GitHub. Dette vil klemme alle pull anmodninger forpligter sig ned i et enkelt fællesskab, hvilket gør Git historie meget lettere at læse. - -Du skal derefter kommentere på pull anmodningen, takke bidragsyderen på din egen personlige måde. - -Hvis forfatteren til pull-forespørgslen er en "førstegangsbidragsyder", bør du også lykønske dem med deres første sammenlagte pull-anmodning til lageret. Du kan se på øverste højre hjørne af PR's krop for at bestemme en førstegangsbidragsyder. Det vil vise `Førstegangsbidragsyder` som vist nedenfor: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp~690x281](https://i.imgur.com/dTQMjGM.png) - -Hvis pull-anmodningen ikke ser ud klar til at flette, kan du høfligt svare forfatteren hvad de skal gøre for at få det klar. Forhåbentlig vil de svare og få deres pull-anmodning tættere på klar. - -Ofte vil en pull-anmodning naturligvis være en lav indsats. Du kan ofte fortælle dette med det samme, når bidragsyderen ikke generede afkrydsningsfelterne i Pull Request Template eller brugte en generisk pull request titel som "made changes" eller "Update index. d". - -Der er også situationer, hvor bidragsyderen forsøger at tilføje et link til deres egen hjemmeside, eller inkludere et bibliotek, de selv har skabt, eller har en useriøs redigering, der ikke tjener til at hjælpe nogen, men selv. - -I begge disse situationer, bør du gå videre og lukke deres pull anmodning og svare med denne standard besked: - -> Tak for at åbne denne pull anmodning. -> -> Dette er en standard besked, der fortæller dig, at vi har gennemgået din pull-anmodning og har besluttet ikke at flette den. Vi ville glæde os over fremtidige anmodninger fra Dem. -> -> Tak og glad kodning. - -Hvis du har brug for en anden udtalelse om en pull-anmodning, gå videre og efterlade dine kommentarer til pull-anmodningen, derefter tilføje "diskuterende" etiket til pull anmodningen. - -## Modererende GitHub Problemer - -freeCodeCamp er et aktivt open source-projekt. Vi får nye spørgsmål hver dag, som alle skal forsøges og mærkes. - -### Typer af GitHub Issues - -1. **Code Help Requests**, hvilke folk har fejlagtigt oprettet GitHub problemer for. Hvis nogen beder om hjælp, indsæt følgende besked, så luk problemet. - - > Tak for din rapportering om dette problem. - > - > Dette er en standard besked om, at dette problem synes at være en anmodning om hjælp. I stedet for at bede om hjælp her, klik venligst på \*\*"Hjælp"\*\* knappen på udfordringen på freeCodeCamp, som vil hjælpe dig med at skabe et spørgsmål i den rigtige del af forummet. Frivillige på forummet svarer normalt på spørgsmål inden for et par timer og kan hjælpe med at afgøre, om der er et problem med din kode eller udfordringens tests. - > - > Hvis forummedlemmerne afgør, at der ikke er noget galt med din kode, kan du anmode om at dette problem genåbnes. - > - > Tak og glad kodning. - -2. **Fejl- eller afklaringsproblemer** Prøv selv at reproducere fejlen, hvis du kan. Hvis ikke, så spørg dem om trinene for at reproducere fejlen, og om de har screenshots, videoer, eller yderligere detaljer, der kan hjælpe dig med at gengive problemet. Når du kan gengive problemet - eller i det mindste bekræfte det er et legit problem - etiket det `bekræftet`. Så: - -- Hvis det er en simpel ændring til en eksisterende udfordring, etiket som `første timer kun`, ellers etiket som `hjælp ønskede`. Brug andre etiketter efter behov. -- Hvis problemet er mere betydningsfuldt, flag som `bug`.   Hvis der er nogen tvetydighed med hensyn til den korrekte fremgangsmåde i en sag, er velkommen til at tagge @raisedadead om problemet få sin mening om det, og derefter tilføje `Diskutere` etiketten. - -3. **Duplikerede problemer** Hvis et problem er det samme som et andet rapporteret problem, bør det tidligere rapporterede problem have forrang. Markér som `Dupliker`, indsæt følgende besked, der erstatter `#XXXXX` med problemnummeret, og luk derefter problemet. - - > Tak for din rapportering om dette problem. - > - > Dette er en standard besked om, at dette problem synes at være meget lig udstedelse # XXXXX, så jeg er ved at lukke det som et duplikat. - > - > Hvis du tror, jeg er forkert i at lukke dette problem, skal du genåbne det og tilføje yderligere afklaring. Tak og glad kodning. - -4. **Fast i iscenesættelse** Nogle problemer er måske allerede blevet rettet i iscenesættelse, men har ikke et GitHub problem forbundet med dem. Hvis dette er tilfældet, kan du indsætte følgende besked, lukke problemet og tilføje en `status: løst/shipping` etiket: - - > Tak for din rapportering om dette problem. - > - > Dette er et standardbudskab til Dem om, at det problem, De nævnte her, er til stede i produktionen, men at det allerede er blevet fastsat i etaper. Det betyder, at næste gang vi skubber vores iscenesættelse til produktion, bør dette problem løses. På grund af dette, jeg lukker dette problem. - > - > Hvis du tror, jeg er forkert i at lukke dette problem, skal du genåbne det og tilføje yderligere afklaring. Tak og glad kodning. - -### Lukning af Stale, forældede, inaktive spørgsmål og Pull-forespørgsler - -- Gamle problemer eller PR'er er dem, der ikke har set nogen aktivitet fra OP i 21 dage (3 uger fra sidste aktivitet) men først efter en moderator har anmodet om flere oplysninger/ændringer. Disse kan lukkes i et automatiseret / bot script eller af moderatorerne selv. - -- Aktivitet er defineret som: Kommentarer der anmoder om en opdatering på PR og triages som `status: Opdater nødvendig` etiket osv. - -- Hvis OP beder om yderligere hjælp eller endda tid, kan ovenstående blive afslappet og genbesøgt efter et svar er givet. Under alle omstændigheder bør mods bruge deres bedste vurdering til at løse den udestående PR's status. - -### Andre retningslinjer for moderatorer på GitHub - -Selvom du vil have skriveadgang til freeCodeCamp's repositorie, **bør du aldrig skubbe kode direkte til freeCodeCamp repositorier**. Al kode skal indtaste freeCodeCamp's kodebase i form af en pull-anmodning fra en gaffel fra lageret. - -Du bør heller aldrig acceptere din egen PR. De skal være QA'd af en anden moderator, ligesom med enhver anden PR. - -Hvis du bemærker nogen bryder [adfærdskodeksen](https://code-of-conduct.freecodecamp.org) på GitHub spørgsmål, eller åbning af pull requests med skadeligt indhold eller kode, e-mail dev@freecodecamp. rg med et link til den krænkende pull-anmodning, og vi kan overveje at forbyde dem fra freeCodeCamp's GitHub organisation helt. - -# Moderation af forummet - -Som moderator hjælper du med at holde vores fællesskab et behageligt sted, hvor alle kan lære og få hjælp. Du vil beskæftige sig med flagede indlæg og håndtere spam, off-topic, og andre upassende samtaler. - -Bemærk, at når du er moderator på forummet, vil du begynde at se blå moderator tips om forum medlemmer, som "dette er første gang [person] har sendt - lad os byde dem velkommen til fællesskabet! eller "[person] har ikke postet i lang tid - lad os byde dem velkommen tilbage." - -![En blå tekst besked siger "dette er første gang [person] har sendt - lad os byde dem velkommen til fællesskabet!](https://i.imgur.com/mPmVgzK.png) - -Disse er muligheder for dig at byde dem velkommen og få dem til at føle sig ekstra specielle. Du ved aldrig, hvilken person, der er marginalt involveret, kan blive vores næste superhjælper, hjælpe mange andre mennesker i deres kodning rejse. Selv den mindste venlighed kan udløse en kaskade af gode gerninger. - -### Sletter forumindlæg - -Forum moderatorer har mulighed for at slette brugerens indlæg. Du bør kun gøre dette i følgende tilfælde: - -1. Nogen har sendt et pornografisk eller grafisk voldeligt billede. -2. Nogen har udstationeret et link eller kode, der er skadelig i naturen, og kunne skade andre campister, der klikker på det. -3. Nogen har oversvømmet en tråd med masser af spambeskeder. - -### Håndtering af spam - -For det første spam-indlæg af en bruger, send dem en meddelelse, der forklarer problemet, og fjerne linket eller indlægget efter behov. Efterlad et notat på brugerens profil, der forklarer hvilken handling du har foretaget. Hvis problemet fortsætter, så følg processen ovenfor. Blokér brugeren stille og roligt fra at poste (ved hjælp af indstillingen stilhed i brugeradministratorpanelet), og send derefter en advarsel med Adfærdskodeksen. Markér feltet i den private besked, der angiver, at din besked er en "formel advarsel". - -Du kan stille spørgsmål og rapportere hændelser i [personaleforummet](https://forum.freecodecamp.com/c/staff). - -### Håndtering af samtaler, der ikke er emnet - -Indlæg eller emner, der synes at være på det forkerte sted, kan blive re-kategoriseret eller omdøbt til hvad der ville være passende. - -Under særlige omstændigheder kan det være hensigtsmæssigt, at en moderator gaffler en diskussion i flere tråde. - -Igen, hvis du har problemer eller spørgsmål, lave et indlæg med dine handlinger i personalet kategori, og tag en anden moderator, hvis du vil have dem til at gennemgå dine modererende handlinger. - -### Mindreårige Brugere - -Vores servicevilkår kræver, at freeCodeCamp brugere er mindst 13 år. I tilfælde af, at en bruger afslører, at de er under 13 år, sende dem nedenstående besked og slette deres forum konto (hvis sletning ikke er tilgængelig, suspension af kontoen er tilstrækkelig). Send derefter [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) eller [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) for at slette brugerens freeCodeCamp-konto. - -```markdown -EMNE: Brugere under 13 må ikke bruge forummet i henhold til servicevilkår - -Det er kommet til vores opmærksomhed, at du er under 13 år. Per [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), du skal være mindst 13 år gammel for at bruge webstedet eller forummet. Vi vil slette både din freeCodeCamp konto og din forum konto. Denne begrænsning holder os i overensstemmelse med USA's lovgivning. - -Vær venlig at vende tilbage når du har nået mindst 13 år. - -Tak for Deres forståelse. -``` - -# Modererende Facebook - -Hvis du ser noget, der synes at bryde vores [Code of Conduct](https://code-of-conduct.freecodecamp.org/), skal du slette det med det samme. - -Nogle gange vil folk sende ting, som de synes er sjove. De er ikke klar over, at det, de sagde, eller hvad de delte, kunne fortolkes som krænkende. I disse tilfælde skal deres indlæg slettes, men den person, der har udstationeret det, behøver ikke nødvendigvis at blive forbudt. Ved at få deres indlæg slettet, vil de forhåbentlig komme til at forstå, at hvad de udstationerede var upassende. - -Men hvis det er en overgreb, der ikke med rimelighed kan tilskrives en kulturel forskel eller en misforståelse af det engelske sprog, så bør du på det kraftigste overveje at blokere medlemmet fra Facebook-gruppen. - -# Modererende Discord - -Her er hvordan moderatorer håndtere overtrædelser af vores [Code of Conduct](https://code-of-conduct.freecodecamp.org/) på Discord: - -1. **Sørg for, at det var hensigten at krænke adfærdskodeksen.** Ikke alle overtrædelser af komitéen var beregnet som sådan. En ny autocamper kan sende en stor mængde kode til hjælp, uvidende om, at dette kan betragtes som spamming. I disse tilfælde kan du bare bede dem om at indsætte deres kode med tjenester som Codepen eller Pastebin. - -2. **Hvis autocamperen klart overtræder adfærdskodeksen, vil moderatoren fortsætte på følgende måde:** - -- Suspendér den krænkende autocamper, men advarer ikke eller truer dem. I stedet, stille og roligt give dem den suspenderede rolle på Discord, så send dem følgende meddelelse: - -``` -Dette er en standard besked om, at jeg var nødt til midlertidigt at suspendere dig fra at tale på freeCodeCamp Discord serveren. - -Jeg er moderator, der handler på vegne af vores open source-fællesskab. Jeg kan overveje at fjerne din suspension, men jeg har brug for dig til at tage følgende 3 skridt først: - -1. Læs vores adfærdskodeks: https://code-of-conduct.freecodecamp.org/ -2. Besked mig tilbage bekræfter, at du er færdig med at læse den. -3. Forklar mig, hvorfor De mener, at jeg suspenderede Dem, og hvorfor jeg skulle fjerne Deres suspension. -``` - -- Rapportér en kort oversigt over begivenheden, og hvordan de reagerede på det i #admin kanalen. Her er et eksempel på, hvordan en sådan oversigt kan se ud: - -``` -Suspenderet: _@username_ -Reason(s): _Spamming, trolling_ -Evidence: _One eller flere links til de(n) krænkende meddelelse(r)_ -CoC: _Sent_ -``` - -- En rapport til fjernelse af en suspension bør se sådan ud: - -``` -Jeg har fjernet suspensionen fra ` @username `. Jeg sendte dem adfærdskodeksen. De indså i dag, at de blev suspenderet og undskyldt for, hvad de gjorde. -``` - -- Baseret på gerningsmændenes svar, vil moderatoren beslutte, om at fjerne suspensionen fra den krænkende camper. Hvis de synes respektfulde og undskyldende, kan moderatoren fjerne suspensionen. Som en politisk sag vil moderatorer være høflige i denne proces, uanset hvor dårligt den krænkende autocamper har opført. Hvis de ikke er respektfulde eller uvillige til at acceptere komitéen, bør suspensionen følges med et forbud fra Discord serveren. Brug det samme resumé som ovenfor, men erstat "Suspended:" med "Banned:". - -3. **Sådan bandlyses og/eller afskaffes** - -- For at forbyde nogen, højreklik på deres brugernavn / profil billede og vælg "Ban ". Du vil blive givet mulighed for at slette deres tidligere beskeder - vælg "Slet ikke", da meddelelserne bør forblive til stede som en historisk rekord. -- Hvis du beslutter dig for at forbyde nogen, betyder det, at de er uvillige til at overholde vores adfærdskodeks. Derfor bør der sjældent forekomme forbud mod en Camper. Men hvis behovet opstår, kan du gøre det ved at klikke på servernavnet, vælge "Server Indstillinger", vælge "Bans", vælge den bruger, du ønsker at fjerne forbud, og klikke på "Tilbagekald Ban". - -Discord Bans er globale - du kan ikke udelukke en bruger fra en bestemt kanal, kun fra hele serveren. - -4. **Sletning af beskeder** Moderatorer har mulighed for at slette beskeder på Discord. De bør kun udøve denne evne i fire meget specifikke situationer: - -- Nogen har sendt et pornografisk eller grafisk voldeligt billede. -- Nogen har udstationeret et link eller kode, der er skadelig i naturen, og kunne skade andre campister, der klikker på det. -- Nogen har oversvømmet chatten med masser af spam-beskeder til en sådan ekstrem grad (normalt involverer bots) at gøre chat helt ubrugelig. -- Nogen har sendt reklame og / eller en selvpromoverende besked / billede (sociale medier). - -I alle andre situationer - selv situationer, hvor adfærdskodeksen overtrædes - bør moderatorerne ikke slette meddelelsen, da disse er en vigtig historisk rekord. Når du sletter en besked, skal du sørge for at tage et skærmbillede af den først! Skærmbilledet kan være logget på #mod-log-kanalen, men for #activity-loggen er det tilstrækkeligt at sige, at beviserne blev "fjernet på grund af følsomt indhold". Bemærk: Hvis meddelelsen indeholder materiale, der ville være ulovligt at tage et skærmbillede af, kopier i stedet beskedlinket - giv dette beskedlink til @raisedadead for at videresende til Discord's Trust and Safety Team. - -5. **Brug ikke @everyone eller @here** Brug ikke @everyone eller @here under ingen omstændigheder! Hver enkelt person i dette chatrum får en notifikation. I nogle tilfælde titusinder af mennesker. I stedet, hvis du vil have folk til at se en meddelelse, du kan fastgøre det til den kanal til at tillade alle at læse det. - -6. **Trues ikke at forbyde eller suspendere** Hvis en autocamper bryder adfærdskodeksen, ikke true med at forbyde eller suspendere dem, og aldrig advare dem offentligt. I stedet, tale med dem privat, eller sende dem en DM og udstede en suspension (per ovenstående protokol). Ingen andre i denne kanal har brug for at vide, at du bandlyste / suspenderede personen - campister kan se resuméet i #activity-log-kanalen, hvis de ønsker at holde op på disse oplysninger. Hvis en overtrædelse var klart utilsigtet og ikke garanterer en suspension eller privat samtale, gøre den krænkende autocamper opmærksom på hans / hendes handlinger uden at gøre det kommer på tværs som en advarsel. For eksempel: - -- Camper sender en kodevæg for at anmode om hjælp - - Moderator: @username Brug venligst Codepen eller Pastebin når du sender store mængder kode. - -- Eller hvis du virkelig nødt til at forklare hvorfor: - - Moderator: @username Brug venligst Codepen eller Pastebin når du sender store mængder kode, fordi det forstyrrer chatten for alle og kan betragtes som spamming i henhold til vores adfærdskodeks. - -- For milde og utilsigtede overtrædelser af adfærdskodeksen - - Moderator: Dette er en venlig påmindelse for alle at følge adfærdskodeksen: https://code-of-conduct.freecodecamp.org/ - -7. **Må ikke prale af at være en moderator** Se ikke dig selv som over fællesskabet. Du er fællesskabet. Og fællesskabet har tillid til dig for at hjælpe med at beskytte noget sjældent, som vi alle deler - et _indbydende_ sted for nye udviklere. Hvis du praler om at være en moderator, folk kan føle sig utrygge omkring dig, på samme måde, som folk kan føle sig utrygge omkring en politibetjent, selv hvis de ikke gør noget galt. Det er kun den menneskelige natur. - -8. **Modsiger ikke andre moderatorer** Hvis du er uenig i en moderators handling tale med dem i privat eller bringe det op i den #mod-chat kanal. Aldrig tilsidesætte et forbud, og aldrig modsige de andre moderator(er) offentligt. I stedet har en kølig diskussion i mod-chat og overbevise moderatoren om, at de selv bør vende deres forbud eller ændre deres synspunkt. Husk: Vi er alle på det samme team. Vi ønsker at værdsætte moderatorernes rolle og præsentere en fælles front. - -9. **Tal med andre moderatorer** Vi har kun plads til moderatorer. Brug det! Hvis du føler dig ubehagelig med at håndtere en bestemt situation, så spørg andre moderatorer om hjælp. Hvis De mener, at der skal diskuteres noget, så gør det. Du er en del af teamet, og vi sætter pris på input fra alle teammedlemmer! Selv om De er fuldstændig uenig i noget i disse retningslinjer eller i adfærdskodeksen! - -10. **Midlertidigt inaktiv** Hvis du ikke vil være aktiv som moderator i et stykke tid på grund af ferie, sygdom eller anden grund, sørge for at lade de andre vide i den #mod-chat kanal. Dette er så vi ved, om vi kan regne med, at du regelmæssigt er aktiv på serveren eller ej. - -# Sådan bliver du en moderator - -Hvis du hjælper folk i samfundet konsekvent over tid, vil vores Moderator Team til sidst tage til efterretning, og en af dem vil nævne dig som en mulig moderator til [vores personale](https://forum.freecodecamp.org/g/Team). Der er ingen genveje til at blive moderator. - -Hvis du er godkendt, vil vi føje dig til vores Moderator Teams på [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators)osv. - -> [!NOTE] > **For GitHub:** Når du er blevet accepteret som moderator, vil du modtage en Github repository invitation. Du er nødt til at gå over mod [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) for at kunne acceptere invitationen. Dette er nødvendigt, for at vi kan give dig skriveadgang på nogle af vores depoter. - -# Hvordan vi pensionerer inaktive moderatorer - -Bemærk venligst, at vi ofte vil fjerne mods, som vi mener er inaktive. Når vi gør dette, vil vi sende følgende meddelelse: - -> Dette er en standard besked, der underretter dig om, at, da du ikke synes at have været en aktiv moderator for nylig, fjerner vi dig fra vores Moderator-team. Vi værdsætter dybt jeres hjælp i fortiden. - -> Hvis du tror, vi gjorde det ved en fejl, eller når du er klar til at komme tilbage og bidrage mere, besvar blot denne besked, så jeg kan vide. - -# Sådan fungerer vores bidragyderrum - -Alle er velkomne i [Contributors room på vores Discord](https://discord.gg/KVUmVXA). Det er det udpegede chatrum til moderatorer og andre campister, der bidrager til vores fællesskab på en hvilken som helst måde herunder gennem studiegrupper. - -Vores antagelse er, at bidragsydere vil læse alt i dette rum, der direkte nævner dem med et `@username`. Alt andet er valgfrit. Men du er velkommen til at læse noget som helst indlæg derinde og interagere. - -# Håndtering af advokater - -Du kan blive kontaktet af organisationer, der ønsker at partner eller co-brand med freeCodeCamp på en eller anden måde. Når du indser, at dette er, hvad de er efter, skal du stoppe med at tale med dem og fortælle dem at e-maile quincy@freecodecamp.org. Han får hele tiden forslag som dette og er i den bedste position til at bedømme, om et sådant forhold vil være det værd for vores samfund (og det er sjældent). - -# Håndtering af (mental) sundhedsforespørgsler - -Du kan komme på tværs af situationer, hvor brugere søger lægehjælp eller beskæftiger sig med mental sundhed og søger støtte. Som en politisk sag bør De undgå at tale privat om disse spørgsmål. Hvis situationen på et tidspunkt afspejler sig tilbage til fCC, ønsker vi at føre samtalen på posten. Gør det klart, at vi ikke er sundhedspersonale, og at du opfordrer brugeren til at finde professionel hjælp. Så svært som det nogle gange kan være, undgå at give nogen tips eller råd, bortset fra at pege brugeren i retning af professionel hjælp! - -Hvis dette sker på Discord: Suspendér brugeren. Det er ikke at straffe dem! Suspenderer en bruger vil skabe en privat kanal, der kun er tilgængelig for brugeren og holdet. Dette vil gavne både brugeren og fCC på flere måder: - -- Brugeren er garanteret noget privatliv -- Offentlig chat er ikke længere forstyrret -- Andre teammedlemmer kan rejse ind, hvis du er ubehageligt at håndtere situationen selv - -> [!BEMÆRK] Suspenderer en bruger automatisk giver dem en besked om at læse vores adfærdskodeks. Sørg for at du informerer brugeren om, at du Suspenderede dem for at give dem noget privatliv, og at de ikke bliver straffet. Det er meget vigtigt! Vi ønsker absolut at undgå at give brugerne den idé, at de bliver straffet for at nå ud for at få hjælp! - -Hvis du mener, at brugeren er i stand til at slutte sig til samfundet, skal du højreklikke på den private kanal og kopiere ID. Sæt følgende besked i #mod-log: - -> Henvisning til lægelig rådgivning: - -Derefter kan du fjerne suspensionen fra brugeren, som du normalt gør. - -Nyttige URL'er: - -http://www.suicide.org/international-suicide-hotlines.html - -# Et notat om ytringsfrihed - -Nogle gange vil folk forsvare noget stødende eller antændende, at de sagde som "ytringsfrihed". - -Denne XKCD tegneserie opsummerer perfekt de fleste samfunds tanker om ytringsfrihed. Så hvis nogen forsvarer noget, de siger som "ytringsfrihed" velkommen til at sende det til dem. - -
        - -Tak for at læse dette, og tak for at hjælpe udviklerfællesskabet! diff --git a/docs/i18n/Danish/flight-manuals/using-reply-templates.md b/docs/i18n/Danish/flight-manuals/using-reply-templates.md deleted file mode 100644 index d77ed37e00..0000000000 --- a/docs/i18n/Danish/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Brug Af Svar Skabeloner - -Disse er nogle af de standard svar skabeloner, som du kan bruge, mens du gennemgår pull requests og triaging spørgsmål. - -> Du kan selv lave dine egne med GitHubs indbyggede [**Gemte svar**](https://github.com/settings/replies/) -funktion eller bruge dem nedenfor. - -### Mange tak - -```markdown -Tak for dit bidrag til siden! 👍 -Vi accepterer gerne disse ændringer og ser frem til fremtidige bidrag. 🎉 -``` - -### Tak og tillykke - -> For at takke og opmuntre førstegangsbidragsydere. - -```markdown -Hej @username. Tillykke med din første pull-anmodning (PR)! 🎉 - -Tak for dit bidrag til siden! 👍 -Vi accepterer gerne disse ændringer og ser frem til fremtidige bidrag. 📝 -``` - -### Fejl Ved Bygning - -```markdown -Hej @username - -Vi vil elske at kunne flette dine ændringer, men det ser ud til, at der er en fejl med Travis CI build. ⚠️ - -Når du har løst disse problemer, vil vi kunne gennemgå din PR og flette den. 😊 - ---- - -> Du er velkommen til at henvise til [Style guide for at skrive artikler](https://github. om/freeCodeCamp/freeCodeCamp#artikeltitel) til dette repo ved at formatere en artikel korrekt så din Travis CI bygger passer. ✅ -> -> Det er også god praksis på GitHub at skrive en kort beskrivelse af dine ændringer, når du opretter en PR. 📝 -``` - -### Synkroniserer Gaffel - -> Når PR ikke er opdateret med `master` -grenen. - -``````markdown -Hej @username - -Vi vil elske at kunne flette dine ændringer, men det ser ud til, at der er en fejl med Travis CI build. ⚠️ - -```bash -Fejl: ENOTDIR: ikke en mappe, åben 'src/pages/java/data-abstraction/index.md' -`````` - -Denne særlige fejl var ikke forårsaget af din fil, men var en gammel fejl forårsaget af sammenlægning defekt kode til `master` filialen. Det er siden blevet løst. - -For at bestå bygningen, skal du synkronisere de seneste ændringer fra `master` gren af `freeCodeCamp/freeCodeCamp` repo. - -Ved hjælp af kommandolinjen, kan du gøre dette i tre nemme trin: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -Hvis du bruger en GUI, kan du blot `Tilføj en ny fjernbetjening...` og bruge linket `git://github.com/freeCodeCamp/freeCodeCamp.git` fra oven. - -Når du synkroniserer din gaffel og passerer bygningen, Vi vil være i stand til at gennemgå din PR og fusionere den. 😊 - ---- - -> Du er velkommen til at henvise til artiklen [Synkronisering af en gaffel](https://help.github.com/articles/syncing-a-fork/) på GitHub for mere indsigt i, hvordan du holder din gaffel opdateret med upstream repository. 🔄 -> -> Det er også god praksis på GitHub at skrive en kort beskrivelse af dine ændringer, når du opretter en PR. 📝 -`````` - -### Sammenfletningskonflikter - -> Når PR har sammenfletningskonflikter, der skal løses.1 - -```markdown -Hey @username - -Vi vil elske at kunne flette dine ændringer, men det ser ud til, at du har nogle sammenfletningskonflikter. ⚠️ - -Når du har løst disse konflikter, vil vi være i stand til at gennemgå din PR og flette den. 😊 - ---- - -> Hvis du ikke er bekendt med sammenfletningskonfliktprocessen, er velkommen til at kigge over GitHubs guide på ["Løs en sammenfletningskonflikt"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> Det er også god praksis på GitHub at skrive en kort beskrivelse af dine ændringer, når du opretter en PR. 📝 -`````` -1 Hvis en førstegangsbidragsyder har en fusionskonflikt, vil vedligeholdere løse konflikten for dem. - -### Duplicate - -> Når PR er repetitiv eller en dublet. - -```markdown -Hej @username - -Det lader til, at lignende ændringer allerede er blevet accepteret tidligere for denne artikel du redigerer, ked af det. 😓 - -Hvis du føler, du har mere at tilføje, er du velkommen til at åbne en ny PR. - -Tak igen! 😊 - ---- - -> Hvis du har spørgsmål, er du velkommen til at kontakte [Gitter](https://gitter.im/FreeCodeCamp/Contributors) eller ved at kommentere nedenfor. 💬 -``` - -### Lukker ugyldige pull anmodninger - -> Når PR er ugyldig. - -```markdown -Hej @username - -Du har ikke tilføjet noget indhold, Vi lukker denne PR og markerer den som 'ugyldig'. 😓 - -Du er dog velkommen til at åbne en anden PR! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Danish/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Danish/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 13ffabd1cc..0000000000 --- a/docs/i18n/Danish/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,481 +0,0 @@ -# Flight Manual for working on Virtual Machines - -Som medlem af personalet eller dev-teamet du kan have fået adgang til vores cloud serviceudbydere som Azure, Digital Ocean, etc. - -Her er nogle praktiske kommandoer, som du kan bruge til at arbejde på de virtuelle maskiner (VM), for eksempel udfører vedligeholdelsesopdateringer eller laver generel houeskeeping. - -# Get a list of the VMs - -> [!BEMÆRK] Mens du måske allerede har SSH adgang til VM'erne, det alene vil ikke lade dig liste VM'er, medmindre du er blevet tildelt adgang til cloud-portaler samt. - -## Azure - -Installer Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Installer Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Autentificering og kontekstskift: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Sørg for, at VM er blevet leveret fuldstændigt, og der er ingen efter installationstrin kører. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -NGINX config er tilgængelig på [dette repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -Hvis du ikke bruger cloud-init config tidligere bruge nedenstående til manuel opsætning af NGINX og fejlsider: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Få Cloudflare oprindelsescertifikater fra den sikre opbevaring og installere på krævede steder. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Opdatering Af Instanser (Maintenance) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

        https://amplify.nginx.com

        -## Updating Instances (Maintenance) - -Konfigurer ændringer i vores NGINX forekomster vedligeholdes på GitHub, disse bør implementeres på hver instans som så: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test og genindlæs konfigurationen [med signaler](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Opdatering Af Instanser (Maintenance) - -```console -## Logning og overvågning - -```console -pm2 logfiler -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start pladsholder instanser for webklienten, disse vil blive opdateret med artefakter fra Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Opdatering Af Instanser (Maintenance) - -```console -## Logning og overvågning - -```console -pm2 logfiler -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Danish/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Danish/how-to-catch-outgoing-emails-locally.md index 40130ec1cb..397ea3382a 100644 --- a/docs/i18n/Danish/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Danish/how-to-catch-outgoing-emails-locally.md @@ -1,67 +1,67 @@ -> **Bemærk:** Dette er et **valgfrit** trin og er kun påkrævet, når du arbejder med e-mail arbejdsgange +> **Note:** This is an **optional** step and is required only when working with email workflows -## Indledning +## Introduction -Nogle e-mailarbejdsgange kræver som opdatering af en brugers e-mail, at back-end api-serveren sender udgående e-mails. Et alternativ til at bruge en e-mail-tjenesteudbyder til at sende faktiske e-mails, Mailhog er et udviklerværktøj til e-mail-test, der vil fange e-mails sendt af din freeCodeCamp forekomst. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Installerer MailHog +## Installing MailHog -MailHog kan installeres på macOS, Windows og Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Indledning](#introduction) -- [Installerer MailHog](#installing-mailhog) - - [Installerer MailHog på macOS](#installing-mailhog-on-macos) - - [Installerer MailHog på Windows](#installing-mailhog-on-windows) - - [Installerer MailHog på Linux](#installing-mailhog-on-linux) -- [Brug Af MailHog](#using-mailhog) -- [Nyttige Links](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Installerer MailHog på macOS +### Installing MailHog on macOS -Installér MailHog på macOS med [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash -bryg installere mailhog -bryg tjenester starte mailhog +brew install mailhog +brew services start mailhog ``` -Ovenstående kommandoer vil starte en mailhog service i baggrunden. +The above commands will start a mailhog service in the background. -Når installationen er færdig, kan du begynde at [bruge MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Installerer MailHog på Windows +### Installing MailHog on Windows -Download den seneste version af MailHog fra [MailHogs officielle arkiv](https://github.com/mailhog/MailHog/releases). Find og klik på linket til din Windows-version (32 eller 64 bit) og en .exe-fil vil blive hentet til din computer. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Når overførslen er færdig, skal du klikke for at åbne filen. En Windows firewall meddelelse kan vises, anmoder om adgangstilladelse til MailHog. En standard Windows kommandolinje prompt vil åbne, hvor MailHog vil køre, når firewall adgang er givet. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Luk MailHog ved at lukke kommandoprompten vinduet. For at starte MailHog igen, skal du klikke på MailHog eksekverbare (. xe) fil, der blev hentet i starten - det er ikke nødvendigt at downloade en ny MailHog installationsfil. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Start [med at bruge MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Installerer MailHog på Linux +### Installing MailHog on Linux -Installér først [Gå](https://golang.org). +First, install [Go](https://golang.org). -Kør følgende kommandoer for at installere GO på Debian-baserede systemer som Ubuntu og Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Kør følgende kommandoer for at installere GO på RPM-baserede systemer som CentOS, Fedora, Red Hat Linux, etc. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Alternativt kan du køre følgende kommandoer for at installere GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Sæt nu stien til Go med følgende kommandoer. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile @@ -69,7 +69,7 @@ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile source ~/.profile ``` -Endelig, indtaste kommandoerne nedenfor for at installere og køre MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Start [med at bruge MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Brug Af MailHog +## Using MailHog -Åbn en ny browserfane eller -vindue og gå til [http://localhost:8025](http://localhost:8025) for at åbne din MailHog indbakke, når MailHog installationen er afsluttet, og MailHog kører. Indbakken vises i lighed med skærmbilledet nedenfor. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![MailHog Skærmbillede 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -E-mails sendt fra din freeCodeCamp installation vises som nedenfor +Emails sent by your freeCodeCamp installation will appear as below -![MailHog Skærmbillede 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -To faner, der giver dig mulighed for at se enten almindelig tekst eller kildeindhold, vil være tilgængelige, når du åbner en given e-mail. Sørg for at det almindelige tekstfaneblad er valgt som nedenfor. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![MailHog Skærmbillede 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Alle links i e-mailen skal være klikbare og løse til deres URL. +All links in the email should be clickable and resolve to their URL. -## Nyttige Links +## Useful Links -- Tjek [MailHog](https://github.com/mailhog/MailHog) depotet for yderligere oplysninger vedrørende MailHog. Yderligere oplysninger er også tilgængelige om brugerdefinerede MailHog konfigurationer. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Danish/how-to-help-with-video-challenges.md b/docs/i18n/Danish/how-to-help-with-video-challenges.md index 1bc6d70d88..0724aaef02 100644 --- a/docs/i18n/Danish/how-to-help-with-video-challenges.md +++ b/docs/i18n/Danish/how-to-help-with-video-challenges.md @@ -1,30 +1,30 @@ -# Hvordan man kan hjælpe med videoudfordringer +# How to help with video challenges -Video udfordringer er en ny type udfordring i freeCodeCamp pensum. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -En videoudfordring er en lille del af et videokursus i fuld længde om et bestemt emne. En video udfordring side indlejrer en YouTube-video. Hver challenge side har et enkelt multiple-choice-spørgsmål relateret til videoen. En bruger skal besvare spørgsmålet korrekt, før du flytter på den næste video udfordring i kurset. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -De video udfordring sider er skabt af medlemmer af freeCodeCamp team. YouTube-videoer er også uploadet af medlemmer af freeCodeCamp teamet. Mange af videoudfordringerne har endnu ikke spørgsmål forbundet med dem. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Du kan hjælpe ved at oprette multiple choice spørgsmål relateret til video sektioner og tilføje spørgsmålene til markdown filer til videoudfordringerne. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Udfordring Skabelon +## Challenge Template -Nedenfor er en skabelon af, hvordan udfordringen markdown filer ser ud. +Below is a template of what the challenge markdown files look like. ````md --- -id: Unik identifikator (alfanumerisk, MongoDB_id) -title: Challenge Titel +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 11 videoId: 'YouTube videoId for video challenge' --- -## Beskrivelse +## Description
        -En valgfri beskrivelse med nyttige oplysninger relateret til videoen. +An optional description with helpful information related to the video.
        ## Tests @@ -32,168 +32,168 @@ En valgfri beskrivelse med nyttige oplysninger relateret til videoen.
        ```yml -spørgsmål: - tekst: 'Spørgsmål' - svar: - - 'Svar En' - - 'Svar to' - - 'Svar tre' - løsning: 3 +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
        ```` -## Oprettelse af spørgsmål til videoudfordringer +## Creating questions for video challenges -### Få adgang til videoudfordringsmarkdown filer +### Access the video challenge markdown files -Du kan finde markdown filer til videoudfordringer på følgende steder i læseplanen: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Dataanalyse med Python Kursus](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) -- [TensorFlow 2.0 Course](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) - [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) - [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -Vælg en challenge markdown-fil fra ovenstående muligheder. +Pick a challenge markdown file from the options above. -### Skim gennem videoen, der er forbundet med udfordringen og opret et mutiple choice-spørgsmål +### Skim through the video associated with the challenge and create a mutiple choice question -Find først video-id'et. +First, find the videoId. -For eksempel, i følgende kode fra overskriften på en video challenge markdown fil, video-Id er "nVAaxZ34khk". På GitHub skal oplysningerne laves ud i tabelformat. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d titel: Dataanalyse Eksempel A challengeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -Dernæst skal du tilgå YouTube-videoen med den video-Id. URLen til videoen vil være: -https://www.youtube. om/watch?v=[videoId] (tilføj videoId til URL'en uden firkantede parenteser) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -I eksemplet ovenfor er url https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim YouTube-videoen med den videoId og tænk på et multiple choice-spørgsmål baseret på indholdet af videoen. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Tilføj spørgsmålet til markdown filen +### Add the question to the markdown file -Du kan tilføje spørgsmålet lokalt eller direkte til GitHub interfacet. For at tilføje spørgsmålet lokalt, skal du [opsætte freeCodeCamp lokalt](how-to-setup-freecodecamp-locally.md). Du kan også finde filen på GitHub og klikke på redigeringsknappen for at tilføje spørgsmålet til højre i din browser. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Hvis et spørgsmål endnu ikke er blevet tilføjet til en bestemt videoudfordring, det vil have følgende standard spørgsmål: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -spørgsmål: - tekst: ● - Spørgsmål - svar: - - ● +question: + text: | + Question + answers: + - | one - - ● - to - - ● - tre - løsning: 3 + - | + two + - | + three + solution: 3 ``` -Opdater ordet “Spørgsmål” med dit spørgsmål. Opdater “en”, “to”, og “tre” med de mulige svar. Sørg for at opdatere løsningsnummeret, med hvilket svaret er korrekt. Du kan tilføje flere mulige svar ved hjælp af samme format. Spørgsmålet og svarene kan omringes med citationstegn. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### Brug markdown til at formatere dit spørgsmål +#### Use markdown to format your question -Teksten i spørgsmålet fortolkes som markdown. Den enkleste måde at sikre, at det er formateret korrekt, er at starte spørgsmålet med `tekst: -`, sådan her: +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -spørgsmål: - tekst: Error - Spørgsmål +question: + text: | + Question ``` -Så skal du sørge for, at dit spørgsmål er på en ny linje og indrykket et niveau mere end `tekst: ●`. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -Den samme fremgangsmåde kan bruges til svarene, så hele spørgsmålet bliver til +The same approach can be used for the answers, so the entire question becomes ```yml -spørgsmål: - Tekst - Spørgsmål - svar: - - ● - Første svar - - ● - Anden - - ● - Tredje - løsning: 2 +question: + text: | + Question + answers: + - | + First answer + - | + Second + - | + Third + solution: 2 ``` -Sørg for, at hvert svar er plausibelt, men der er kun ét rigtigt svar. +Make sure each answer is plausible but there is only one correct answer. -#### Brug af HTML +#### Use of HTML -Spørgsmål og svar kan indeholde visse HTML-tags som `
        ` for en ny linje. HTML-tags skal bruges sparsomt, når spørgsmål ikke kan udtrykkes uden dem. +Questions and answers can contain certain HTML tags like `
        ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Eksempler på spørgsmål +### Question examples -#### Eksempler uden HTML +#### Examples without HTML ````yml -spørgsmål: - tekst: ¤ - Hvad logger denne JavaScript-kode på konsollen? +question: + text: | + What does this JavaScript code log to the console? ```js - console.log('god-verden'); + console.log('hello world'); ```` - Vælg et svar! - svar: - - Ž goddag *verden* - - Ž **goddag** verden - - ● hej verden løsning: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -spørgsmål: - tekst: ¤ - Hvad vil udskrive efter kørsel af denne kode: +question: + text: | + What will print out after running this code: ```py - bredde = 15 - højde = 12. - print(højde/3) + width = 15 + height = 12.0 + print(height/3) ```` - svar: + answers: - | 39 - | 4 - - Ž 4.0 - - ● 5,0 - - ● 5 løsning: 3 + - | 4.0 + - | 5.0 + - | 5 solution: 3 ```` -#### Eksempel med HTML- +#### Example with HTML -``yml -spørgsmål: - tekst: ¤ - Hvad vil udskrive efter kørsel af denne kode: -
        bredde = 15
        højde = 12.
        print(højde/3)
        - svar: - - Økologisk +```yml +question: + text: | + What will print out after running this code: +
        width = 15
        height = 12.0
        print(height/3)
        + answers: + - | 39 - - Økologisk + - | 4 - - Økologisk - 4. - - ¤ - 5. - - ● + - | + 4.0 + - | + 5.0 + - | 5 - løsning: 3 + solution: 3 ```` -Det sidste eksempel viser, at HTML kan bruges, men at det ikke er så læsbar som den version uden det. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -For flere eksempler, kan du se på markdown filer til følgende video kursus. Alle udfordringerne har allerede spørgsmål: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Åbn en pull-anmodning +## Open a pull request -Når du har oprettet et eller flere spørgsmål, kan du forpligte ændringerne til en ny filial og [åbne en pull request](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Danish/how-to-open-a-pull-request.md b/docs/i18n/Danish/how-to-open-a-pull-request.md index 65ece2120f..2729cd6237 100644 --- a/docs/i18n/Danish/how-to-open-a-pull-request.md +++ b/docs/i18n/Danish/how-to-open-a-pull-request.md @@ -1,103 +1,103 @@ -# Sådan åbnes en Pull Request (PR) +# How to open a Pull Request (PR) -En pull-anmodning gør det muligt at sende ændringer fra din gaffel på GitHub til freeCodeCamp.org's hovedarkiv. Når du er færdig med at foretage ændringer i koden, eller kodning udfordringer, bør du følge disse retningslinjer for at sende en PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Forbered en god PR titel +## Prepare a good PR title -Vi anbefaler at bruge [konventionel titel og beskeder](https://www.conventionalcommits.org/) til commits og pull request. Konventionen har følgende format: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([valgfrit område(r)]): ` +> `([optional scope(s)]): ` > -> For eksempel: +> For example: > -> `fix(learn): tests for do...while loop challenge` +> `fix(learn): tests for the do...while loop challenge` -Når du åbner en Pull Request(PR), kan du bruge nedenstående til at afgøre typen, scope (valgfri) og beskrivelse. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. **Type:** -| Type | Hvornår skal du vælge | -|:---- |:-------------------------------------------------------------------------------------- | -| fix | Ændret eller opdateret / forbedret funktionalitet, tests, verbiage af en lektion, etc. | -| feat | Kun hvis du tilføjer ny funktionalitet, test osv. | -| øm | Ændringer, der ikke er relateret til kode, tests eller verbiage af en lektion. | -| docs | Ændringer til `/docs` mappe eller de bidragende retningslinjer osv. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Anvendelsesområde:** +**Scope:** -Du kan vælge et anvendelsesområde fra [denne liste af etiketter](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Beskrivelse:** +**Description:** -Behold den kort (mindre end 30 tegn) og enkel, kan du tilføje flere oplysninger i PR beskrivelse boksen og kommentarer. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Nogle eksempler på gode PRs titler ville være: +Some examples of good PRs titles would be: -- `fix(a11y): forbedret søgebjælke kontrast` -- `feat: tilføj flere test til html og css udfordringer` -- `fix(api,client): forhindre CORS fejl ved formularindsendelse` -- `docs(i18n): Kinesisk oversættelse af lokal opsætning` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Foreslår en pull-anmodning +## Proposing a Pull Request -1. Når redigeringerne er blevet begået, vil du blive bedt om at oprette en pull-anmodning på din gaffels GitHub side. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Billede - Sammenlign pull request prompt på GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Som standard skal alle pull anmodninger være imod freeCodeCamp hovedrepo, `master` filial. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Sørg for, at din grundgaffel er indstillet til freeCodeCamp/freeCodeCamp når du rejser en Pull-anmodning. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Image - Sammenligning af gafler når du laver en pull request](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Indsend pull anmodning fra din filial til freeCodeCamp's `master` filial. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. I kroppen af din PR indeholde en mere detaljeret oversigt over de ændringer, du har foretaget, og hvorfor. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Du vil blive præsenteret for en pull request skabelon. Dette er en tjekliste, som du skal have fulgt før du åbner pull anmodningen. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Udfyld detaljerne, som du finder passende. Disse oplysninger vil blive gennemgået, og anmelderne vil afgøre, om din pull-anmodning er accepteret eller ej. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Hvis PR er beregnet til at behandle en eksisterende GitHub Issue så ved udgangen af din PR's beskrivelse organ, brug søgeordet _Lukker_ med issue nummer til [automatisk lukke dette problem, hvis PR er accepteret og fusioneret](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Eksempel: `Lukker #123` lukker problemet 123 + > Example: `Closes #123` will close issue 123 -5. Angiv, om du har testet på en lokal kopi af webstedet eller ej. +5. Indicate if you have tested on a local copy of the site or not. - Dette er meget vigtigt, når du foretager ændringer, der ikke bare redigerer tekstindhold som dokumentation eller en challenge beskrivelse. Eksempler på ændringer, der har brug for lokal test omfatter JavaScript, CSS, eller HTML, der kan ændre funktionalitet eller layout af en side. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Tilbagemelding ved pull anmodninger +## Feedback on pull requests -> Tillykke! :tada: når du laver en PR og takker meget for at have brugt tid på at bidrage. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Vores moderatorer vil nu tage et kig og efterlade dig feedback. Vær tålmodig med de andre moderatorer og respektere deres tid. Alle pull anmodninger gennemgås når tiden er inde. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Hvis du har brug for hjælp, så diskuter i [bidragsyderes chatrum](https://gitter.im/FreeCodeCamp/Contributors), er vi mere end glade for at hjælpe dig. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Hvis du skal bidrage med flere pull requests, Vi anbefaler, at du læser [foretage ændringer og synkroniserer](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) retningslinjer for at undgå at skulle slette din gaffel. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Konflikter på en pull-anmodning +## Conflicts on a pull request -Konflikter kan opstå, fordi mange bidragsydere arbejder på lageret, og ændringer kan ødelægge din PR, som afventer en gennemgang og sammenfletning. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Oftere end ikke kan du ikke kræve en rebase, fordi vi squash alle forpligtelser, men hvis der anmodes om en rebase her er, hvad du skal gøre. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### For sædvanlige fejlrettelser og funktioner +### For usual bug fixes and features -Når du arbejder på almindelige fejl og funktioner på vores udviklingsgren `master`, er du i stand til at foretage en simpel rebase: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Rebase din lokale kopi: +1. Rebase your local copy: ```console git checkout git pull --rebase upstream master ``` -2. Løs eventuelle konflikter og tilføj / rediger commits +2. Resolve any conflicts and add / edit commits ```console - # Enten - git tilføj . + # Either + git add . git commit -m "chore: resolve conflicts" # Or @@ -105,60 +105,60 @@ Når du arbejder på almindelige fejl og funktioner på vores udviklingsgren `ma git commit --amend --no-edit ``` -3. Skub dine ændringer tilbage til PR +3. Push back your changes to the PR ```console - git push --force oprindelse + git push --force origin ``` -### For kommende pensum og funktioner +### For upcoming curriculum and features -Når du arbejder på funktioner til vores kommende curriculum `next-*` grene, har du gjort en kirsebær pluk: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Sørg for, at din opstrøm synkroniseres med din lokale: +1. Make sure your upstream comes in sync with your local: ```console git checkout master - git henter --all --prune + git fetch --all --prune git checkout next-python-projects git reset --hard upstream/next-python-projects ``` -2. Tag backup +2. Take backup - a. Slet enten din lokale filial efter at have taget en sikkerhedskopi (hvis du stadig har den lokalt): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout - # eksempel: - # git checkout feat/add-numpy-video-spørgsmål + # example: + # git checkout feat/add-numpy-video-question git checkout -b - # eksempel: - # git checkout -b backup-feat/add-numpy-video-spørgsmål + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - b. Eller bare en sikkerhedskopi af din pr- gren (hvis du ikke har den lokalt): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # eksempel: - # git checkout -b backup-feat/add-numpy-video-spørgsmål origin/feat/add-numpy-video-spørgsmål + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Start med en ren skive: +4. Start off with a clean slate: ```console - git checkout -b next-python-projekter + git checkout -b next-python-projects git cherry-pick ``` -5. Løs eventuelle konflikter og oprydning, installer kør tests +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean @@ -166,14 +166,14 @@ Når du arbejder på funktioner til vores kommende curriculum `next-*` grene, ha npm ci npm run test:curriculum --superblock= - # eksempel: + # example: - # npm run test:curriculum --superblock=python-for-all + # npm run test:curriculum --superblock=python-for-everybody ``` -6. Hvis alt ser godt ud til at skubbe tilbage til PR +6. If everything looks good push back to the PR ```console - git push --force oprindelse + git push --force origin ``` diff --git a/docs/i18n/Danish/how-to-setup-freecodecamp-locally.md b/docs/i18n/Danish/how-to-setup-freecodecamp-locally.md index 9e11c00778..619db733cf 100644 --- a/docs/i18n/Danish/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Danish/how-to-setup-freecodecamp-locally.md @@ -1,326 +1,326 @@ -Følg disse retningslinjer for opsætning af freeCodeCamp lokalt på dit system. Dette anbefales på det kraftigste, hvis du ønsker at bidrage regelmæssigt. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For nogle af de bidrag arbejdsgange, du har brug for at have freeCodeCamp kører lokalt. For eksempel, forhåndsvisning kodning udfordringer eller fejlfinding og fastsættelse af fejl i kodebasen. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] Hvis du ikke er interesseret i at oprette freeCodeCamp lokalt, overveje at bruge Gitpod, et gratis online dev miljø. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Åbn i Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Starter et klar-til-kode dev miljø til freeCodeCamp i din browser.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Forbered din lokale maskine +### How to prepare your local machine -Start med at installere forudsætningssoftware til dit operativsystem. +Start by installing the prerequisite software for your operating system. -Vi støtter primært udvikling på **\*nix** systemer. Vores medarbejdere og community bidragsydere arbejder regelmæssigt med kodebase ved hjælp af værktøjer, der er installeret på Ubuntu og macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Vi understøtter også Windows 10 via WSL2, som du kan forberede ved at [læse denne guide](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Nogle medlemmer af fællesskabet udvikler også på Windows 10 indbygget med Git til Windows (Git Bash), og andre værktøjer installeret på Windows. Vi har ikke officiel støtte til en sådan opsætning på dette tidspunkt, vi anbefaler at bruge WSL2 i stedet. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Forudsætninger:** +**Prerequisites:** -| Forudsætning | Version | Noter | -| --------------------------------------------------------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12. x` | [LTS Skema](https://github.com/nodejs/Release#release-schedule) | -| npm (kommer sammen med Node) | `6. x` | Har ikke LTS-udgivelser, vi bruger versionen bundtet med Node LTS | -| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Udgivelsesnoter](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Hvis du har en anden version, skal du installere den anbefalede version. Vi kan kun støtte installationsproblemer for anbefalede versioner. Se [fejlfinding](#troubleshooting) for detaljer. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Hvis Node.js allerede er installeret på din maskine, skal du køre følgende kommandoer for at validere versionerne: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console node -v npm -v ``` -> [!TIP] Vi anbefaler stærkt opdatering til de seneste stabile udgivelser af ovennævnte software, også kendt som Langsigtet Support (LTS) udgivelser. +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Når du har installeret forudsætningerne, skal du forberede dit udviklingsmiljø. Dette er almindeligt for mange udviklingsarbejdsgange, og det behøver I kun at gøre én gang. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Følg disse trin for at få dit udviklingsmiljø klar:** +**Follow these steps to get your development environment ready:** -1. Installer [Git](https://git-scm.com/) eller din favorit Git klient, hvis du ikke allerede har. Opdater til den nyeste version; den version, der kom bundtet med dit operativsystem, kan være forældet. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Valgfri, men anbefales) [Opsæt en SSH-nøgle](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Installer en kodeeditor efter eget valg. +3. Install a code editor of your choice. - Vi anbefaler stærkt at bruge [Visual Studio Code](https://code.visualstudio.com/) eller [Atom](https://atom.io/). Disse er store, gratis og open source kode editorer. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Konfigurer linting til din kodeeditor. +4. Set up linting for your code editor. - Du skal have [ESLint kørende i din editor](http://eslint.org/docs/user-guide/integrations.html), og det vil fremhæve noget, der ikke overholder [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!TIP] Ignorér venligst ikke nogen lining-fejl. De er beregnet til at **hjælpe** dig og sikre en ren og enkel kodebase. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Gaffel af depotet på GitHub +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) er et skridt, hvor du får din egen kopi af freeCodeCamp's hovedlager (alias _repo_) på GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Dette er vigtigt, da det giver dig mulighed for at arbejde på din egen kopi af freeCodeCamp på GitHub, eller for at downloade (klon) dit repository til at arbejde på lokalt. Senere, vil du være i stand til at anmode om ændringer til at blive trukket ind i hoveddepotet fra din gaffel via en pull request (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. (Automatic Copy) +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Din gaffel på `https://github.com/YOUR_USER_NAME/freeCodeCamp` er ofte omtalt som `oprindelse` -lageret. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Følg disse trin for at gaffel `https://github.com/freeCodeCamp/freeCodeCamp` -lageret:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Gå til freeCodeCamp på GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. Klik på "Fork"-knappen i øverste højre hjørne af grænsefladen ([Flere detaljer Her](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Efter at depotet er blevet forked, vil du blive ført til din kopi af freeCodeCamp repository på `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
        - Sådan gaffel freeCodeCamp på GitHub (skærmbillede) + How to fork freeCodeCamp on GitHub (screenshot)
        - Sådan gaffel freeCodeCamp på GitHub + How to fork freeCodeCamp on GitHub
        -## Klon din gaffel fra GitHub +## Clone your fork from GitHub -[Kloning](https://help.github.com/articles/cloning-a-repository/) er hvor du **downloade** en kopi af et depot fra en `fjern-` -placering, der enten ejes af dig eller af en anden. I dit tilfælde er denne fjernplacering din `gaffel` af freeCodeCamp's repository som skal være tilgængelig på `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Kør disse kommandoer på din lokale maskine: +Run these commands on your local machine: -1. Åbn en terminal / Kommandoprompt / Shell i din projektmappe +1. Open a Terminal / Command Prompt / Shell in your projects directory - _dvs.: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. Klon din gaffel af freeCodeCamp, erstatter `YOUR_USER_NAME` med dit GitHub brugernavn +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Dette vil downloade hele freeCodeCamp repository til din projektmappe. +This will download the entire freeCodeCamp repository to your projects directory. -Bemærk: `--depth=1` skaber en overfladisk klon af din gaffel, med kun den seneste historie/commit. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Konfigurer synkronisering fra overordnet +## Set up syncing from parent -Nu hvor du har downloadet en kopi af din gaffel, skal du oprette en `upstream` fjernbetjening til det overordnede arkiv. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Som nævnt tidligere](#fork-the-repository-on-github)er hovedlageret henvist til `upstream` -lageret. Din gaffel refereret til som `oprindelse` -lageret. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Du skal have en reference fra din lokale klon til `upstream` -depotet ud over `oprindelse` -depotet. Dette er så du kan synkronisere ændringer fra hoveddepotet uden krav om gaffel og kloning gentagne gange. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Skift mappe til den nye freeCodeCamp mappe: +1. Change directory to the new freeCodeCamp directory: ```console cd freeCodeCamp ``` -2. Tilføj en fjernreference til det vigtigste freeCodeCamp repository: +2. Add a remote reference to the main freeCodeCamp repository: ```console - git fjernbetjening tilføj opstream https://github.com/freeCodeCamp/freeCodeCamp.git + git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Sørg for, at konfigurationen ser korrekt ud: +3. Ensure the configuration looks correct: ```console git remote -v ``` - Outputtet skal se ud som nedenfor: + The output should look something like below: ```console - oprindelse https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - oprindelse https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Kører freeCodeCamp lokalt +## Running freeCodeCamp locally -Nu hvor du har en lokal kopi af freeCodeCamp, kan du følge disse instruktioner for at køre det lokalt. Dette vil give dig mulighed for at: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Forhåndsvisning redigerer til sider, som de vises på læringsplatformen. -- Arbejdet med UI-relaterede spørgsmål og forbedringer. -- Fejlsøg og løse problemer med applikationsservere og klient apps. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Hvis du løber ind i problemer, skal du først udføre en websøgning efter dit problem og se, om det allerede er blevet besvaret. Hvis du ikke kan finde en løsning, søg venligst vores [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) side for en løsning og rapporter problemet, hvis det endnu ikke er blevet rapporteret. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -Og som altid, er velkommen til at hoppe videre til vores [Contributors Chat room på Gitter](https://gitter.im/FreeCodeCamp/Contributors) eller [vores Discord server](https://discord.gg/pFspAhS), for hurtige forespørgsler. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Du kan springe kører freeCodeCamp lokalt, hvis du blot redigerer filer. For eksempel, udføre en `rebase`eller løse `fusionere` konflikter. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Du kan altid vende tilbage til denne del af vejledningen senere. Du bør **kun** springe dette trin, hvis du ikke behøver at køre apps på din maskine. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Spring over for at foretage ændringer](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Indstil afhængigheder +### Configuring dependencies -#### Trin 1: Opsæt miljøvariablen fil +#### Step 1: Set up the environment variable file -Standard API-nøgler og miljøvariabler gemmes i filen `sample.env`. Denne fil skal kopieres til en ny fil med navnet `.env` , der er tilgået dynamisk under installationstrinnet. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Opret en kopi af "sample.env" og navngiv den ".env". -# Udfyld den med de nødvendige API-nøgler og hemmeligheder: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp sample. nv .env +cp sample.env .env # Windows -kopier sample.env .env +copy sample.env .env ``` -Nøglerne i filen `.env` er _ikke_ forpligtet til at blive ændret for at køre appen lokalt. Du kan efterlade standardværdierne kopieret over fra `sample.env` som-is. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!TIP] Husk på, hvis du vil bruge tjenester som Forfatter eller Algolia, du skal købe dine egne API-nøgler til disse tjenester og redigere poster i overensstemmelse hermed i `. nv` fil. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Trin 2: Installer afhængigheder +#### Step 2: Install dependencies -Dette trin vil installere de afhængigheder, der kræves for at programmet skal køre: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Trin 3: Start MongoDB og seed databasen +#### Step 3: Start MongoDB and seed the database -Før du kan køre programmet lokalt, skal du starte MongoDB-tjenesten. +Before you can run the application locally, you will need to start the MongoDB service. -> [!BEMÆRK] Medmindre du har MongoDB kørende i en anden opsætning end standarden, den URL , der er gemt som værdien `MONGOHQ_URL` i `. nv` filen skal virke fint. Hvis du bruger en brugerdefineret konfiguration, skal du ændre denne værdi efter behov. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Start MongoDB-serveren i en separat terminal: +Start the MongoDB server in a separate terminal: -- På macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- I Windows skal du angive den fulde sti til `mongod` binær +- On Windows, you must specify the full path to the `mongod` binary ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Sørg for at erstatte `3.6` med den version, du har installeret + Make sure to replace `3.6` with the version you have installed -> [!TIP] Du kan undgå at skulle starte MongoDB hver gang ved at installere det som en baggrundstjeneste. Du kan [lære mere om det i deres dokumentation for dit operativsystem](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Dernæst lad os se databasen. I dette trin kører vi nedenstående kommando, der udfylder MongoDB-serveren med nogle oprindelige datasæt, der kræves af tjenester. Disse omfatter bl.a. et par ordninger. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -npm løberfrø +npm run seed ``` -#### Trin 4: Start freeCodeCamp klient ansøgning og API server +#### Step 4: Start the freeCodeCamp client application and API server -Du kan nu starte API-serveren og klientprogrammerne. +You can now start up the API server and the client applications. ```console -npm kør udvikling +npm run develop ``` -Denne enkelt kommando vil affyre alle de tjenester, herunder API-serveren og klientapplikationer, der er tilgængelige for dig at arbejde på. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!BEMÆRK] Når du er klar, skal du åbne en webbrowser og **besøge **. Hvis app'en indlæser, tillykke – du er alle indstillet! Du har nu en kopi af freeCodeCamp's hele læringsplatform, der kører på din lokale maskine. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] API-serveren serverer API'er på `http://localhost:3000`. Gatsby-appen betjener klientprogrammet på `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Hvis du besøger bør du se de tilgængelige API'er. +> If you visit you should see the available APIs. -## Log ind med en lokal bruger +## Sign in with a local user -Din lokale opsætning udfylder automatisk en lokal bruger i databasen. Klik på knappen `Log ind` vil automatisk godkende dig i den lokale applikation. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Men adgang til brugerporteføljen side er lidt vanskelig. Under udvikling Gatsby overtager betjeningen af klientsiden sider og dermed vil du få en `404` side for brugerporteføljen, når du arbejder lokalt. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Du skal blot klikke på **"Preview Custom 404 Page"** knappen vil videresende dig til den korrekte side. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
        - Sådan logger du på, når du arbejder lokalt (skærmbillede) + How to sign in when working locally (screenshot)
        - Sådan logger du på, når du arbejder lokalt + How to sign in when working locally
        -## Foretager ændringer lokalt +## Making changes locally -Du kan nu foretage ændringer i filer og forpligte dine ændringer til din lokale klon af din gaffel. +You can now make changes to files and commit your changes to your local clone of your fork. -Følg disse trin: +Follow these steps: -1. Validér at du er på `master` grenen: +1. Validate that you are on the `master` branch: ```console git status ``` - Du bør få et output som dette: + You should get an output like this: ```console - På grenmaster - Din gren er opdateret med 'oprindelse/master'. + On branch master + Your branch is up-to-date with 'origin/master'. - intet at begå, arbejdsmappe ren + nothing to commit, working directory clean ``` - Hvis du ikke er på master eller din arbejdsmappe ikke er ren, skal du løse udestående filer/commits og checkout `master`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console git checkout master ``` -2. Synkroniser de seneste ændringer fra freeCodeCamp upstream `master` -grenen til din lokale hovedgren: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!ADVARSEL] Hvis du har en udestående pull-anmodning fra `master-` gren af din gaffel, vil du miste dem i slutningen af dette trin. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Du bør sikre, at din pull-anmodning bliver flettet af en moderator, før du udfører dette trin. For at undgå dette scenarie, bør du **altid** arbejde på en anden gren end `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Dette trin **vil synkronisere de seneste ændringer** fra freeCodeCamps hovedlager. Det er vigtigt, at du genbaserer din gren på toppen af den seneste `upstream/master` så ofte som muligt for at undgå konflikter senere. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Opdater din lokale kopi af freeCodeCamp upstream-depotet: + Update your local copy of the freeCodeCamp upstream repository: ```console - git hente opstrøms + git fetch upstream ``` - Hårdt nulstille din hovedfilial med freeCodeCamp master: + Hard reset your master branch with the freeCodeCamp master: ```console git reset --hard upstream/master ``` - Skub din hovedgren til din oprindelse for at få en ren historik på din gaffel på GitHub: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console git push origin master --force ``` - Du kan validere din nuværende master matcher upstream/master ved at udføre en diff: + You can validate your current master matches the upstream/master by performing a diff: ```console - git diff opstrøm/master + git diff upstream/master ``` - Den resulterende output skal være tom. + The resulting output should be empty. -3. Opret en ny ny filial: +3. Create a fresh new branch: - At arbejde på en separat gren for hvert problem hjælper dig med at holde din lokale arbejdskopi ren. Du bør aldrig arbejde på `master`. Dette vil jage din kopi af freeCodeCamp og du kan være nødt til at starte forfra med en frisk klon eller gaffel. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Kontroller, at du er på `master` som forklaret tidligere, og filial derfra: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Dit filialnavn skal starte med en `fix/`, `feat/`, `docs/`, osv. Undgå at bruge issue numre i filialer. Hold dem korte, meningsfulde og unikke. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Nogle eksempler på gode filialnavne er: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,50 +330,50 @@ Følg disse trin: translate/add-spanish-basic-html ``` -4. Rediger sider og arbejde med kode i din foretrukne teksteditor. +4. Edit pages and work on code in your favorite text editor. -5. Når du er tilfreds med de ændringer, bør du eventuelt køre freeCodeCamp lokalt for at få vist ændringerne. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Sørg for at rette eventuelle fejl og kontrollere formateringen af dine ændringer. +6. Make sure you fix any errors and check the formatting of your changes. -7. Tjek og bekræft de filer, du opdaterer: +7. Check and confirm the files you are updating: ```console git status ``` - Dette bør vise en liste over `unstaged` filer, som du har redigeret. + This should show a list of `unstaged` files that you have edited. ```console - På grenfunktion/dokumentation - Din gren er opdateret med 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Ændringer ikke iscenesat for commit: - (brug "git add/rm ... for at opdatere hvad der vil blive indgået) - (brug "git checkout -- . ." at kassere ændringer i arbejdsmappen) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - ændret: KONTROLLING. d - ændret: docs/README.md - ændret: docs/how-to-setup-freecodecamp-locally. d - ændret: docs/how-to-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Trin ændringerne og lav en forpligtelse: +8. Stage the changes and make a commit: - I dette trin bør du kun markere filer, som du har redigeret eller tilføjet dig selv. Du kan udføre en nulstilling og løse filer, som du ikke har til hensigt at ændre, hvis det er nødvendigt. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console - git tilføj sti/til/min/ændret/file.ext + git add path/to/my/changed/file.ext ``` - Eller du kan tilføje alle de `unstaged` filer til iscenesættelse: + Or you can add all the `unstaged` files to the staging area: ```console - git tilføj . + git add . ``` - Kun de filer, der blev flyttet til iscenesættelsesområdet vil blive tilføjet, når du laver en forpligtelse. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status @@ -382,36 +382,36 @@ Følg disse trin: Output: ```console - På grenfunktion/dokumentation - Din gren er opdateret med 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Ændringer, der skal foretages: - (brug "git reset HEAD ..." til unstage) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - ændret: CONTRIBUTING.md - ændret: docs/README.md - ændret: docs/how-to-setup-freecodecamp-locally.md - ændret: docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Nu kan du begå dine ændringer med en kort besked som så: + Now, you can commit your changes with a short message like so: ```console - git commit -m "fix: min korte commit besked" + git commit -m "fix: my short commit message" ``` - Nogle eksempler: + Some examples: ```md - fix: opdatering guide artikel til Java - for loop - feat: Tilføj guide artikel for alexa færdigheder + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - Valgfri: + Optional: - Vi anbefaler stærkt at lave en konventionel begå besked. Dette er en god praksis, som du vil se på nogle af de populære Open Source repositories. Som udvikler opfordrer dette dig til at følge standard praksis. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Nogle eksempler på konventionelle begå meddelelser er: + Some examples of conventional commit messages are: ```md fix: update HTML guide article @@ -420,66 +420,66 @@ Følg disse trin: docs: update contributing guidelines ``` - Behold disse kort, ikke mere end 50 tegn. Du kan altid tilføje yderligere oplysninger i beskrivelsen af commit beskeden. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Dette tager ikke længere tid end en ukonventionel meddelelse som 'opdateringsfil' eller 'tilføj index.md' + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Du kan lære mere om, hvorfor du skal bruge konventionelle commits [her](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Hvis du indser, at du har brug for at redigere en fil eller opdatere commit beskeden efter at have lavet en commit kan du gøre det efter redigering af filerne med: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - git commit -- amend + git commit --amend ``` - Dette vil åbne en standard teksteditor som `nano` eller `vi` , hvor du kan redigere commit besked titel og tilføj/redigere beskrivelsen. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Dernæst kan du skubbe dine ændringer til din gaffel: +10. Next, you can push your changes to your fork: ```console - git push-oprindelse filial/navn-her + git push origin branch/name-here ``` -## Foreslå en Pull Request (PR) +## Proposing a Pull Request (PR) -Når du har foretaget dine ændringer, så tjek her for [hvordan du åbner en Pull Request](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Hurtige kommandoer reference +## Quick commands reference -En hurtig reference til de kommandoer, som du får brug for, når du arbejder lokalt. +A quick reference to the commands that you will need when working locally. -| kommando | beskrivelse | -| -------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `npm ci` | Installerer / geninstaller alle afhængigheder og bootstraps de forskellige tjenester. | -| `npm løberfrø` | Fortolker alle de challenge markdown filer og indsætter dem i MongoDB. | -| `npm kør udvikling` | Starter freeCodeCamp API Server og klient applikationer. | -| `npm test` | Kør alle JS-test i systemet, herunder klient, server, lint og challenge tests. | -| `npm run test:client` | Kør klient test suite. | -| `npm kørselstest:curriculum` | Kør curriculum test suite. | -| `npm run test: curriculum --block='Basic HTML og HTML5'` | Test en specifik blok. | -| `npm run test:curriculum --superblock='responsive-web-design'` | Test en specifik SuperBlock. | -| `npm kørsel test-curriculum-fuld-output` | Kør curriculum test suite, uden at gemme efter den første fejl | -| `Npm kør test:server` | Kør serverens testsuite. | -| `npm run e2e` | Kør Cypressen slutter med at afslutte tests. | -| `npm kør ren` | Afinstallerer alle afhængigheder og rydder op caches. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Fejlfinding +## Troubleshooting -### Problemer med installation af de anbefalede forudsætninger +### Issues with installing the recommended prerequisites -Vi udvikler jævnligt på de nyeste eller mest populære operativsystemer som macOS 10.15 eller senere, Ubuntu 18.04 eller senere og Windows 10 (med WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Det anbefales at forske i dit specifikke spørgsmål om ressourcer såsom Google, Stack Overflow og Stack Exchange. Der er en god chance for, at nogen har stået over for det samme problem, og der er allerede et svar på din specifikke forespørgsel. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Hvis du er på et andet operativsystem og/eller stadig er ved at løbe ind i problemer, se [få hjælp](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). > [!WARNING] > -> Undgå at oprette GitHub problemer for forudsætningsproblemer. De er uden for dette projekts anvendelsesområde. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Problemer med brugergrænseflade, skrifttyper, opbyg fejl mv. +### Issues with the UI, Fonts, build errors etc. -Hvis du står over for problemer med UI, Skrifttyper eller se bygger fejl en oprydning kan være nyttig: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean @@ -488,17 +488,17 @@ npm run seed npm run develop ``` -ELLER +OR -Brug genvejen +Use the shortcut ``` npm run clean-and-develop ``` -Hvis du fortsat står over for problemer med bygningen, anbefales det at rense arbejdsområdet. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Brug `git clean` i interativ tilstand: +Use `git clean` in interative mode: ``` git clean -ifdX @@ -506,41 +506,41 @@ git clean -ifdX
        - Hvordan man renser git usporet filer (skærmbillede) + How to clean git untracked files (screenshot)
        - Hvordan man renser git usporet filer + How to clean git untracked files
        -### Problemer med API, Login, Challenge Indsendelser, osv. +### Issues with API, Login, Challenge Submissions, etc. -Hvis du ikke kan logge på, og i stedet ser du et banner med en fejlmeddelelse om, at det vil blive rapporteret til freeCodeCamp, dobbelttjek venligst at din lokale port `3000` ikke er i brug af et andet program. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**På Linux / MacOS / WSL på Windows - Fra Terminal:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console -netstat -ab ¤ grep "3000" +netstat -ab | grep "3000" -tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**På Windows - Fra Forhøjet PowerShell:** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab ¤ Select-String "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0.0.0: 3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Problemer med installation af afhængigheder +### Issues installing dependencies -Hvis du får fejl under installation af afhængigheder, sørg for, at du ikke befinder dig i et begrænset netværk, eller at dine firewall-indstillinger ikke forhindrer dig i at få adgang til ressourcer. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -Første gang opsætningen kan tage et stykke tid afhængigt af din netværks båndbredde. Vær tålmodig, og hvis du stadig sidder fast, vi komprimeret ved hjælp af GitPod i stedet for en offline opsætning. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Få Hjælp +## Getting Help -Hvis du sidder fast og har brug for hjælp, Lad os vide ved at spørge i kategorien ['Bidragydere' på vores forum](https://forum.freecodecamp.org/c/contributors) eller [Bidragyderne chatrum](https://gitter.im/FreeCodeCamp/Contributors) på Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Der kan være en fejl i konsollen i din browser eller i Bash / Terminal / Kommandolinje, der vil hjælpe med at identificere problemet. Giv denne fejlmeddelelse i din problembeskrivelse, så andre lettere kan identificere problemet og hjælpe dig med at finde en løsning. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Danish/how-to-setup-wsl.md b/docs/i18n/Danish/how-to-setup-wsl.md index 2963e60fa1..68bce6dde6 100644 --- a/docs/i18n/Danish/how-to-setup-wsl.md +++ b/docs/i18n/Danish/how-to-setup-wsl.md @@ -1,97 +1,97 @@ -# Konfigurer freeCodeCamp på Windows Undersystem til Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!BEMÆRK] Før du følger disse instruktioner, skal du sørge for, at dit system opfylder kravene +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (Version 2004, Byg 19041 eller højere) - tilgængelig for alle distributioner, herunder Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop til Windows**: Se de respektive krav til [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) og [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Denne vejledning dækker nogle fælles trin med opsætningen af WSL2. Når nogle af de fælles problemer med WSL2 er løst, du bør være i stand til at følge vores lokale setup guide til at arbejde med freeCodeCamp på Windows, der kører en WSL distro som Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Aktiver WSL +## Enable WSL -Følg instruktionerne på den [officielle dokumentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) for at installere WSL1 og efterfulgt af opgradering til WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Vi anbefalede at bruge Ubuntu-18.04 eller derover med WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!BEMÆRK] + > [!NOTE] > - > Mens du kan bruge andre ikke-debiske baserede distros, de alle kommer med deres egen gotchas og er uden for rækkevidden af denne guide. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Opdater afhængighederne for OS +2. Update the dependencies for the OS ```console sudo apt update sudo apt upgrade -y - # oprydning + # cleanup sudo apt autoremove -y ``` -## Opsæt Git +## Set up Git -Git leveres forudinstalleret med Ubuntu 18.04, verificer at din Git-version med `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ -~git --version +❯ git --version git version 2.25.1 ``` -(Valgfri, men anbefales) Du kan nu gå videre til [opsætning af dine ssh-nøgler](https://help.github.com/articles/generating-an-ssh-key) med GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Installerer en kodeeditor +## Installing a Code Editor -Vi anbefaler stærkt at installere [Visual Studio Code](https://code.visualstudio.com) på Windows 10. Det har stor støtte til WSL og installerer automatisk alle de nødvendige udvidelser på din WSL distro. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -Essentielt vil du redigere og gemme din kode på Ubuntu-18.04 med VS-kode installeret på Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Installerer Docker- Skrivebord +## Installing Docker Desktop -**Docker Desktop til Windows** giver dig mulighed for at installere og køre database og tjenester som MongoDB, NGINX osv. Dette er nyttigt for at undgå almindelige faldgruber med at installere MongoDB eller andre tjenester direkte på Windows eller WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Følg instruktionen på den [officielle dokumentation](https://docs.docker.com/docker-for-windows/install) og installer Docker Desktop til din Windows-distribution. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Der er nogle minimale hardwarekrav til den bedste oplevelse. +There are some minimum hardware requirements for the best experience. -## Indstil Docker- skrivebord til WSL +## Configure Docker Desktop for WSL -Når Docker Desktop er installeret, [følg disse instruktioner](https://docs.docker.com/docker-for-windows/wsl) og konfigurér den til at bruge Ubuntu-18.04 installation som en backend. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Dette gør det, så containerne kører på WSL side i stedet for at køre på Windows. Du vil kunne tilgå tjenesterne via `http://localhost` på både Windows og Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Installer MongoDB fra Docker Hub +## Install MongoDB from Docker Hub -Når du har konfigureret Docker Desktop til at arbejde med WSL2, skal du følge disse trin for at starte en MongoDB tjeneste: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Start en ny Ubuntu-18.04 terminal +1. Launch a new Ubuntu-18.04 terminal -2. Træk `MongoDB 3.6` fra dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Start MongoDB-tjenesten på port `27017`og konfigurér den til automatisk at køre på systemgenstart +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console - docker run - it \ - - v mongodata:/data/db \ - - p 27017:27017 \ + docker run -it \ + -v mongodata:/data/db \ + -p 27017:27017 \ --name mongodb \ --restart unless-stopped \ -d mongo:3 ``` -4. Du kan nu få adgang til tjenesten fra både Windows eller Ubuntu på `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Installerer node.js og npm +## Installing Node.js and npm -Vi anbefaler, at du installerer LTS-udgivelsen til Node.js med en node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Når det er installeret bruge disse kommandoer til at installere og bruge Node.js version efter behov +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts @@ -107,23 +107,23 @@ nvm install 14 nvm use 12 ``` -Node.js kommer bundtet med `npm`, du kan opdatere til de nyeste versioner af `npm` med: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console npm install -g npm@latest ``` -## Konfigurer freeCodeCamp lokalt +## Set up freeCodeCamp locally -Nu hvor du har installeret forudsætningerne, så følg [vores lokale installationsguide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) for at klone, installere og opsætte freeCodeCamp lokalt på din maskine. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. > [!WARNING] > -> Bemærk, at på dette tidspunkt er opsætningen til Cypress tests (og relaterede GUI behov) et arbejde i gang. Du bør stadig være i stand til at arbejde på det meste af kodebasen. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Nyttige Links +## Useful Links -- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - en artikel af Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) -- Ofte stillede spørgsmål om: - - [Windows-delsystem til Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Docker Desktop til Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Danish/how-to-use-docker-on-windows-home.md b/docs/i18n/Danish/how-to-use-docker-on-windows-home.md index 4345da1ef6..85ac65a3e3 100644 --- a/docs/i18n/Danish/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Danish/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Sådan bruger du Docker på Windows Home +# How to use Docker on Windows Home -Der er et par faldgruber, der skal undgås, når du opretter docker på Windows Home. Først og fremmest skal du bruge [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) som administrator. Desværre understøtter Windows Home ikke Docker til Windows Desktop, så værktøjskassen skal bruges i stedet. Det skal køres som Administrator, da installationen bruger symlinks, som ikke kan oprettes på anden måde. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Når du har installeret værktøjskassen, skal du køre Docker Quickstart terminal som administrator. Dette vil oprette en `standard` virtuel maskine, hvis den ikke allerede eksisterer. Når det er sket, lukke terminalen og åbne VirtualBox (igen som administrator). Du bør være i stand til at se `standard` maskine. Webstedet er ganske ressourceintensiv, så stop den virtuelle maskine og hæve indstillingerne så meget som du kan - hukommelse i særdeleshed. Det er blevet bekræftet at arbejde med 4 GB ram. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Når du er glad for, at Docker arbejder, klone freeCodeCamp repository til en mappe inde i `C:\Brugere`. Disse mapper deles giver Docker adgang til de lokale mapper, som den skal bruge under installationen. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Hvis du ser beskeder som +If you see messages like ```shell -bash: change_volumes_owner.sh: Ingen sådan fil eller mappe +bash: change_volumes_owner.sh: No such file or directory ``` -når du `npm kører docker:init` dette er sandsynligvis synderen. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Danish/how-to-work-on-coding-challenges.md b/docs/i18n/Danish/how-to-work-on-coding-challenges.md index 83db664cf9..2b95545e91 100644 --- a/docs/i18n/Danish/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Danish/how-to-work-on-coding-challenges.md @@ -1,52 +1,56 @@ -# Hvordan man arbejder på kodning udfordringer +# How to work on coding challenges -Vores mål er at udvikle en sjov og klar interaktiv læringsoplevelse. +Our goal is to develop a fun and clear interactive learning experience. -Det er vanskeligt at designe interaktive kodningsudfordringer. Det ville være meget lettere at skrive en lang forklaring eller at oprette en video tutorial, og der er et sted for dem på Medium og YouTube. Men for vores kerne pensum holder vi os til det, der virker bedst for de fleste mennesker - en fuldt interaktiv, videospil-lignende oplevelse. +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. -Vi ønsker, at campister skal nå frem til en flydetilstand. Vi ønsker, at de skal bygge momentum og blast gennem vores pensum med så få snags som muligt. Vi ønsker, at de skal gå ind i projekterne med tillid og opnå en bred udsættelse for programmeringskoncepter. +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. -At skabe disse udfordringer kræver enorm kreativitet og opmærksomhed på detaljer. Der er masser af hjælp til rådighed. Du vil have støtte fra et helt team af bidragsydere, til hvem du kan hoppe ideer ud og demo dine udfordringer. Bliv aktiv i [bidragsyderlokalet](https://gitter.im/freecodecamp/contributors) og stil masser af spørgsmål. +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/). -Med din hjælp kan vi designe en interaktiv kodning pensum, der vil hjælpe millioner af mennesker med at lære at kode i mange år fremover. +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. -Indholdet for hver udfordring gemmes i sin egen markdown fil. Denne markdown fil konverteres senere til HTML ved hjælp af vores værktøjer til at oprette interaktive websider. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Du kan finde alt freeCodeCamp.org's curricular indhold i mappen [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges). +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. -## Opsæt værktøjet til pensum +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Før du arbejder på pensum, vil du nødt til at oprette nogle værktøjer til at hjælpe dig med at teste dine ændringer. Du kan bruge enhver mulighed fra nedenstående: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- Du kan [konfigurere freeCodeCamp lokalt](how-to-setup-freecodecamp-locally.md). Dette er **stærkt anbefalet** til regelmæssige/gentagne bidrag. Denne opsætning giver dig mulighed for at arbejde og teste dine ændringer. -- Brug Gitpod, et gratis online udviklermiljø. Hvis du klikker på knappen nedenfor, vil du starte et klar-til-kode udviklermiljø for freeCodeCamp i din browser. Det tager kun et par minutter. +## Set up the tooling for the curriculum - [![Åbn i Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Rediger filerne på GitHub interface ved at klikke på blyant-ikonet for den tilsvarende fil. Mens dette er den hurtigste måde, anbefales det **ikke**, fordi du ikke kan teste dine ændringer på GitHub. Hvis vores vedligeholdere konkluderer, at de ændringer, du har foretaget, skal testes lokalt, skal du følge metoderne ovenfor i stedet igen. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Udfordring Skabelon + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Nedenfor er en skabelon af, hvad udfordringen markdown filer ser ud i øjeblikket. For at se den strømlinede skabelon vil vi vedtage se [nedenfor](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: Unik identifikator (alfanumerisk, MongoDB_id) -title: Challenge Titel +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 0 videoUrl: 'url of video explanation' --- -## Beskrivelse +## Description
        -A Beskrivelse af udfordringen og hvad der kræves for at bestå +A Description of the challenge and what is required to pass
        -## Instruktioner +## Instructions
        -Instruktioner om, hvad der præcist skal gøres. +Instructions about what exactly needs to be done.
        ## Tests @@ -55,94 +59,94 @@ Instruktioner om, hvad der præcist skal gøres. ```yml tests: - - tekst: Skal returnere "foo" - testString: 'En strenget funktion muligvis ved brug af Chai påstande' + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ```` -## Udfordring Frø +## Challenge Seed
        ```{ext} -Kode, der vises i editoren som standard. +Code displayed in the editor by default. -Dette er en nødvendig sektion for udfordringen. +This is a required section for the challenge. ```
        -### Før Test +### Before Test
        ```{ext} -Valgfri Test setup kode. +Optional Test setup code. ```
        -### Efter Test +### After Test
        ```{ext} -Valgfri Test rive ned kode. +Optional Test tear down code. ```
        -## Løsning +## Solution
        ```{ext} -// løsning påkrævet +// solution required ```
        ```` -> [!BEMÆRK] +> [!NOTE] > -> 1. I ovenstående afsnit eksempler på `{ext}` er: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. For afsnittet `Tests` ovenfor skal `text` og `testString` være gyldige YAML strenge. `testString` kan være en streng funktion eller udtryk ved hjælp af hvilke kunne bruge Chai påstande. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Nummerering Udfordringer +## Numbering Challenges -Hver udfordring har brug for en `id`. Hvis du ikke angiver en, så vil MongoDB oprette en ny tilfældig en når den gemmer data; dog ønsker vi ikke, at det skal gøre det, da vi ønsker, at udfordringen id'er skal være konsistente på tværs af forskellige miljøer (iscenesættelse, produktion, masser af forskellige udviklere mv.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -For at generere en ny i en shell (forudsat at MongoDB kører separat): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Kør `mongo` kommando. -2. Kør `ObjectId()` kommando. +1. Run `mongo` command. +2. Run `ObjectId()` command. -For eksempel: +For example: ```bash $ mongo MongoDB shell version v3.6.1 -forbinder til: mongodb://127.0.0.1:27017 +connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Resultatet er et nyt id, for eksempel `5a474d78df58bafeb3535d34` ovenfor. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -Når du har dit id, skal du sætte det i markdown filen som `id` feltet øverst, f.eks. +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- @@ -150,240 +154,317 @@ id: 5a474d78df58bafeb3535d34 title: Challenge Title ``` -## Navngivning udfordringer +## Naming challenges -Det er svært at navngive tingene. Vi har gjort det lettere ved at pålægge nogle begrænsninger. +Naming things is hard. We've made it easier by imposing some constraints. -Alle challenge titler skal være eksplicitte og skal følge dette mønster: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[objektklausul\] +\[verb\]\[object clause\] -Her er nogle eksempel challenge navne: +Here are some example challenge names: -- Brug med uret Notation til at angive polstring af et element -- Kondensér arrays med .reduce -- Brug parentes Notation til at finde det første tegn i en streng +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Udfordring beskrivelser / instruktioner +## Challenge descriptions/instructions -Sætninger skal være klare og koncise med minimal jargon. Hvis det anvendes, skal jargon straks defineres på almindeligt engelsk. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Behold afsnit korte (omkring 1-4 sætninger). Det er mere sandsynligt, at folk læser flere korte afsnit end en tekstvæg. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Udfordringsteksten skal bruge den anden person ("dig") til at hjælpe med at give den en samtaletone. På denne måde synes teksten og instruktionerne at tale direkte med autocamperen om udfordringen. Prøv at undgå at bruge den første person ("I", "vi", "let's", og "os"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Brug ikke udgående links. Disse afbryder strømmen. Campers bør aldrig nødt til at google noget under disse udfordringer. Hvis der er ressourcer, du tror campister ville drage fordel af, skal du tilføje dem til udfordringens Guide-relaterede artikel. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -Du kan tilføje diagrammer, hvis det er absolut nødvendigt. +You can add diagrams if absolutely necessary. -Brug ikke emojis eller emotikoner i udfordringer. freeCodeCamp har et globalt fællesskab, og den kulturelle betydning af en emoji eller emotik kan være forskellig i hele verden. Også emojis kan gøre forskelligt på forskellige systemer. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Korrekte navneord bør bruge korrekt kapitalisering, når det er muligt. Nedenfor er en liste over ord, som de skal vises i udfordringerne. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (store bogstaver i "J" og "S" og ingen forkortelser) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Front-end udvikling (adjektiv form med en bindestreg) er, når du arbejder på forsiden (noun form uden bindestreg). Det samme gælder med "back end", "full stack" og mange andre sammensatte udtryk. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### Reglen på 2 minutter +### The 2-minute rule -Hver udfordring skal løses inden for 120 sekunder af en indfødt engelsk taler, der har fuldført de udfordringer, der fører op til det. Dette omfatter den tid det tager at læse anvisningerne / instruktionerne forstå den seedede kode skrive deres egen kode og få alle tests til at passere. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Hvis det tager mere end to minutter at fuldføre udfordringen, har du to muligheder: +If it takes longer than two minutes to complete the challenge, you have two options: -- Forenkle udfordringen, eller -- Opdel udfordringen i to udfordringer. +- Simplify the challenge, or +- Split the challenge into two challenges. -Den 2-minutters regel tvinger dig, udfordringen designer, at gøre dine retninger kortfattede, din seed kode klar, og dine tests ligetil. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Vi sporer, hvor lang tid det tager for campister at løse ændringer og bruge disse oplysninger til at identificere udfordringer, der skal forenkles eller splittes. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modularitet +### Modularity -Hver udfordring skal undervise i præcis ét koncept, og dette koncept skal fremgå af udfordringens navn. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Vi kan forstærke tidligere dækkede begreber gennem gentagelse og variationer - f.eks. indføre h1 elementer i én udfordring, derefter h3 elementer et par udfordringer senere. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Vores mål er at have tusindvis af 2-minutters udfordringer. Disse kan flyde sammen og gentage tidligere dækkede begreber. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Formaterer challenge text +### Formatting challenge text -Her er specifikke formateringsretningslinjer for challenge tekst og eksempler: +Here are specific formatting guidelines for challenge text and examples: -- Sprog søgeord gå i `` tags. For eksempel HTML tag navne eller CSS egenskabsnavne -- Den første udgave af et søgeord, når det er ved at blive defineret, eller generelle søgeord (dvs. "objekt" eller "uforanderlig") gå i `` tags -- Henvisninger til kodedele (dvs. funktion, metode eller variabelnavne) skal indpakkes i `` tags. Se eksemplet nedenfor: -- Brug parseInt til at konvertere variablen realNumber til et heltal. -- Multi-line code blocks **must be eded by a empty line**. Den næste linje skal starte med tre backticks efterfulgt straks af et af de [understøttede sprog](https://prismjs.com/#supported-languages). For at fuldføre kodeblokken, skal du starte en ny linje som kun har tre backticks og **en anden tom linje**. **Bemærk:** Hvis du vil bruge et eksempel kode i YAML, brug `yaml` i stedet for `yml` for sproget til højre for backticks. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Se eksemplet nedenfor: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Følgende er et eksempel på kode: +The following is an example of code: ```{language} -[DIN KODE HER] +[YOUR CODE HERE] ```` ```` -- Yderligere oplysninger i form af en note bør formateres `Note: Resten af note text... -- Hvis der er behov for flere noter, listen derefter alle noter i separate sætninger ved hjælp af formatet `Noter: Første note tekst. Anden note tekst.« -- Brug dobbelte citater hvor det er relevant +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Skrivningstest +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Udfordringer skal have det mindste antal test, der er nødvendige for at kontrollere, at en camper forstår et koncept. +## Writing tests -Vores mål er at kommunikere det eneste punkt, som udfordringen forsøger at undervise, og afprøve, at de har forstået det. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Udfordringstest kan gøre brug af node.js og Chai.js påstand biblioteker. Også, hvis det er nødvendigt, brugergenereret kode kan tilgås i `code` variablen. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Formatering af seed code +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Her er specifikke retningslinjer for formatering af challenge seed code: +## Formatting seed code -- Brug to mellemrum til at indrykke -- JavaScript udsagn slutter med et semikolon -- Brug dobbelte citater hvor det er relevant -- Kommentarer lavet skal have et mellemrum mellem kommentar tegn og kommentaren selv +Here are specific formatting guidelines for the challenge seed code: - `// Fix this line` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Tips and Solutions +### Seed code comments -Hver udfordring har en `Få en Hint` knap, så en bruger kan få adgang til alle hints/løsninger, der er blevet skabt til udfordringen. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Hvis du finder et problem med en eksisterende challenge's hints/solutions emne, kan du stille forslag i [bidragsydere kategori] (https://forum.freecodecamp.org/c/contributors) på forummet. Moderatorer og brugere med tillidsniveau 3 vil gennemgå kommentarerne og beslutte, om de vil inkludere ændringerne i det tilsvarende hint/løsninger emne. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Tilføjelse af nye Challenge hints/solutions Emner +Example of valid single line JavaScript comment: -Tag følgende skridt, når du tilføjer en ny challenge hints/solutions relateret emne. +```js +// Only change code below this line +```` -1. Start med at følge de samme trin for at oprette et nyt emne, men gennemse det næste for at oprette titlen. -2. Titlen på emnet bør starte med `freeCodeCamp Challenge Guide: ` sammenkædet med den faktiske titel på curriculum challenge. For eksempel, hvis udfordringen hedder "`Chunky Monkey`", emnet titel ville være "`freeCodeCamp Challenge Guide: Chunky Monkey`". -3. `camperbot` skal være ejeren af disse emner/opslag så du bliver nødt til at anmode en admin til at ændre ejerskabet af hovedindlægget til `camperbot`. -4. Når det nye emne er oprettet, oprettes et forum topic id. Det er placeret i slutningen af forum topic URL. Dette id skal tilføjes til forsiden af curriculum challenge filen via den normale pull request proces for at få en Hint` knappen til at linke til emnet. +Example of a valid CSS comment: -### Retningslinjer for indhold af hints og løsningsemner +```js +/* Only change code above this line */ +``` -Når du foreslår en løsning til et curriculum udfordringsrelateret guideemne den fulde kode skal tilføjes. Dette omfatter al den oprindelige seed kode plus eventuelle ændringer, der er nødvendige for at bestå alle challenge tests. Følgende skabelon skal bruges ved oprettelse af nye hints/solutions emner: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
        + { /* Change code below this line */ } + + { /* Change code above this line */ } +

        {this.state.text}

        +
        + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: ````md # Challenge Name Goes Here --- -## Problem Forklaring +## Problem Explanation -Dette opsummerer, hvad der skal gøres uden blot at gentage challenge beskrivelsen og/eller instruktionerne. Dette er et valgfrit afsnit +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section -#### Relevante Links +#### Relevant Links - [Link Text](link_url_goes_here) - [Link Text](link_url_goes_here) --- -## Tips +## Hints -### Tip 1 +### Hint 1 -Tip går her +Hint goes here -### Tip 2 +### Hint 2 -Tip går her +Hint goes here --- -## Løsninger +## Solutions -
        Løsning 1 (Klik på Vis/Skjul) +
        Solution 1 (Click to Show/Hide) -``js -funktion myFunc() { - konsol. og('Hej Verden!'); +```js +function myFunc() { + console.log('Hello World!'); } ```` -#### Kode Forklaring +#### Code Explanation -- Kodeforklaring vises her -- Kodeforklaring vises her +- Code explanation goes here +- Code explanation goes here -#### Relevante Links +#### Relevant Links -- [Link Tekst](link_url_goes_here) -- [Link Tekst](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
        ```` -## Test Udfordringer +## Testing Challenges -Før du [opret en pull request](how-to-open-a-pull-request. d) for dine ændringer, skal du validere at de ændringer, du har foretaget, ikke uforvarende forårsage problemer med udfordringen. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. For at teste alle challenges, køres kommandoen nedenfor fra rodmappen +1. To test all challenges run the below command from the root directory ```` -npm kørselstest:curriculum +npm run test:curriculum ``` -2. Du kan også teste en blok eller en superblok af udfordringer med disse kommandoer +2. You can also test a block or a superblock of challenges with these commands ``` -npm run test: curriculum --block='Basic HTML og HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` npm run test:curriculum --superblock=responsive-web-design ``` -Du kan også teste en udfordring individuelt ved at udføre følgende trin: +You are also able to test one challenge individually by performing the following steps: -1. Skift til 'curriculum'-mappen: +1. Switch to the `curriculum` directory: ``` - cd- pensum + cd curriculum ``` -2. Kør følgende for hver challenge fil, som du har ændret: +2. Run the following for each challenge file for which you have changed: ``` - npm run test -- -g 'den fulde engelske titel på udfordringen' + npm run test -- -g 'the full English title of the challenge' ``` -Når du har bekræftet, at hver challenge du har arbejdet på består testene, [opret venligst en pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> Du kan indstille miljøvariablen `LOKALE` i `.env` til sproget i den eller de udfordringer, du skal teste. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> De aktuelt accepterede værdier er `english` og `chinese`, hvor `english` sættes som standard. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Kommende Udfordringsskabelon +## Upcoming Challenge Template -Udfordringsskabelonen i processen med at blive opdateret til en renere, mindre indlejret struktur. Dette er ikke fuldstændigt afsluttet, men følgende skal være tæt på den endelige struktur: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: ````mdx --- -id: Unik identifikator (alfanumerisk, MongoDB_id) -titel: 'Challenge Title' -challengeType: Integer, defineret i 'client/utils/challengeTypes. s` +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` videoUrl: 'url of video explanation' forumTopicId: 12345 --- -import Script fra './script. dx'; +import Script from './script.mdx'; ## --step-description-- -Beskrivelse tekst, i markdown +Description text, in markdown ```html
        - eksempel kode + example code
        ``` @@ -391,32 +472,32 @@ Beskrivelse tekst, i markdown ![test-id-1] -Der vil være et vilkårligt antal tripler af id'er, instruktioner (i markdown) og kodeblokke. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Kode for test 1 +Code for test one ``` ![test-id-2] -Flere instruktioner i markdown syntaks +More instructions in markdown syntax ```js -Mere kode +More code ``` -## -- step-seed-- +## --step-seed-- -### --før-bruger-kode-- +### --before-user-code-- ```lang -Kode evalueret før brugerens +Code evaluated before the user’s ``` ### --after-user-code-- ```lang -Kode evalueret efter brugeren, og lige før testene +Code evaluated after the user’s, and just before the tests ``` ### --seed-content-- @@ -424,15 +505,15 @@ Kode evalueret efter brugeren, og lige før testene ![index-html] ```html -Nogle html +Some html ``` ```css -Nogle css +Some css ``` ```js -Nogle js +Some js ``` ![index-js] @@ -447,31 +528,31 @@ Nogle js

        - Præcis det samme som sektionen med frø + Exactly the same as the seeds section

        - -- next-solution-marker + --next-solution-marker

        - Samme igen + Same again

        - -- question-marker-- + --question-marker--

        - -- text-marker-- + --text-marker--

        - Spørgsmålet ville gå her (bruges kun til videoudfordringer) + The question would go here (only used for video challenges)

        @@ -481,19 +562,19 @@ Nogle js

        - Svar 1 + Answer 1


        - Svar 2 + Answer 2


        - Svar 2 + More answers

        @@ -513,13 +594,13 @@ Nogle js

        - Nyttige Links + Useful Links

        - Oprettelse og redigering udfordringer: + Creating and Editing Challenges:

        @@ -527,14 +608,14 @@ Nogle js
        1. - Challenge typer - hvad den numeriske challenge type værdier betyder (enum). + Challenge types - what the numeric challenge type values mean (enum).

        2. - Bidrag til FreeCodeCamp - Skrive ES6 Challenge Tests - en video følgende Ethan Arrowood , da han bidrager til den gamle version af pensum. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

        3. diff --git a/docs/i18n/Danish/how-to-work-on-the-docs-theme.md b/docs/i18n/Danish/how-to-work-on-the-docs-theme.md index f04c44774a..bf8bf8f6c9 100644 --- a/docs/i18n/Danish/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Danish/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Hvordan man arbejder på docs tema +# How to work on the docs theme -> [!BEMÆRK] En hurtig påmindelse om, at du ikke behøver at opsætte noget for at arbejde på indholdet til dokumentationswebstedet. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> For at arbejde på de bidragende retningslinjer, kan du redigere eller tilføje filer i `docs` mappen [tilgængelig her](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Når dine ændringer er flettet, vil det blive gjort tilgængelige automatisk på dokumentationssiden. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Struktur af docs hjemmeside +## Structure of the docs website -Webstedet er genereret ved hjælp af [`docsify`](https://docsify.js.org)og tjente ved hjælp af GitHub sider. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Typisk behøver du ikke at ændre nogen konfiguration eller bygge webstedet lokalt. Hvis du er interesseret, her er hvordan det virker: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- Hjemmesidens kilde til dette websted er tilgængelig i [`docs/index.html`](index.html). -- Vi tjener denne fil som en SPA ved hjælp af `docsify` og GitHub Sider. -- Scriptet `docsify` genererer indholdet af `markdown` filer i `docs` mappe efter behov. -- Hjemmesiden er genereret fra [`_coverpage.md`](_coverpage.md). -- sidepanelets navigation er genereret fra [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Servering af dokumentationsstedet lokalt +## Serving the documentation site locally -Klon freeCodeCamp: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -Installer `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -og servere mappen `/docs` +and serve the `/docs` directory -```sh -docsify tjene docs +```console +docsify serve docs ``` -Alternativt, hvis du har installeret freeCodeCamp lokalt (se den lokale opsætningsguide), vi samler CLI med udviklingsværktøjerne, så du kan køre `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Danish/how-to-work-on-the-news-theme.md b/docs/i18n/Danish/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Danish/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Danish/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Danish/index.md b/docs/i18n/Danish/index.md index ade3e9e06c..1c4add4ab3 100644 --- a/docs/i18n/Danish/index.md +++ b/docs/i18n/Danish/index.md @@ -1,45 +1,43 @@ -Fællesskabet [freeCodeCamp.org](https://freecodecamp.org) er muligt takket være tusindvis af venlige frivillige som dig. Vi byder alle bidrag til fællesskabet velkommen og er glade for at byde dig velkommen ombord. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!BEMÆRK] Før du fortsætter, skal du tage et hurtigt 2 minutter at læse vores [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). Vi håndhæver den strengt på tværs af vores samfund. Vi ønsker at bidrage til freeCodeCamp.org for at være en sikker og inklusiv oplevelse for alle. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Glad bidrag. +Happy contributing. -Du er velkommen til: +You are welcome to: -- Opret, opdater og reparer fejl i vores [kodningsudfordringer](#coding-challenges). -- Hjælp os med at rette fejl i freeCodeCamp.org's [læringsplatform](#learning-platform). -- _(Kommer snart)_ Hjælp os med at oversætte freeCodeCamp.org til verdens sprog. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Har du spørgsmål? Gå over til [disse ofte stillede spørgsmål](/FAQ.md) , hvor vi besvarer nogle almindelige spørgsmål om at bidrage. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Kodning Udfordringer +## Curriculum -Alle vores kodningsudfordringer er kurateret af fællesskabet, der bringer ekspert viden fra frivillige som dig. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Du kan hjælpe med at udvide dem og gøre deres ordlyd bedre. Du kan også opdatere brugerhistorierne for at forklare konceptet bedre eller fjerne overflødige og forbedre udfordringstestene for at gøre dem mere præcist teste folks kode. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Hvis du er interesseret i at forbedre disse kodningsudfordringer, her er [hvordan man arbejder på kodningsudfordringer](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Læringsplatform +## Learning Platform -Vores læringsplatform kører på en moderne JavaScript stack. Det har forskellige komponenter, værktøjer og biblioteker, herunder men ikke begrænset til, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, og meget mere. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Bredt +Broadly, we use -- Vi har en node.js-baseret API-server. -- Et sæt React-baserede klientprogrammer. -- Et script, som vi bruger til at evaluere vores front-end projekter. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Bidrag til dette kræver en vis forståelse af API'er, ES6 Syntax, og en masse nysgerrighed. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -I bund og grund forventer vi grundlæggende kendskab til nogle af de førnævnte teknologier, værktøjer og biblioteker. Når det er sagt, er De ikke forpligtet til at være ekspert i dem for at bidrage. +If you want to help us improve our codebase... -**Hvis du ønsker at hjælpe os med at forbedre vores kodebase, kan du enten bruge Gitpod, et gratis online dev miljø** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Åbn i Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starter et klar-til-kode dev miljø til freeCodeCamp i din browser.) +Or you can... -ELLER - -**du kan [konfigurere freeCodeCamp lokalt](how-to-setup-freecodecamp-locally.md) på din maskine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Danish/moderator-handbook.md b/docs/i18n/Danish/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Danish/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
          + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Dutch/FAQ.md b/docs/i18n/Dutch/FAQ.md index 833c5b1d29..e6ef4fed0d 100644 --- a/docs/i18n/Dutch/FAQ.md +++ b/docs/i18n/Dutch/FAQ.md @@ -1,101 +1,82 @@ -### Ik ben nieuw bij GitHub en Open Source, waar moet ik beginnen? +### I am new to GitHub and Open Source. Where should I start? -Lees onze ["Hoe deel te nemen aan de Open Source Handleiding"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Het is een compresensieve bron van eerste timer vriendelijke projecten en richtsnoeren. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Kan ik het curriculum van freeCode vertalen? +### Can I translate freeCodeCamp's curriculum? -We zullen de lokalisatie-inspanningen aftrap op freeCodeCamp beginnend met de **Chinese** eerst. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We zijn van plan om het curriculum in meer talen beschikbaar te maken, maar kunnen ons nog niet aan termijnen binden. Verschillende operationele limieten, zoals personeel, actieve bijdragers en serverkosten, spelen een rol in de internationalisering (i18n) inspanningen. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Wij zijn van plan i18n te beginnen in deze talen: Arabisch, Portugees, Russisch en Spaans (in geen specifieke volgorde) nadat we het curriculum in het Chinees hebben vrijgegeven. +### How can I report a new bug? -**Waarom richt je je eerst op het Chinese curriculum?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -China is de grootste demografische regio's van ons niet-oorspronkelijke Engelse sprekende publiek. Momenteel hebben we honderdduizenden gebruikers die een oude versie van het platform gebruiken. Als we ons richten op het Chinese curriculum geven we een schatting van de logistiek die betrokken is bij het i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -We zullen ons richten op Latijns-Amerika als demografische regio voor Portugees en Spaans. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -We hebben binnen afzienbare tijd geen plannen voor i18n voor andere talen dan de bovengenoemde talen. +### How can I report a security issue? -Wij moedigen u niet aan om aan i18n aan de bovengenoemde talen te werken. We kunnen pull requests accepteren, zonder enige verwachting van tijdslijnen over implementaties. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Hoe kan ik een nieuwe bug melden? +### I am a student. Can I work on a feature for academic credits? -Als je denkt dat je een bug hebt gevonden, lees dan eerst het ["Help ik een Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) artikel en volg de instructies. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Als je er zeker van bent dat het een nieuwe bug is, ga dan door en maak een nieuw GitHub probleem. Zorg ervoor dat je zoveel mogelijk informatie toevoegt zodat we de bug kunnen reproduceren. We hebben een vooraf gedefinieerde issue template om u hierbij te helpen. +We request you to plan ahead and work on code contributions with this in mind. -Houd er rekening mee dat eventuele problemen met coderingshulp op een uitdaging zullen worden opgelost. De kwestie tracker is strikt voor kwesties in verband met de codebasis en besprekingen. Wanneer u twijfelt, moet u [hulp zoeken op het forum](https://forum.freecodecamp.org) voordat u een rapport maakt. +### What do these different labels that are tagged on issues mean? -### Hoe kan ik een veiligheidsprobleem melden? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Maak alsjeblieft geen GitHub problemen aan voor veiligheidsproblemen. Stuur in plaats daarvan een e-mail naar `security@freecodecamp.org` en we zullen het onmiddellijk onderzoeken. +### Where do I start if I want to work on an issue? -### Ik ben een student, kan ik of ons team werken aan een functie voor academische kredieten? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Zeker, zeker. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -We staan open voor alle bijdragen, hoewel Houd er rekening mee dat we ons niet kunnen vastleggen op tijdlijnen die vereist kunnen zijn aan uw hogeschool of universiteit. We ontvangen veel pull-aanvragen en code-bijdragen van vrijwilligers en we respecteren hun tijd en hun inspanningen. We zullen geen speciale aandacht kunnen besteden aan PR om voor iedereen eerlijk te zijn. +### I found a typo. Should I report an issue before I can make a pull request? -We verzoeken u om vooruit te plannen en met dit in gedachten te werken aan een functie. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Wat betekenen deze verschillende etiketten die op problemen worden gemerkt? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -De code onderhoudt [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) problemen en pull requests op basis van hun prioriteit, ernst en andere factoren. Hier vindt u [een volledige woordenlijst van hun betekenis](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Waar begin ik als ik aan een onderwerp wil werken? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Je zou [**`hulp willen zoeken`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) of [**`eerste timers moeten doorlopen`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) problemen voor een snel overzicht van waar je aan kunt werken. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`hulp gewild`** problemen zijn te grijpen, en je hoeft geen toestemming te zoeken voordat je er aan werkt. Problemen met de **`eerste timers alleen`** label zijn echter gereserveerd voor mensen die niet eerder hebben bijgedragen aan de freeCodeCamp codebase. Als deze kwesties niet duidelijk zijn over wat er gedaan moet worden, voel je dan vrij om vragen te stellen in de opmerkingen. +### I am stuck on something that is not included in this documentation. -### Ik vond een typo, moet ik een probleem melden voordat ik een pull-verzoek kan indienen? - -Voor typos en andere formuleringen kunt u pull requests direct openen zonder eerst een probleem aan te maken. Issues zijn meer voor het bespreken van grotere problemen in verband met code of structurele aspecten van het curriculum. - -Noem echter details, context etc. in het beschrijving gebied van de pull request om ons te helpen uw bijdrage te begrijpen en te bekijken, zelfs voor kleine wijzigingen. - -### Hoe krijg ik een issue aan mij toegewezen? - -We wijzen meestal geen problemen toe aan iemand anders dan lange tijd bijdragers om dubbelzinnige shows te voorkomen. In plaats daarvan volgen we het onderstaande beleid om eerlijk te zijn voor iedereen: - -1. Wij geven er de voorkeur aan dat de eerste pull-aanvraag voor elk onderwerp wordt samengevoegd. -2. In het geval van verzoeken om meerdere pull-aanvragen voor dezelfde kwestie geven we prioriteit aan de kwaliteit van de code in de pull-aanvragen. - - Hebt u tests opgenomen? - - Heb je alle usecases gehaald? - - Heb je alle tests pass gegarandeerd en je hebt lokaal bevestigd dat alles werkt? -3. Tot slot zijn wij voorstander van aanvragen voor het volgen van onze aanbevolen richtsnoeren. - - Heb je de checklist voor pull request gevolgd? - - Heb je je pull request titel goed benoemd? - -Je hebt geen toestemming nodig voor problemen die gemarkeerd zijn met `hulp gewenst` of `eerste keer alleen` zoals eerder uitgelegd. - -Volg de richtlijnen zorgvuldig en open een pull request. - -### Ik houd vast aan iets dat niet in deze documentatie is opgenomen. - -**Voel je vrij om hulp te vragen in:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We zijn erg blij je te helpen bij het bijdragen aan een van de onderwerpen waar je aan wilt werken. Voel je vrij om ons vragen te stellen over de onderwerpen die hiermee verband houden, en we zullen graag opheldering verschaffen. Zorg ervoor dat u zoekt naar uw zoekopdracht voordat u een nieuwe plaatst. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Wees beleefd en geduldig. Onze gemeenschap van vrijwilligers en moderators zijn er altijd om je door je vragen te leiden. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Extra ondersteuning:** +**Additional Assistance:** -Als je vragen hebt over de stapel, de architectuur van de codebase, voel je vrij om contact op te nemen met onze medewerkers: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Medewerkers | Bericht verzenden op forum | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | -| Mohapatra rugesj | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | +| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | | Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | | Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | -| Randelaar Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | +| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**U kunt onze ontwikkelaarstaf e-mailen op: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Dutch/_sidebar.md b/docs/i18n/Dutch/_sidebar.md index 1149f4e651..1b5bda2bdc 100644 --- a/docs/i18n/Dutch/_sidebar.md +++ b/docs/i18n/Dutch/_sidebar.md @@ -1,36 +1,39 @@ -- **Aan de slag** - - [Introductie](index 'Draag bij aan de freeCodeCamp.org Gemeenschap') - - [Veelgestelde vragen (FAQ's)](FAQ.md) -- **Code bijdrage** -- - [Stel het freeCodeCamp lokaal in](how-to-setup-freecodecamp-locally.md) - - [Open een pull-aanvraag](how-to-open-a-pull-request.md) - - [Werk aan coderingsuitdagingen](how-to-work-on-coding-challenges.md) - - [Werk aan video uitdagingen](how-to-help-with-video-challenges.md) - - [Werk aan het nieuws thema](how-to-work-on-the-news-theme.md) - - [Werk aan het thema documenten](how-to-work-on-the-docs-theme.md) -- **Optionele handleidingen** - - [Groeps uitgaande e-mails lokaal](how-to-catch-outgoing-emails-locally.md) - - [Gratis CodeCamp op WSL instellen](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Vlucht handleidingen** (voor medewerkers & Mods) - - [Moderator handboek](flight-manuals/moderator-handbook.md) - - [Antwoord sjablonen](flight-manuals/using-reply-templates.md) - - [DevOps overzicht](devops.md) - - [Werken aan servers](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Onze Gemeenschap** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Weergeef Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Dutch/devops.md b/docs/i18n/Dutch/devops.md index 3310696134..46fb8b5382 100644 --- a/docs/i18n/Dutch/devops.md +++ b/docs/i18n/Dutch/devops.md @@ -1,227 +1,708 @@ -# Ontwikkelaars Bewerkingen op freeCodeCamp.org +# DevOps Handbook -Deze handleiding zal je helpen onze infrastructuurstapel te begrijpen en hoe we onze platformen onderhouden. Hoewel deze handleiding niet over uitputtende gegevens voor alle activiteiten beschikt, kan het worden gebruikt als referentie voor uw begrip van de systemen. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Laat ons weten, als u feedback of vragen hebt, en we zullen daar graag opheldering over geven. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Hoe bouwen we, testen en inzetten we de codebase? +# Flight Manual - Code deployments -Deze repository wordt continu gebouwd, getest en geïmplementeerd in **afzonderlijke infrastructuursets (Servers, Databases, CDNs, etc.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Daarbij gaat het om drie stappen die in de rij moeten worden gevolgd: +This involves three steps to be followed in sequence: -1. Nieuwe wijzigingen (zowel fixes als functies) worden samengevoegd tot onze primaire ontwikkelingssector (`master`) via pull requests. -2. Deze wijzigingen worden uitgevoerd door een reeks geautomatiseerde tests. -3. Zodra de tests zijn uitgevoerd, brengen we de wijzigingen vrij (of wijzigen ze indien nodig) voor de inzet van onze infrastructuur. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Bouwen van de codebase - aftappende Git filialen tot afzetting. +#### Building the codebase - Mapping Git Branches to Deployments. -Typisch [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (de standaard ontwikkelingsbranch) wordt eenmaal per dag samengevoegd in de [`productiestaging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) tak en wordt vrijgegeven in een geïsoleerde infrastructuur. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Dit is een tussenliggende release voor onze ontwikkelaars en vrijwilligers. Het staat ook bekend als onze "staging" of "beta" vrijlating. +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Het is identiek aan onze live productie omgeving op `freeCodeCamp.org`, anders dan het met behulp van een aparte set databases, servers, webproxies, enz. Deze isolatie laat ons doorlopende ontwikkeling en functies in een "productie" zoals scenario, zonder de reguliere gebruikers van freeCodeCamp.org te beïnvloeden. Deze isolatie laat ons doorlopende ontwikkeling en functies in een "productie" zoals scenario, zonder de reguliere gebruikers van freeCodeCamp.org te beïnvloeden. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Zodra het ontwikkelteam [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) tevreden is met de wijzigingen op het ontwikkelingsplatform, deze wijzigingen worden om de paar dagen verplaatst naar de [`productie-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -Dit is de definitieve versie die veranderingen verplaatst naar onze productieplatforms op freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Wijzigingen testen - Integratie en Gebruikers Acceptatie Testen. +#### Testing changes - Integration and User Acceptance Testing. -We passen verschillende niveaus van integratie en acceptatie toe om de kwaliteit van de code te controleren. Al onze tests worden gedaan via software zoals [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) en [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -We hebben eenheidstests voor het testen van onze challenge oplossingen, Server API's en Client User Interfaces. Deze helpen ons om de integratie tussen verschillende componenten te testen. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> We zijn ook bezig met het schrijven van eindgebruikerstests die helpen bij het repliceren van echte wereldscenario's zoals het bijwerken van een e-mail of het bellen naar de API of derden diensten. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Samen helpen deze tests voorkomen dat problemen zich herhalen en ervoor zorgen dat we geen bug introduceren terwijl we aan een andere bug of een functie werken. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Wijzigingen implementeren - wijzigingen uitvoeren op servers. +#### Deploying Changes - Pushing changes to servers. -We hebben continu toedieningssoftware geconfigureerd om wijzigingen in onze ontwikkeling- en productieservers door te voeren. +We have configured continuous delivery software to push changes to our development and production servers. -Zodra de wijzigingen naar de beschermde release-takken worden geduwd, wordt een bouwpijplijn automatisch geactiveerd voor de branche. De bouw van pijpleidingen is verantwoordelijk voor het bouwen van artefacten en het bewaren ervan in een koude opslag voor later gebruik. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -De bouw pipeline gaat verder om een overeenkomende release pipeline te activeren als deze een succesvolle uitvoering voltooit. De release pipelines zijn verantwoordelijk voor het verzamelen van de build artefacten, ze verplaatsen naar de servers en gaan leven. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Status van builds en releases zijn [hier beschikbaar](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Een gebouw, test en inzet van de server. +## Trigger a build, test and deploy -Momenteel kunnen alleen leden van het ontwikkelingsteam naar de productiesectoren pushen. De wijzigingen in de `productie *` branches kunnen alleen landen door snel samen te voegen naar [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!NOT] In de komende dagen zullen we deze stroom verbeteren via pull-requests, voor beter beheer van toegang en transparantie. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Veranderingen doorvoeren van Staging Applicaties. +### Pushing changes to Staging Applications. -1. Configureer je afstandsbedieningen correct. +1. Configure your remotes correctly. ```sh - git afstandsbediening -v + git remote -v ``` - **Resultaten:** + **Results:** ``` - origin git@github.com:raisedadead/freeCodeCamp.git (fetch) - origin git@github.com:raisedadeadad/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) - upstream git@github.com:freeCodeCamp.git (push) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Zorg ervoor dat je `master` branch pristine is en gesynchroniseerd is met de upstream. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh - Git checkout master + git checkout master git fetch --all --prune git reset --hard upstream/master ``` -3. Controleer of de Travis CI de `master` branch doorgeeft voor upstream. +3. Check that the Travis CI is passing on the `master` branch for upstream. - De [continue integratie](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) testen moeten groen en PASSING zijn voor de `master` branch. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
          Controleer de status van Travis CI (screenshot) +
          Checking status on Travis CI (screenshot)
          - ![Controleer de bouwstatus op Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
          - Als dit mislukt moet u stoppen en de fouten onderzoeken. + If this is failing you should stop and investigate the errors. -4. Bevestig dat u de repository lokaal kunt bouwen. +4. Confirm that you are able to build the repository locally. ``` npm run clean-and-develop ``` -5. Verplaats wijzigingen van `master` naar `productie-staging` via een snelle merge +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` - Git checkout productie-staging + git checkout production-staging git merge master git push upstream ``` - > [!NOT] Je zult niet in staat zijn om pushen te forceren en als je de geschiedenis toch hebt herschreven, zullen deze commando's een fout maken. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Als ze dat wel doen, heeft u misschien iets verkeerd gedaan en moet u gewoon opnieuw beginnen. + > If they do, you may have done something incorrectly and you should just start over. -De bovenstaande stappen zullen automatisch een uitvoering op de bouw pipeline uitvoeren voor de `productie-staging` branch. Zodra het bouwwerk klaar is, worden de artefacten opgeslagen als `.zip` bestanden in koude opslag die later worden gebruikt en opgehaald. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -De release pipeline wordt automatisch geactiveerd als er een nieuw artefact beschikbaar is via de verbonden build pijplijn. Voor stagingplatforms, houdt dit proces geen handmatige goedkeuring in en de artefacten worden naar de Client CDN en API servers gepusht. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP label:Offertingen] Meestal duurt de build run ~20-25 minuten om te volgen op de release run die ~15-20 minuten duurt voor de client, en ~5-10 minuten voor de API om live beschikbaar te zijn. Van code push naar live zijn op de stagingplatforms neemt het hele proces **~35-45 min** in totaal. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Versturen wijzigingen van de Productie Applicaties. +### Pushing changes to Production Applications. -Het proces is grotendeels hetzelfde als de stagingplatforms, met een paar extra controles. Dit is alleen om ervoor te zorgen dat we niets breken op freeCodeCamp.org die honderden gebruikers op elk moment kunnen zien die het gebruiken. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| Voer deze opdrachten NIET uit, tenzij u hebt geverifieerd dat alles werkt op het staging platform. U moet geen tests tijdens staging omzeilen of overslaan voordat u verder gaat. | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Zorg ervoor dat je `productie-staging` tak priester is en gesynchroniseerd is met de upstream. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh - git checkout productie-staging + git checkout production-staging git fetch --all --prune - git reset --hard upstream/productie-staging + git reset --hard upstream/production-staging ``` -2. Verplaats wijzigingen van `productie-staging` naar `productie-current` door middel van een snelle merge +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` - Git checkout productie-huidige - git producties samenvoegen + git checkout production-current + git merge production-staging git push upstream ``` - > [!NOT] Je zult niet in staat zijn om pushen te forceren en als je de geschiedenis toch hebt herschreven, zullen deze commando's een fout maken. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Als ze dat wel doen, heeft u misschien iets verkeerd gedaan en moet u gewoon opnieuw beginnen. + > If they do, you may have done something incorrectly and you should just start over. -De bovenstaande stappen zullen automatisch een uitvoering van de bouw pipeline starten voor de `productie-huidige` branch. Zodra een build artefact klaar is, zal het een run op de release pipeline starten. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP︎ label:Estimates] Meestal duurt de build run ~20-25 minuten om te voltooien. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Extra stappen voor de actie van het personeel** +**Additional Steps for Staff Action** -Eén release run wordt geactiveerd, leden van het medewerkerteam van de ontwikkelaars ontvangen een geautomatiseerde handmatige interventie e-mail. They can either _approve_ or _reject_ the release run. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Als de veranderingen goed werken en zijn getest op het halteplatform, dan kan het worden goedgekeurd. De goedkeuring moet worden gegeven binnen 4 uur nadat de vrijlating in gang is gezet voordat deze automatisch wordt afgewezen. Een medewerker kan de release handmatig uitvoeren voor afgewezen uitvoeren of wachten op de volgende release-cyclus. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Voor medewerker: +For staff use: -| Controleer je e-mail voor een directe link of [ga naar het release-dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) nadat de build is uitgevoerd. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Zodra een van de staff leden een release goedkeurt, zal de pipeline de wijzigingen live duwen naar freeCodeCamp.org productie CDN en API servers. Ze nemen meestal ~15-20 minuten voor de client, en ~5 minuten voor de API-servers om live beschikbaar te zijn. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIPKoflabel:Estimates] De release run duurt meestal ~15-20 minuten voor elke client instantie, en ~5-10 minuten voor elke API instantie om live te zijn. Van code push naar live zijn op de productieplatforms duurt het hele proces **~90-120 min** in totaal (niet het tellen van de wachttijd voor de personeelsgoedkeuring). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Bouw, Test en Implementatiestatus +## Build, Test and Deployment Status -Hier is de huidige test, bouw en implementatie status van de codebase. +Here is the current test, build and deployment status of the codebase. -| Type | Filiaal | status | Dashboard | -|:------------------ |:------------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------------------- | -| CI tests | [`meester`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Bouw Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Ga naar de status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| CI tests | [`productie-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Bouw Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Ga naar de status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Bouw Pijplijn | [`productie-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Bouw status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Ga naar de status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Pijplijn vrijgeven | [`productie-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Ga naar de status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| CI tests | [`productie-stroom`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Bouw Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Ga naar de status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Bouw Pijplijn | [`productie-stroom`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Bouw status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Ga naar de status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Pijplijn vrijgeven | [`productie-stroom`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Ga naar de status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Vroegtijdige toegang en bèta-tests +## Early access and beta testing -We verwelkomen je om deze releases te testen in een **"openbare bèta-testing"** modus en krijg vroege toegang tot toekomstige functies op de platformen. Soms worden deze functies/wijzigingen aangeduid als **volgende, beta, staging,** enz. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Uw bijdragen via feedback en probleemrapporten zullen ons helpen bij het maken van de productieplatforms bij `freeCodeCamp. rg` meer **weerstandsvermogen**, **consistent** en **stabiel** voor iedereen. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Wij danken u voor het melden van fouten die u tegenkomt en helpen bij het verbeteren van freeCodeCamp.org. Je bent geweldig! Je bent geweldig! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Identificeren van de aankomende versie van de platforms +### Identifying the upcoming version of the platforms -Momenteel is er een publieke beta-versie beschikbaar op: +Currently a public beta testing version is available at:

          freecodecamp.dev

          -> [!NOTE] De domeinnaam is anders dan **`freeCodeCamp.org`**. Dit is opzettelijk om het indexeren van zoekmachines te voorkomen en verwarring te voorkomen voor reguliere gebruikers van het platform. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identificeren van de huidige versie van de platforms +### Identifying the current version of the platforms -**De huidige versie van het platform is altijd beschikbaar op [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -Het dev-team voegt wijzigingen samen van de `productie-staging` branch naar `productie-current` wanneer ze wijzigingen vrijgeven. De beste commit is wat je live ziet op de site. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -U kunt de exacte versie die in gebruik is door de bouw en implementatie logboeken te bezoeken die beschikbaar zijn in de statussectie. Als alternatief kun je ons ook pingen in de [bijdragers chat room](https://gitter.im/FreeCodeCamp/Contributors) voor een bevestiging. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Bekende beperkingen +### Known Limitations -Er zijn enkele bekende beperkingen en afschrijvingen bij het gebruik van de bètaversie van het platform. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### Alle gegevens / persoonlijke vooruitgang op deze bètaplatforms `zullen NIET worden opgeslagen of overgedragen aan` naar productie. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Gebruikers in de beta versie zullen een apart account hebben van de productie.** De beta versie gebruikt een fysiek gescheiden database van de productie. Dit geeft ons de mogelijkheid om onbedoeld gegevensverlies of wijzigingen te voorkomen. Het dev team kan de database leegmaken op deze bètaversie indien nodig. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Er zijn geen garanties op de uptime en betrouwbaarheid van de bèta-platforms. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - De inzet zal naar verwachting frequenter zijn en bij snelle iteraties soms meerdere keren per dag. Als gevolg hiervan zullen er soms onverwachte downtime of een onjuiste functionaliteit in de beta versie verschijnen. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Stuur geen reguliere gebruikers naar deze site als een maatstaf voor het bevestigen van een oplossing +- #### Do not send regular users to this site as a measure of confirming a fix - De beta site is en is altijd geweest om de lokale ontwikkeling en het testen ervan aan te vullen. Het is geen belofte van wat er komt, maar een glimp van waar aan gewerkt wordt. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### Onderteken pagina kan er anders uitzien dan productie +- #### Sign page may look different than production - We gebruiken een testinstantie voor freecodecamp.dev op Auth0, en hebben dus niet de mogelijkheid om een aangepast domein in te stellen. Dit zorgt ervoor dat alle callbacks en inlogpagina op een standaard domein verschijnen: `https://freecodecamp-dev.auth0.com/`. Dit heeft geen invloed op de functionaliteit zoals we die kunnen krijgen. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Problemen melden en feedback geven +## Reporting issues and leaving feedback -Open nieuwe problemen voor discussies en het melden van bugs. Je kunt ze labelen als **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** voor de triage. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Je kunt een e-mail sturen naar `dev[at]freecodecamp.org` als je vragen hebt. Zoals altijd moeten alle beveiligingskwetsbaarheden worden gemeld aan `beveiliging[at]freecodecamp.org` in plaats van de publieke tracker en het forum. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

          https://amplify.nginx.com

          +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Dutch/flight-manuals/moderator-handbook.md b/docs/i18n/Dutch/flight-manuals/moderator-handbook.md deleted file mode 100644 index 33886c581d..0000000000 --- a/docs/i18n/Dutch/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,325 +0,0 @@ -# Het officiële freeCodeCamp Moderator Handboek. - -Dit zal je helpen om verschillende plaatsen in onze gemeenschap te modereren, waaronder: - -- GitHub problemen & pull-verzoeken -- Het forum, chatrooms, Facebook groepen en andere online vergaderplaatsen -- Persoonlijke evenementen zoals studiegroepen, hackathons en conferenties - -**Alle freeCodeCamp moderators zijn globale moderators. Dat betekent dat wij u vertrouwen om toezicht te houden op al onze platforms.** - -Dit gezegd hebbende, kunt u dienen als moderator op welke plaatsen u het meest interesseert. Sommige moderators helpen gewoon op GitHub. Anderen helpen gewoon op het forum. Sommige moderators zijn overal actief. - -Wij willen dat je van moderator geniet en investeer je schaarse tijd op plaatsen die voor u interessant zijn. - -> [!NOTE] "Met grote macht komt grote verantwoordelijkheid." - Oom Ben - Oom Ben - -Als moderator is temperament belangrijker dan technische vaardigheden. - -Luister. Wees nuttig. Maak geen misbruik van uw macht. - -freeCodeCamp is een inclusieve gemeenschap en we moeten het zo houden. - -We hebben één enkele gedragscode die onze hele gemeenschap reguleert. Hoe minder regels, hoe gemakkelijker men zich kan herinneren. U kunt deze regels lezen en ze toewijzen aan het geheugen [hier](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderators hebben de mogelijkheid om problemen te sluiten en pull requests te accepteren of af te sluiten. - -Moderators hebben twee primaire verantwoordelijkheden met betrekking tot GitHub: - -1. QA'en en samenvoegen van pull requests -2. Evalueren en reageren op problemen - -## Pull Requests modereren - -Pull Requests (PR's) zijn hoe bijdragers wijzigingen verzenden naar de freeCodeCamp's repository. Het is belangrijk dat we kwaliteitsborging (QA) uitvoeren op aanvragen voor pull requests voordat we besluiten deze samen te voegen of te sluiten. - -### Soorten Pull requests - -1. **Uitdagingsinstructies bewerkingen** Dit zijn wijzigingen in de tekst van uitdagingen - de beschrijving, instructies of test tekst. Je kunt deze rechten ook bekijken op GitHub en beslissen of je ze wilt samenvoegen. We moeten hier wat voorzichtiger mee omgaan, want miljoenen mensen zullen deze tekst tegenkomen terwijl ze via het freeCodeCamp curriculum werken. Maakt de pull-aanvraag de tekst duidelijker zonder de tekst veel langer te maken? Zijn de bewerkingen relevant en niet al te pietluttiek? Vergeet niet dat ons doel is dat uitdagingen zo duidelijk en zo kort mogelijk zijn. Ze zijn niet de plek voor duistere details. Bovendien kunnen bijdragers proberen koppeling toe te voegen aan middelen aan de uitdagingen. Je kunt deze pull-aanvragen sluiten en ze met dit antwoord beantwoorden: - - > Bedankt voor je pull-aanvraag. - > - > Ik sluit dit pull-verzoek af. Voeg in plaats daarvan links en andere details toe aan het overeenkomstige handleidingartikel van de challenge. - > - > Als je denkt dat ik me vergis bij het sluiten van dit probleem, open het dan opnieuw en voeg dan verdere uitleg toe. Dank u wel, en een goede programmering. - -2. **Uitdagingscode bewerkingen** Dit zijn wijzigingen in de code in een uitdaging - de Challenge Seed, Challenge Oplossing en Test Strings. Deze pull-verzoeken moeten van GitHub worden verwijderd en op je lokale computer worden getest om er zeker van te zijn dat de challenge tests nog steeds kunnen worden uitgevoerd met de huidige oplossing, en de nieuwe code introduceert geen fouten. Sommige bijdragers kunnen proberen extra tests toe te voegen om pedantische hoekzaken te dekken. We moeten oppassen dat we de uitdaging niet te ingewikkeld maken. Deze uitdagingen en hun tests moeten zo eenvoudig en intuïtief mogelijk zijn. Los van het algoritme uitdagingen en het prep-gedeelte van het interview moeten leerlingen in staat zijn om elke uitdaging binnen ongeveer 2 minuten op te lossen. - -3. **Codebase Wijzigingen** Deze code wijzigt de functionaliteit van het freeCodeCamp platform zelf. Soms proberen bijdragers wijzigingen door te voeren zonder veel uitleg te geven, maar voor wijzigingen in de code moeten we ervoor zorgen dat de verandering echt nodig is. Dus deze pull-aanvragen moeten verwijzen naar een bestaande GitHub kwestie waarbij de redenen voor de verandering worden besproken. Dan kun je de pull-aanvraag op je computer openen en ze lokaal testen. Nadat je dit hebt gedaan, als de wijzigingen er goed uitzien, voegen ze ze nog niet samen. Je kunt reageren op het pull-verzoek dat "LGTM" zegt, en daarna @raisedadead vermelden zodat hij een laatste kijkje kan nemen. - -### Hoe pull requests samenvoegen of sluiten - -Ten eerste, wanneer je een pull-aanvraag voor QA kiest, moet je er zelf aan toewijzen. U kunt dit doen door te klikken op de "Wijs jezelf" link onder het "taak" deel in de rechterkolom van GitHub's interface. - -Afhankelijk van het type pull-verzoek is het de overeenkomstige regels die hierboven worden vermeld. - -Voordat u een pull request samenvoegt, zorg ervoor dat GitHub groene checkmarks heeft voor alles. Als er al een X is, kijk dan eerst na en ontdek hoe je ze eerst in groene vinkjes kunt laten veranderen. - -Soms zal er sprake zijn van een samenvoegingsconflict. Dit betekent dat een ander pull-verzoek een wijziging heeft aangebracht in precies hetzelfde deel van datzelfde bestand. GitHub heeft een tool om deze samenvoegconflicten recht op GitHub aan te pakken. U kunt proberen deze conflicten aan te pakken. Gebruik gewoon uw beste oordeel. De wijzigingen van de pull-aanvraag staan bovenaan, en de wijzigingen van de Master branch staan onderaan. Soms zullen er overbodige informatie zijn die kan worden verwijderd. Voordat je klaar bent, zorg dat je de `<<<<<<`verwijdert, `======`, en `>>>>>>` die Git toevoegt om conflictgebieden aan te geven. - -Als de pull-aanvraag klaar lijkt om samen te voegen (en geen goedkeuring van @raisedadead vereist), kan je deze doorgaan en samenvoegen. Zorg ervoor dat u de standaard functionaliteit "Squash and Merge" gebruikt op GitHub. Dit zal alle pull requests verpletteren in een enkele commit, wat de geschiedenis van Git veel leesbaarder maakt. - -Vervolgens moet je reageren op het pull-verzoek, waarbij je de bijdrager persoonlijk bedankt. - -Als de auteur van de pull request een "eerste keer bijdrager" is, moet je hen ook feliciteren met hun eerste samengevoegde pull request aan de repository. Je kunt naar de rechterbovenhoek van het lichaam van de PR's kijken om een eerste bijdrager te bepalen. Het zal `de eerste bijdrage` laten zien zoals hieronder wordt weergegeven: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp6.690x281](https://i.imgur.com/dTQMjGM.png) - -Als de pull request niet klaar lijkt om samen te voegen kan je beleefd antwoorden aan de auteur vertellen wat ze moeten doen om hem klaar te krijgen. Hopelijk zullen zij antwoord geven en hun pull-verzoek dichter bij elkaar brengen. - -Vaak is een pull-aanvraag duidelijk weinig inspanning. U kunt dit vaak meteen vertellen toen de bijdrager de selectievakjes in het Pull Request-sjabloon niet controleerde, of gebruikte een algemene pull request titel zoals "made changes" of "Update index. - -Er zijn ook situaties waarin de bijdrager probeert een link toe te voegen naar zijn eigen website. of voeg een bibliotheek toe die ze zelf hebben gemaakt, of heeft een lichtzinnige bewerking die niemand helpt behalve zichzelf. - -In beide gevallen moet u hun pull-aanvraag afsluiten en antwoorden met deze standaardboodschap: - -> Bedankt voor het openen van dit pull-verzoek. -> -> Dit is een standaard bericht dat we je pull-aanvraag hebben beoordeeld en hebben besloten deze niet samen te voegen. Wij zouden graag toekomstige aanvragen van u ontvangen. -> -> Dank u wel en prettige programmering. - -Als je een tweede mening nodig hebt over een pull-verzoek, ga dan door en laat je commentaar achter over het pull-verzoek. voeg dan het label "discussie" toe aan het pull-verzoek. - -## GitHub problemen modereren - -freeCodeCamp is een actief open source project. Dagelijks krijgen we nieuwe kwesties, die allemaal moeten worden getriaged en geëtiketteerd. - -### GitHub problemen - -1. **Code Help-verzoeken**, waarvoor mensen per ongeluk GitHub problemen hebben gemaakt. Als iemand om hulp vraagt, plak dan de volgende boodschap en sluit het probleem af. - - > Dank u voor het melden van deze kwestie. - > - > Dit is een standaardbericht dat u informeert dat dit probleem een verzoek om hulp lijkt te zijn. In plaats van hier om hulp te vragen, klik op de \*\*"Help"\*\* knop op de challenge op freeCodeCamp, waarmee je een vraag in het juiste deel van het forum kunt maken. Vrijwilligers op het forum reageren meestal binnen een paar uur op vragen en kunnen helpen te bepalen of er een probleem is met uw code of de challenge tests. - > - > Als de forumleden bepalen dat er niets mis is met uw code, kunt u verzoeken dit probleem te heropenen. - > - > Dank u wel en prettige programmering. - -2. **Bug or Clarification issues** Probeer de bug zelf te reproduceren als je kunt. Zo niet, vraag ze om de stappen om de bug te reproduceren en of ze screenshots hebben, video's of aanvullende details die u kunnen helpen het probleem te reproduceren. Zodra u het probleem kunt reproduceren - of ten minste kunt bevestigen dat het een legit issue is - label het `bevestigd`. Dan: - -- Als het een eenvoudige wijziging is in een bestaande uitdaging, label dan alleen als `eerste keer`, anders label als `help wil`. Gebruik andere labels als geschikt. -- Als het probleem significanter is, flag dan als `bug`.   Als er onduidelijkheid bestaat over de juiste koers in een kwestie voel je vrij om @raisedadead over het probleem te labelen en voeg vervolgens het `Discussing` label toe. - -3. **Duplicate Issues** Als een probleem hetzelfde is als een ander gerapporteerd probleem, moet het eerder gerapporteerde issue voorrang krijgen. Meld als `Duplicaat`, plak het volgende bericht dat `#XXXXX` vervangt met het issuenummer, en sluit daarna het issue af. - - > Dank u voor het melden van deze kwestie. - > - > Dit is een standaard bericht dat lijkt op een issue dat lijkt op #XXXXX, dus ik sluit het af als een dubbel. - > - > Als je denkt dat ik me vergis bij het sluiten van dit probleem, open het dan opnieuw en voeg dan verdere uitleg toe. Dank u wel en prettige programmering. - -4. **is opgelost in staging** Sommige problemen kunnen al zijn opgelost, maar er is geen GitHub probleem aan gekoppeld. Als dit het geval is, kunt u het volgende bericht plakken, het probleem sluiten en een `status toevoegen: opgelost/verzend` label: - - > Dank u voor het melden van deze kwestie. - > - > Dit is een standaardbericht dat u meedeelt dat het probleem dat u hier noemde aanwezig is in de productie. maar dat is al vastgelopen. Dit betekent dat als we de volgende keer onze bouwsector naar de productie verschuiven, dit probleem moet worden opgelost. Daarom sluit ik deze kwestie af. - > - > Als je denkt dat ik me vergis bij het sluiten van dit probleem, open het dan opnieuw en voeg dan verdere uitleg toe. Dank u wel en prettige programmering. - -### Sluiting Stal, verouderd, Inactieve Issues en Pull Requests - -- Verouderde problemen of PRs zijn die welke geen activiteit van de OP hebben gezien gedurende 21 dagen (3 weken vanaf de laatste activiteit), maar pas nadat een moderator meer informatie/wijzigingen heeft aangevraagd. Deze kunnen worden gesloten in een geautomatiseerd bot script of door de moderators zelf. - -- Activiteit is gedefinieerd als: Reacties die een update vragen op de PR en triages zoals `status: benodigd` label etc. - -- Als de OP om extra hulp of zelfs om tijd vraagt, kan het bovengenoemde worden versoepeld en na een antwoord worden herzien. In elk geval moeten de mods hun beste oordeel gebruiken om de uitstaande PR's status op te lossen. - -### Andere richtlijnen voor moderators op GitHub - -Alhoewel u schrijftoegang zult hebben tot de freeCodeCamp's repository, **moet u nooit rechtstreeks code pushen naar freeCodeCamp repositories**. Alle code moet freeCodeCamp's codebase invoeren in de vorm van een pull-aanvraag van een vork van de repository. - -U mag ook nooit uw eigen PRs accepteren. Ze moeten QA worden uitgevoerd door een andere moderator, net als bij elke andere PR. - -Als je iemand opmerkt die de [gedragscode](https://code-of-conduct.freecodecamp.org) schendt op GitHub problemen, of opent pull requests met kwaadaardige inhoud of code, e-mail dev@freecodecamp. rg met een link naar de aanstootgevende pull-aanvraag en we kunnen overwegen om ze volledig te bannen uit freeCodeCamp's GitHub organisatie. - -# Modereer het Forum - -Als Moderator houd je onze gemeenschap een leuke plek voor iedereen om te leren en hulp te krijgen. Je houdt je bezig met gemarkeerde berichten en behandelt spam, off-topic en andere ongepaste gesprekken. - -Merk op dat zodra je moderator bent op het forum, je blauwe hints van de moderator over de forumleden zal zien zoals "dit is de eerste keer dat [person] iets geplaatst heeft - laten we ze welkom heten in de gemeenschap! of "[person] is niet lang gepost - laten we hen terug verwelkomen." - -![Een blauw sms die zegt "dit is de eerste keer dat [person] gepost heeft - laten we ze welkom heten in de gemeenschap!](https://i.imgur.com/mPmVgzK.png) - -Dit zijn mogelijkheden voor u om ze te verwelkomen en ze extra speciaal te laten voelen. U weet nooit wie er in een klein stadium bij betrokken is, onze superhelper kan worden en vele andere mensen kan helpen bij hun codeerreis. Zelfs de kleinste vriendelijkheid kan leiden tot een cascade van goede daden. - -### Forum berichten verwijderen - -Forum moderators hebben de mogelijkheid om berichten van gebruikers te verwijderen. Je moet dit alleen doen voor de volgende instanties: - -1. Iemand heeft een pornografisch of grafisch gewelddadig beeld geschetst. -2. Iemand heeft een link of code gepost die kwaadaardig van aard is en andere campers die erop klikken, kan schaden. -3. Iemand heeft een conversatie overspoeld met veel spamberichten. - -### Omgaan met spam - -Stuur hen een bericht om het probleem uit te leggen voor de eerste spampost van een gebruiker, en verwijder de link of post naar behoren. Laat een notitie achter op het gebruikersprofiel met uitleg over de actie die u hebt ondernomen. Als het probleem aanhoudt, volg dan het bovenstaande proces. Sneller blokkeert de gebruiker om te posten (gebruik de stilte optie op het Admin paneel) en stuur daarna een waarschuwing met de Gedragscode. Vink het vakje aan in het privébericht dat aangeeft dat uw bericht een "formele waarschuwing" is. - -U kunt vragen stellen en incidenten rapporteren in het [staff forum sectie](https://forum.freecodecamp.com/c/staff). - -### Omgaan met off-topic gesprekken - -Berichten of topics die op de verkeerde plek lijken te staan, kunnen opnieuw gecategoriseerd worden of hernoemd worden naar wat gepast is. - -In uitzonderlijke omstandigheden kan het gepast zijn als een moderator een discussie in meerdere threads plaatst. - -Nogmaals, als je problemen of vragen hebt, maak dan een bericht met je acties in de personeelscategorie, en label een andere moderator als je wilt dat ze je modererende acties herzien. - -### minderjarige gebruikers - -Onze gebruiksvoorwaarden vereisen dat gebruikers van freeCodeCamp ten minste 13 jaar oud zijn. In het geval dat een gebruiker onthult dat hij jonger dan 13 jaar is. stuur hen het onderstaande bericht en verwijder hun forumaccount (als het verwijderen niet beschikbaar is, het opschorten van het account is voldoende). Email vervolgens [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) of [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) om ook de freeCodeCamp account van de gebruiker te verwijderen. - -```markdown -SUBJECT: Gebruikers onder de 13 hebben geen toestemming om het forum per Gebruiksvoorwaarden te gebruiken - -Het is onder onze aandacht gebracht dat u jonger bent dan 13 jaar. Per de [freeCodeCamp voorwaarden](https://www.freecodecamp.org/news/terms-of-service), moet je ten minste 13 jaar oud zijn om de site of het forum te gebruiken. We zullen zowel uw freeCodeCamp account en uw forum account verwijderen. Deze beperking houdt ons aan de wetten van de Verenigde Staten. - -Gelieve opnieuw aan te sluiten zodra u ten minste 13 jaar heeft bereikt. - -Dank u voor uw begrip. -``` - -# Facebook modereren - -Als je iets ziet dat onze [Gedragscode](https://code-of-conduct.freecodecamp.org/)lijkt te breken, moet je het onmiddellijk verwijderen. - -Soms zullen mensen dingen posten waarvan ze denken dat ze grappig zijn. Ze realiseren zich niet dat wat ze zeiden of wat ze deelden, als beledigend kan worden geïnterpreteerd. In deze gevallen moet hun post worden verwijderd, maar degene die haar gedetacheerd heeft hoeft niet per se te worden verboden. Door hun post te laten verwijderen, zullen ze hopelijk begrijpen dat wat ze hebben gepost niet gepast was. - -Maar als het een grove belediging is die redelijkerwijs niet kan worden toegeschreven aan een cultureel verschil of aan een misverstand over de Engelse taal. dan moet je sterk overwegen om het lid van de Facebook-groep te blokkeren. - -# Modereer Discord - -Dit is hoe moderators omgaan met schendingen van onze [Gedragscode](https://code-of-conduct.freecodecamp.org/) op Discord: - -1. **Zorg ervoor dat het bedoeld was om de Gedragscode te schenden.** Niet alle overtredingen van de CoC waren als zodanig bedoeld. Een nieuwe camper kan een grote hoeveelheid code posten voor hulp, zonder te weten dat dit als spam kan worden beschouwd. In deze gevallen kun je ze gewoon vragen om hun code te plakken met diensten zoals Codepen of Pastebin. - -2. **Als het kamp de Gedragscode duidelijk schendt, zal de moderator als volgt te werk gaan:** - -- Schorst de levendige kamper maar waarschuw hem niet of bedreigt ze. In plaats daarvan geef ze rustig de onderbroken rol op Discord, en stuur ze dan het volgende bericht: - -``` -Dit is een standaard bericht dat ik u tijdelijk moest onderbreken om te praten op de freeCodeCamp Discord server. - -Ik ben een moderator die namens onze open source gemeenschap optreedt. Ik kan overwegen om je schorsing op te heffen, maar je moet eerst de volgende 3 stappen zetten: - -1. Lees onze Gedragscode: https://code-of-conduct.freecodecamp.org/ -2. Bericht me terug en bevestig dat je klaar bent met lezen. 3. Leg me uit waarom je denkt dat ik je heb geschorst en waarom ik je schorsing moet opheffen. -``` - -- Rapporteer een korte samenvatting van het evenement en hoe ze daarop hebben gereageerd in het #admin kanaal. Hier is een voorbeeld van hoe een dergelijke samenvatting eruit zou kunnen zien: - -``` -Opgeschorst: _@username_ -Reden(en): _Spamming, trolling_ -vidence: _Eén of meer koppelingen naar de offend bericht(en)_ -CoC: _Verzonden_ -``` - -- Een rapport voor het opheffen van de opschorting zou er als volgt uit moeten zien: - -``` -Ik heb de schorsing van ` @username ` verwijderd. Ik heb ze de Gedragscode gestuurd. Zij hebben zich juist vandaag gerealiseerd dat zij werden geschorst en zich verontschuldigd hebben voor wat zij hebben gedaan. -``` - -- Op basis van het antwoord van de overtreders zal de moderator beslissen of hij de schorsing van het overtredende kamp wil verwijderen. Als ze respectvol en apologetisch lijken, kan de moderator de schorsing verwijderen. Wat het beleid betreft, zullen de gematigden zich tijdens dit proces beleefd gedragen, hoe slecht de misdadige kamper zich ook gedraagt. Als ze de Code niet respecteren of niet willen accepteren, moet de opschorting worden gevolgd met een verbod van de Discord server. Gebruik dezelfde samenvatting als hierboven, maar vervang "Verstoppen:" door "Verbannen:". - -3. **Hoe verbannen en/of unbannen** - -- Om iemand te verbannen, klik met de rechtermuisknop op zijn gebruikersnaam/profielfoto en selecteer "Ban ". U krijgt de optie om hun vorige berichten te verwijderen - selecteer "Niets verwijderen", aangezien de boodschappen een historisch record moeten blijven. -- Als je besluit om iemand te verbieden betekent dat dat ze niet bereid zijn zich aan onze gedragscode te houden. Daarom hoeft er zelden een verbod op een Camper te worden ingesteld. Als er echter behoefte aan is, kunt u dit doen door op de servernaam te klikken, door te kiezen voor "Serverinstellingen", kies voor "Bans", selecteer de gebruiker die je wilt unbannen, en klik op "Banaan intrekken". - -Discord Bans zijn globaal - je kunt geen gebruiker verbannen van een specifiek kanaal, alleen van de hele server. - -4. **Berichten verwijderen** moderators kunnen berichten verwijderen op Discord. Zij moeten alleen in vier zeer specifieke situaties gebruik maken van deze mogelijkheden: - -- Iemand heeft een pornografisch of grafisch gewelddadig beeld geschetst. -- Iemand heeft een link of code gepost die kwaadaardig van aard is en andere campers die erop klikken, kan schaden. -- Iemand heeft de chat overspoeld met veel spam berichten (meestal met bots) om chat volledig onbruikbaar te maken. -- Iemand heeft advertenties en/of een zelfbevorderend bericht / afbeelding (social media) geplaatst. - -In alle andere situaties - zelfs in situaties waarin de gedragscode wordt geschonden - mogen de moderators de boodschap niet verwijderen, aangezien dit een belangrijk historisch record is. Wanneer je een bericht verwijdert, zorg er dan voor dat je er eerst een screenshot van maakt! De schermafbeelding kan worden ingelogd in het #mod-log kanaal, maar voor de #activity-log is het voldoende om te zeggen dat het bewijs is verwijderd door "gevoelige inhoud". Opmerking: als het bericht materiaal bevat dat illegaal is om een schermafbeelding van te maken kopieer in plaats daarvan de berichtkoppeling - geef die link naar @raisedadead om door te sturen naar het Discord's Trust en Safety team. - -5. **Gebruik niet @all of @here** niet @all of @here onder alle omstandigheden! Elke persoon in die chat room krijgt een melding. In sommige gevallen zijn er tienduizenden mensen. Als je wilt dat mensen een aankondiging zien, kun je die op het kanaal zetten zodat iedereen ze kan lezen. - -6. **dreigen niet met het verbieden of opschorten** Als een kamper de gedragscode schendt dreigen ze niet te verbieden of op te schorten en waarschuwt ze ook niet in het openbaar. Praat met hen in plaats daarvan privé, of stuur hen een DM en geef een opschorting (per bovengenoemde protocol). Niemand anders in dat kanaal hoeft te weten dat u de persoon hebt verbannen / opgeschort - campers kunnen de samenvatting in het #activity-log kanaal bekijken als ze die informatie willen behouden. Als een overtreding duidelijk onbedoeld was en geen opschorting of privégesprek rechtvaardigt, maak de kwaadaardige camper op de hoogte van zijn of haar acties zonder het als waarschuwing te laten overkomen. Bijvoorbeeld: - -- Camper een prikbord met code om hulp te vragen - - Moderator: @username Gebruik Codepen of Pastebin bij het plaatsen van grote hoeveelheden code. - -- Of als je echt moet uitleggen waarom: - - Moderator: @username Gebruik Codepen of Pastebin bij het plaatsen van grote hoeveelheden code omdat het de chat voor iedereen verstoort en als spamming kan worden beschouwd volgens onze gedragscode. - -- Voor milde en onopzettelijke schendingen van de gedragscode - - Moderator: Dit is een vriendelijke herinnering voor iedereen om de gedragscode te volgen: https://code-of-conduct.freecodecamp.org/ - -7. **Niet schromen om moderator te zijn** Zie jezelf niet als hierboven de gemeenschap. U bent de community. En de gemeenschap vertrouwt je op het beschermen van iets zeldzaam dat we allemaal delen - een _welkome_ plaats voor nieuwe ontwikkelaars. Als je bang bent om een moderator te zijn, kunnen mensen zich ongemakkelijk voelen om je heen op dezelfde manier als mensen zich ongemakkelijk kunnen voelen rond een politieagent, zelfs als ze niets verkeerd doen. Dat is gewoon menselijk van aard. - -8. **Ontmoet andere moderators** Als je het niet eens bent met de actie van een moderator praat met hen privé of breng het op in het #mod-chatkanaal. Overschrijft nooit een ban en spreekt nooit de andere moderator(s) publiekelijk tegen. Neem in plaats daarvan een koelbloedige discussie in het gekletter en overtuig de moderator ervan dat hij zelf zijn verbod moet omkeren of zijn standpunt moet wijzigen. Vergeet niet dat we allemaal in hetzelfde team zitten. We willen de rol van de moderators waarmaken en een gemeenschappelijk front vormen. - -9. **Praat met andere moderators** We hebben alleen een ruimte voor moderators. Gebruik het! Als je je ongemakkelijk voelt met het omgaan met een bepaalde situatie, vraag dan andere moderators om hulp. Als u denkt dat er iets besproken moet worden, moet u dat doen. Je maakt deel uit van het team en wij waarderen de invoer van elk teamlid! Zelfs als je het totaal oneens bent met iets in deze richtlijnen of de gedragscode! - -10. **Tijdelijk inactief** Als je niet actief zal zijn als moderator voor een tijdje door vakantie ziekte of welke andere reden dan ook, zorg ervoor dat je de anderen op de hoogte houdt in het #mod-chatkanaal. Dit is dus zo dat we weten of we erop kunnen rekenen dat u regelmatig in de server actief bent of niet. - -# Hoe moderator worden - -Als je mensen in de gemeenschap in de loop der tijd consequent helpt, zal ons Moderator Team uiteindelijk aandacht krijgen, en een van hen zal je noemen als een mogelijke moderator voor [onze staf](https://forum.freecodecamp.org/g/Team). Er zijn geen snelkoppelingen om moderator te worden. - -Als je goedgekeurd bent, voegen we je toe aan onze Moderator Teams op [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTE] > **Voor GitHub:** Nadat u bent geaccepteerd als moderator, ontvangt u een uitnodiging voor de repository van Github. Je moet naar [freeCodeCamp GitHub Organisation](https://github.com/orgs/freeCodeCamp/invitation) gaan om de uitnodiging te kunnen accepteren. Dit is vereist voor ons om je schrijfrechten te kunnen geven op enkele van onze repositories. - -# Hoe we inactieve moderators stoppen - -Houd er rekening mee dat we vaak mods verwijderen waarvan we denken dat ze inactief zijn. Wanneer we dit doen, sturen we de volgende boodschap: - -> Dit is een standaard bericht dat je hiervan op de hoogte stelt, Aangezien je de laatste tijd geen actieve moderator bent geweest, verwijderen we je uit ons Moderator team. Wij waarderen uw hulp in het verleden ten zeerste. - -> Als je denkt dat we dit ten onrechte hebben gedaan, of als je er klaar voor bent om terug te komen en er meer bij te dragen, antwoord gewoon op dit bericht dat mij laat weten. - -# Hoe de werkruimte van onze bijdragers werkt - -Iedereen is welkom in de [Bijdragers kamer in onze Discord](https://discord.gg/KVUmVXA). Het is de aangewezen chat room voor moderators en andere kampers die op allerlei manieren bijdragen aan onze gemeenschap. inclusief via studiegroepen. - -We gaan ervan uit dat bijdragers alles in deze kamer zullen lezen dat ze direct noemt met een `@username`. Al het andere is optioneel. Maar voel je vrij om alles te lezen wat daar post is en om interactie. - -# Omgaan met verzoeken - -U kunt benaderd worden door organisaties die op de een of andere manier willen samenwerken met freeCodeCamp. Als je beseft dat dit is wat ze willen, stop dan met te praten met hen en vertel ze om quincy@freecodecamp.org te e-mailen. Hij krijgt altijd voorstellen als deze en is in de beste positie om te beoordelen of een dergelijke relatie het waard is voor onze gemeenschap (en dat gebeurt zelden ook). - -# Omgaan met (geestelijke) gezondheidsonderzoeken - -Je kunt situaties tegenkomen waarin gebruikers medisch advies zoeken of zich bezighouden met psychische gezondheidsproblemen en op zoek zijn naar ondersteuning. Politiek gezien zou u moeten vermijden om over deze zaken privé te praten. Mocht de situatie op een gegeven moment teruggaan naar fCC, dan willen we de gesprek(sen) in de notulen laten opnemen. Maak het duidelijk dat wij geen medische professionals zijn en dat u de gebruiker aanmoedigt om professionele hulp te vinden. Hoe moeilijk het soms ook kan zijn, vermijd andere tips of adviezen te geven dan de gebruiker te wijzen in de richting van professionele hulp! - -Als dit gebeurt op Discord: breek de gebruiker op. Dit is niet om hen te bestraffen! Het schorsen van een gebruiker zal een privékanaal aanmaken dat alleen toegankelijk is voor de gebruiker en het team. Dit zal zowel de gebruiker als fCC op verschillende manieren ten goede komen: - -- De gebruiker is gegarandeerd wat privacy -- Openbare chat is niet langer onderbroken -- Andere teamleden kunnen zich inlaten, mocht u zich ongemakkelijk voelen om de situatie zelf aan te pakken - -> [!NOT] Een gebruiker die een gebruiker blokkeert geeft hem automatisch een bericht over het lezen van onze gedragscode. Zorg ervoor dat je de gebruiker informeert dat je hem hebt geschorst om hem privacy te geven en dat hij niet wordt gestraft. Dat is heel belangrijk! We willen absoluut vermijden om gebruikers het idee te geven dat ze gestraft worden voor het bereiken van hulp op je manier! - -Als u denkt dat de gebruiker in staat is om opnieuw deel te nemen aan de community, klik dan met de rechtermuisknop op het privékanaal en kopieer het ID. Plaats het volgende bericht in het #mod-log: - -> Referentie medisch advies: - -Daarna kunt u de opschortingen van de gebruiker verwijderen, zoals u normaal doet. - -Nuttige URL's: - -http://www.zelfmoord.org/internationaal-zelfmoord-hotlines.html - -# Een opmerking over de vrijheid van meningsuiting - -Soms zullen mensen iets beledigend of opruiend verdedigen dat ze als "vrije meningsuiting" hebben betiteld. - -Deze XKCD-comic vat perfect de gedachten van de meeste gemeenschappen over de vrijheid van meningsuiting samen. Dus als iemand iets verdedigt dat hij als "vrije meningsuiting" zegt, voel je vrij om het naar hem te sturen. - -
          - -Bedankt voor het lezen van dit en bedankt voor het helpen van de ontwikkelaargemeenschap! diff --git a/docs/i18n/Dutch/flight-manuals/using-reply-templates.md b/docs/i18n/Dutch/flight-manuals/using-reply-templates.md deleted file mode 100644 index 9ee37354f1..0000000000 --- a/docs/i18n/Dutch/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,128 +0,0 @@ -# Antwoord sjablonen gebruiken - -Dit zijn enkele van de standaard antwoordsjablonen die u kunt gebruiken tijdens het bekijken van pull requests en triaging problemen. - -> U kunt uw eigen antwoorden maken met GitHub's ingebouwde [**Opgeslagen antwoorden**](https://github.com/settings/replies/) functie of gebruik de onderstaande antwoorden. - -### Dank u wel - -```markdown -Bedankt voor je bijdrage aan de pagina! 👍 -We accepteren deze wijzigingen graag en kijken uit naar toekomstige bijdragen. 🎉 -``` - -### Bedankt en gefeliciteerd - -> Voor het bedanken en aanmoedigen van de eerste bijdragers. - -```markdown -Hallo @username. Gefeliciteerd met je eerste pull request (PR)! 🎉 - -Bedankt voor je bijdrage aan de pagina! 👍 -We accepteren deze wijzigingen graag en kijken uit naar toekomstige bijdragen. 📝 -``` - -### Bouw Fout - -```markdown -Hey @username - -We zouden graag je wijzigingen kunnen samenvoegen, maar het lijkt erop dat er een fout is met de Travis CI build. ⚠️ - -Zodra je deze problemen hebt opgelost, kunnen we je PR beoordelen en samenvoegen. 😊 - ---- - -> Voel je vrij om te verwijzen naar de [Stijlgids voor het schrijven van artikelen](https://github. om/freeCodeCamp/freeCodeCamp#artikeltitel) voor deze repo bij het correct opmaken van een artikel, zodat uw Travis CI passen bouwen. ✅ -> -> Ook is het een goede praktijk op GitHub om een korte beschrijving van jouw wijzigingen te schrijven bij het maken van een PR. 📝 -``` - -### Synchroniseren van Fork - -> Wanneer PR niet up-to-date is met de `master` branch. - -``````markdown -Hey @username - -We zouden graag je wijzigingen kunnen samenvoegen, maar het lijkt erop dat er een fout is met de Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: geen directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -Deze specifieke fout werd niet veroorzaakt door je bestand maar was een oude fout veroorzaakt door het samenvoegen van onjuiste code naar het `master` branch. Sindsdien is het opgelost. - -Om het bouwwerk te passeren, moet u de laatste wijzigingen synchroniseren van de `master` tak van het `freeCodeCamp/freeCodeCamp` repo. - -Met behulp van de opdrachtlijn kunt u dit doen in drie eenvoudige stappen: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -Als u een GUI gebruikt, kunt u gewoon `een nieuwe afstandsbediening toevoegen...` en de link `git://github.com/freeCodeCamp/freeCodeCamp.git` van hierboven gebruiken. - -Zodra je je vork synchroniseert en de versie passeert, kunnen we je PR beoordelen en samenvoegen. 😊 - ---- - -> Refereer naar het [Synchroniseren van een Fork](https://help.github.com/articles/syncing-a-fork/) artikel op GitHub voor meer inzicht in hoe je je fork up-to-date kunt houden met de upstream-repository. 🔄 -> -> Het is ook een goede praktijk op GitHub om een korte beschrijving van jouw wijzigingen te schrijven bij het maken van een PR. 📝 -`````` - -### Conflicten samenvoegen - -> Als PR conflicten heeft die moeten worden opgelost.1 - -```markdown -Hey @username - -We zouden het leuk vinden om uw wijzigingen samen te voegen, maar het lijkt erop dat u enkele samenvoegconflicten heeft. - -⚠️ - -Zodra je deze conflicten hebt opgelost, kunnen we je PR beoordelen en samenvoegen. 😊 - ---- - -> Als je niet bekend bent met het proces van samenvoegconflicten voel je vrij om te kijken over de GitHub's gids over ["Een samenvoegconflict oplossen"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> Het is ook een goede praktijk op GitHub om een korte beschrijving van jouw wijzigingen te schrijven bij het maken van een PR. 📝 -`````` -1 Als een eerste bijdrager een samenvoegconflict heeft, zullen onderhouders het conflict voor hen oplossen. - -### Duplicate - -> Wanneer PR repetitief of een duplicaat is. - -```markdown -Hey @username - -Het lijkt erop dat vergelijkbare wijzigingen al zijn geaccepteerd voor dit artikel dat je aan het bewerken bent, sorry daarvoor. 😓 - -Als je denkt dat je meer toe te voegen hebt, open dan gerust een nieuwe PR. - -Nogmaals bedankt! 😊 - ---- - -> Als je vragen hebt, neem dan contact op met [Gitter](https://gitter.im/FreeCodeCamp/Contributors) of door hieronder commentaar te geven. 💬 -``` - -### Sluiten ongeldige pull requests - -> Wanneer PR ongeldig is. - -```markdown -Hey @username - -Je hebt nog geen inhoud toegevoegd, we sluiten deze PR en markeren als 'ongeldig'. 😓 - -Voel je vrij om een andere PR te openen! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Dutch/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Dutch/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 6423da7871..0000000000 --- a/docs/i18n/Dutch/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,476 +0,0 @@ -# Flight Manual for working on Virtual Machines - -Als lid van het personeel of het desv-team u heeft mogelijk toegang gekregen tot onze cloud service providers zoals Azure, Digital Ocean, etc. - -Hier zijn enkele handige commando's die je kunt gebruiken om te werken op de virtuele Machines (VM), bijvoorbeeld het uitvoeren van onderhoudsupdates of het doen van algemene huizenhouders. - -# Get a list of the VMs - -> [!NOT] Hoewel u misschien al SSH toegang hebt tot de VM's, dat alleen zal u niet toestaan VM's te vermelden, tenzij u ook toegang tot de cloud-portalen wordt verleend. - -## Azure - -Installeer Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Installeer Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authenticatie en context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. Dit zorgt ervoor dat de virtuele machine wordt aangepast met de nieuwste beveiligingselementen. - -> [!WARNING] Before you run these commands: -> -> - Zorg ervoor dat het VM volledig gereserveerd is en dat er geen post-install stappen worden uitgevoerd. -> - Als u pakketten bijwerkt met een VM die al een applicatie aanbiedt, zorg er dan voor dat de app is gestopt of opgeslagen. Pakket updates leiden netwerkbandbreedte, geheugen en/of CPU-gebruikspikes tot storingen in lopende applicaties. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We draaien op load balanced (Azure Load Balancer) instanties voor onze web servers. Deze servers draaien NGINX die een reverse proxy maakt van al het verkeer tot freeCodeCamp.org van verschillende applicaties die op eigen infrastructuren draaien. - -De NGINX configuratie is beschikbaar op [deze repositorie](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH en brengen wijzigingen aan waar nodig voor de specifieke instanties. - -Als je de cloud-init configuratie niet hebt gebruikt, gebruik dan eerder de onderstaande voor handmatige setup van NGINX en foutpagina's: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Ontvang de Cloudflare oorsprongcertificaten vanuit de beveiligde opslag en installeer op vereiste locaties. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. Mogelijk moet je ook de VM's toevoegen om de saldo backend pool te laden indien nodig. - -## Instanties (onderhouden) bijwerken - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

          https://amplify.nginx.com

          -## Updating Instances (Maintenance) - -Configuratiewijzigingen in onze NGINX-instanties worden onderhouden op GitHub, deze moeten worden geïmplementeerd op elke instantie zoals zij: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test en herlaad de configuratie [met Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Instanties (onderhouden) bijwerken - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. Het kan een rollende update zijn of een handmatige update. Het later is essentieel bij het veranderen van afhankelijkheden of het toevoegen van enviroment variabelen. - -> [!DANGER] De geautomatiseerde pipelines behandelen afhankelijkheidsupdates niet op het minuut. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. Je zou deze commando's niet moeten uitvoeren. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, this will be updated with artefacten from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - ```console - echo "server-c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary. h - pm2 verwijder klant primaire - pm2 start . client-start-primary.sh --name client-primary - echo "server-c . /../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary. h - pm2 verwijder client-secundaire - pm2 start ./client-start-secondary.sh --name client-secundaire -``` - -## Instanties (onderhouden) bijwerken - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. Het kan een rollende update zijn of een handmatige update. Het later is essentieel bij het veranderen van afhankelijkheden of het toevoegen van enviroment variabelen. - -> [!DANGER] De geautomatiseerde pipelines behandelen afhankelijkheidsupdates niet op het minuut. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. Je zou deze commando's niet moeten uitvoeren. These are here for documentation. diff --git a/docs/i18n/Dutch/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Dutch/how-to-catch-outgoing-emails-locally.md index 97ef640ddc..397ea3382a 100644 --- a/docs/i18n/Dutch/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Dutch/how-to-catch-outgoing-emails-locally.md @@ -1,75 +1,75 @@ -> **Opmerking:** Dit is een **optionele** stap en is alleen verplicht wanneer je werkt met e-mail workflows +> **Note:** This is an **optional** step and is required only when working with email workflows -## Introductie +## Introduction -Sommige e-mailworkflows, zoals het bijwerken van e-mail van een gebruiker, vereist de back-end api-server om uitgaande e-mails te verzenden. Een alternatief voor het gebruik van een e-mailprovider voor het verzenden van actuele e-mailberichten, Mailhog is een ontwikkelaarshulpmiddel voor het testen van e-mail dat de e-mailberichten zal halen die verzonden worden door uw freeCodeCamp instantie. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Installeren MailHog +## Installing MailHog -MailHog kan worden geïnstalleerd op macOS, Windows en Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Introductie](#introduction) -- [Installeren MailHog](#installing-mailhog) - - [Installeren MailHog op macOS](#installing-mailhog-on-macos) - - [Installeren MailHog op Windows](#installing-mailhog-on-windows) - - [Installeren MailHog op Linux](#installing-mailhog-on-linux) -- [Gebruik MailHog](#using-mailhog) -- [Nuttige links](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Installeren MailHog op macOS +### Installing MailHog on macOS -Installeer MailHog op macOS met [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash brew install mailhog brew services start mailhog ``` -De bovenstaande commando's zullen een mailhog-service op de achtergrond starten. +The above commands will start a mailhog service in the background. -Wanneer de installatie is voltooid, kunt u [starten met MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Installeren MailHog op Windows +### Installing MailHog on Windows -Download de laatste versie van MailHog van [MailHog officiële repository](https://github.com/mailhog/MailHog/releases). Zoek en klik op de link voor uw Windows-versie (32 of 64 bit) en een .exe-bestand zal worden gedownload naar uw computer. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Klik als de download is voltooid, om het bestand te openen. Een Windows firewall melding kan verschijnen, om toestemming te vragen voor MailHog. Een standaard Windows opdrachtregelprompt opent waar MailHog draait zodra toegang tot de firewall is verleend. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Sluit MailHog door het command prompt venster te sluiten. Om MailHog opnieuw te starten, klik op het Uitvoerbare MailHog (. xe) bestand dat eerst werd gedownload - het is niet nodig om een nieuwe MailHog installatiebestand te downloaden. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Start [met MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Installeren MailHog op Linux +### Installing MailHog on Linux -Installeer eerst [Ga](https://golang.org). +First, install [Go](https://golang.org). -Voer de volgende opdrachten uit om GO te installeren op op Debiangebaseerde systemen zoals Ubuntu en Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Voer de volgende opdrachten uit om GO te installeren op op RPMgebaseerde systemen zoals CentOS, Fedora, Rode Hoed Linux, etc. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Je kunt ook de volgende commando's uitvoeren om GO te installeren. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Stel nu het pad in om te gaan met de volgende commando's. +Now set the path for Go with the following commands. ```bash -echo "export GOPATH=$HOME/go" >> ~/.profiel -echo 'export PATH=$PATH:/usr/local/bin:$GOPATH/bin' >> ~/.profiel -bron ~/.profiel +echo "export GOPATH=$HOME/go" >> ~/.profile +echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile +source ~/.profile ``` -Ten slotte voer de onderstaande commando's in om MailHog te installeren en uitvoeren. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Start [met MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Gebruik MailHog +## Using MailHog -Open een nieuw browsertabblad of venster en navigeer naar [http://localhost:8025](http://localhost:8025) om uw MailHog inbox te openen wanneer de MailHog installatie is voltooid en MailHog wordt uitgevoerd. Het postvak in zal vergelijkbaar zijn met de onderstaande schermafbeelding. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![MailHog Schermafbeelding 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -E-mails verzonden door uw freeCodeCamp installatie zullen hieronder verschijnen +Emails sent by your freeCodeCamp installation will appear as below -![MailHog Schermafbeelding 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -Twee tabbladen waarmee u platte tekst of broninhoud kunt bekijken zijn beschikbaar wanneer u een bepaalde e-mail opent. Zorg ervoor dat het tabblad platte tekst als hieronder is geselecteerd. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![MailHog Schermafbeelding 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Alle links in de e-mail moeten klikbaar zijn en naar hun URL worden doorgestuurd. +All links in the email should be clickable and resolve to their URL. -## Nuttige links +## Useful Links -- Bekijk de [MailHog](https://github.com/mailhog/MailHog) repository voor verdere informatie gerelateerd aan MailHog. Extra informatie is ook beschikbaar met betrekking tot aangepaste MailHog configuraties. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Dutch/how-to-help-with-video-challenges.md b/docs/i18n/Dutch/how-to-help-with-video-challenges.md index ae63bb85b4..0724aaef02 100644 --- a/docs/i18n/Dutch/how-to-help-with-video-challenges.md +++ b/docs/i18n/Dutch/how-to-help-with-video-challenges.md @@ -1,44 +1,44 @@ -# Hoe te helpen met video-uitdagingen +# How to help with video challenges -Video-uitdagingen zijn een nieuw soort uitdaging in het freeCodeCamp curriculum. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -Een video-uitdaging is een klein deel van een volledige video-cursus over een bepaald onderwerp. Een video-uitdagingspagina bevat een YouTube-video. Elke uitdagingspagina heeft een enkele meerkeuze met betrekking tot de video. Een gebruiker moet de vraag correct beantwoorden voordat hij op de volgende video-uitdaging in de cursus. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -De video-uitdagingspagina's worden gemaakt door leden van het freeCodeCamp team. YouTube video's worden ook geüpload door leden van het freeCodeCamp team. Veel van de videouitdagingen hebben daar nog geen vragen over. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Je kunt helpen door meerdere keuzevragen te maken met betrekking tot videosecties en de vragen toe te voegen aan de markdown bestanden voor de video-uitdagingen. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Uitdaging sjabloon +## Challenge Template -Hieronder is een sjabloon van de challenge markdown bestanden. +Below is a template of what the challenge markdown files look like. ````md --- -id: Unieke identificatie (alfanumeriek), MongoDB_id) -titel: Challenge titel +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 11 -videoId: 'YouTube videoId voor video challenge' +videoId: 'YouTube videoId for video challenge' --- -## Beschrijving +## Description
          -Een optionele beschrijving met handige informatie over de video. +An optional description with helpful information related to the video.
          -## Testen +## Tests
          ```yml -vraag: - tekst: 'Vraag' - antwoorden: - - 'Antwoord één' - - 'Antwoord twe' - - 'Antwoord drie' - oplossing: 3 +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
          @@ -57,116 +57,116 @@ You can find the markdown files for video challenges at the following locations Pick a challenge markdown file from the options above. -### Skim via de video die gekoppeld is aan de uitdaging en maak een mutiple choice vraag +### Skim through the video associated with the challenge and create a mutiple choice question -Vind eerst de videoId. +First, find the videoId. -In de volgende code van de header van een video challenge markdown bestand is de videoId bijvoorbeeld "nVAaxZ34khk". Op GitHub moet de informatie in een tabelformaat worden geladen. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d titel: Data analyse Voorbeeld A challengeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -Ga vervolgens naar de YouTube-video met die videoId. De url voor de video zal zijn: -https://www.youtube. om/watch?v=[videoId] (voeg videoId toe aan de URL zonder vierkante hakens) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -In het bovenstaande voorbeeld is de URL https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim de YouTube-video met die videoId en denk aan een meerkeuze op basis van de inhoud van de video. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Voeg de vraag toe aan het markdown bestand +### Add the question to the markdown file -Je kunt de vraag lokaal of rechtstreeks toevoegen via de GitHub interface. Om de vraag lokaal toe te voegen, moet je [freeCodeCamp lokaal instellen](how-to-setup-freecodecamp-locally.md). Je kunt het bestand ook vinden op GitHub en op de knop bewerken om de vraag rechts in je browser toe te voegen. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Als een vraag nog niet is toegevoegd aan een bepaalde video uitdaging, het zal de volgende standaardvraag bevatten: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -vraag: - tekst - text: ² - Vraag - antwoord: - - - één - - ľ - twee - - gha - 3 - oplossing: 3 +question: + text: | + Question + answers: + - | + one + - | + two + - | + three + solution: 3 ``` -Werk het woord "Vraag" bij met uw vraag. Werk de "één", "twee", en "drie" bij met de mogelijke antwoorden. Zorg ervoor dat het oplossingsnummer wordt bijgewerkt waarmee het antwoord correct is. U kunt meer mogelijke antwoorden toevoegen volgens dezelfde indeling De vraag en antwoorden kunnen worden omringd met aanhalingstekens. De vraag en antwoorden kunnen worden omringd met aanhalingstekens. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### Gebruik markdown om je vraag te formatteren +#### Use markdown to format your question -De tekst in de vraag wordt als markdown geïnterpreteerd. De eenvoudigste manier om ervoor te zorgen dat het correct is opgemaakt is om de vraag te beginnen met `tekst: Dail`, zoals dit: +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -vraag: - text: ² - Vraag +question: + text: | + Question ``` -Vervolgens moet je ervoor zorgen dat je vraag zich op een nieuwe lijn bevindt en één niveau meer heeft ingesprongen dan `tekst : 000000`. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -Dezelfde benadering kan worden gebruikt voor de antwoorden, dus de hele vraag wordt +The same approach can be used for the answers, so the entire question becomes ```yml -vraag: - tekst: ² - Vraag - antwoordt op: - - - Eerste antwoord - - 2 - 2 - Tweede - - ² - Derde - oplossing: 2 +question: + text: | + Question + answers: + - | + First answer + - | + Second + - | + Third + solution: 2 ``` -Zorg ervoor dat elk antwoord plausibel is, maar er is maar één juist antwoord. +Make sure each answer is plausible but there is only one correct answer. -#### Gebruik van HTML +#### Use of HTML -Vragen en antwoorden kunnen bepaalde HTML-tags bevatten, zoals `
          ` voor een nieuwe regel. HTML-tags moeten spaarzaam worden gebruikt wanneer vragen niet zonder ze kunnen worden uitgedrukt. +Questions and answers can contain certain HTML tags like `
          ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Vraag voorbeelden +### Question examples -#### Voorbeelden zonder HTML +#### Examples without HTML ````yml -vraag: - tekst: × - Wat logt deze JavaScript-code in de console? +question: + text: | + What does this JavaScript code log to the console? ```js - console.log('hallo wereld'); + console.log('hello world'); ```` - Selecteer een antwoord! - antwoorden: - - Februari hallo *wereld* - - Februari **hallo** wereld - - ・ hallo wereld oplossing: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` -``````yml -vraag: - text: × - Wat zal worden afgedrukt na het uitvoeren van deze code: +````yml +question: + text: | + What will print out after running this code: ```py - breedte = 15 - hoogte = 12. print(hoogte/3) + width = 15 + height = 12.0 + print(height/3) ```` - antwoorden: + answers: - | 39 - | 4 - - ¦ 4.0 - - ¦ 5.0 - - ® 5 oplossing: 3 + - | 4.0 + - | 5.0 + - | 5 solution: 3 ```` #### Example with HTML @@ -190,10 +190,10 @@ question: solution: 3 ```` -Het laatste voorbeeld laat zien dat HTML kan worden gebruikt, maar dat het niet zo leesbaar is als de versie zonder HTML-versie. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Voor meer voorbeelden, kunt u de markdown bestanden bekijken voor de volgende video cursus. Alle uitdagingen hebben al vragen: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Open een pull-aanvraag +## Open a pull request -Na het aanmaken van een of meer vragen, kunt u de wijzigingen doorvoeren in een nieuwe branch en [open een pull-aanvraag](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Dutch/how-to-open-a-pull-request.md b/docs/i18n/Dutch/how-to-open-a-pull-request.md index 0cdb23597d..2729cd6237 100644 --- a/docs/i18n/Dutch/how-to-open-a-pull-request.md +++ b/docs/i18n/Dutch/how-to-open-a-pull-request.md @@ -1,164 +1,164 @@ -# Hoe open ik een pull-aanvraag (PR) +# How to open a Pull Request (PR) -Een pull-aanvraag stelt u in staat om wijzigingen van uw fork op GitHub naar freeCodeCamp.org te sturen. Zodra je klaar bent om wijzigingen aan te brengen in de code, of codeer uitdagingen moet je deze richtlijnen volgen om een PR, te sturen. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Maak een goede pr-titel klaar +## Prepare a good PR title -We raden aan [conventionele titel en berichten](https://www.conventionalcommits.org/) te gebruiken voor commits en pull request. De conventie heeft de volgende indeling: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([optionele scope(s)]): ` +> `([optional scope(s)]): ` > -> Bijvoorbeeld: +> For example: > -> `fix(learn): testen voor de doe...terwijl lusuitdaging` +> `fix(learn): tests for the do...while loop challenge` -Bij het openen van een pull-aanvraag (PR), kunt u onderstaande gebruiken om het type, toepassingsgebied (optioneel) en beschrijving te bepalen. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**Type** +**Type:** -| Type | Wanneer te selecteren | -|:---------- |:------------------------------------------------------------------------------- | -| herstellen | Gewijzigde of verbeterde functionaliteit, tests, verbiage van een les, etc. | -| tarief | Alleen als je nieuwe functionaliteit, testen etc. toevoegt. | -| hersenen | Wijzigingen die niet gerelateerd zijn aan code, tests of het delen van een les. | -| documenten | Wijzigingen in de map `/docs` of de bijdragende richtlijnen, etc. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Bereik:** +**Scope:** -U kunt een scope selecteren uit [deze lijst van labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Omschrijving:** +**Description:** -Houd het kort (minder dan 30 tekens) en eenvoudig, u kunt meer informatie toevoegen in het pr-beschrijvingsvak en commentaar. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Enkele voorbeelden van goede PRs titels zijn: +Some examples of good PRs titles would be: -- `fix(a11y): Verbeterd contrast in zoekbalk` -- `functie: voeg meer tests toe aan html en css challenges` -- `fix(api,client): voorkomen CORS-fouten bij formulier inzending` -- `docs(i18n): Chinese vertaling van lokale instellingen` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Voorstellen van een pull-aanvraag +## Proposing a Pull Request -1. Zodra de bewerkingen zijn verbonden, wordt je gevraagd een pull-aanvraag te maken op je forks GitHub pagina. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Afbeelding - Vergelijk pull request prompt op GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Standaard moeten alle pull requests tegen de hoofdrepo, `master` branch. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Zorg ervoor dat uw Basis Fork is ingesteld op freeCodeCamp/freeCodeCamp bij het verhogen van een Pull Request. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Afbeelding - Vergelijk vorken bij het maken van een pull-aanvraag](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Stuur de pull-aanvraag van uw filiaal naar het freeCodeCamp's `master` branch. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. In het lichaam van uw PR geeft u een meer gedetailleerde samenvatting van de wijzigingen die u hebt aangebracht en waarom. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Je wordt gepresenteerd met een pull request sjabloon. Dit is een checklist die je had moeten volgen voordat je de pull-aanvraag opent. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Vul de gegevens in zoals je wilt. Deze informatie wordt herzien en de beoordelaars beslissen of je pull-aanvraag wordt geaccepteerd of niet. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Als de PR bedoeld is om een bestaande GitHub Issue aan te pakken, dan, aan het einde van de omschrijvingsinstantie van uw PR, gebruik het sleutelwoord _Sluit_ met het issue nummer [automatisch sluiten als de PR wordt geaccepteerd en samengevoegd](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Voorbeeld: `Gesloten #123` sluiten issue 123 + > Example: `Closes #123` will close issue 123 -5. Geeft aan of u een lokale kopie van de site heeft getest of niet. +5. Indicate if you have tested on a local copy of the site or not. - Dit is van groot belang als het gaat om wijzigingen die niet alleen de tekst bewerken, zoals documentatie of een challenge omschrijving. Voorbeelden van wijzigingen die lokale tests vereisen zijn JavaScript, CSS of HTML die de functionaliteit of lay-out van een pagina kunnen wijzigen. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Feedback over pull requests +## Feedback on pull requests -> Gefeliciteerd! :tada: voor het maken van een PR en hartelijk dank voor het nemen van de tijd om bij te dragen. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Onze moderators zullen nu een kijkje nemen en je feedback geven. Wees alstublieft geduldig met de medemoderators en respecteer hun tijd. Alle pull-aanvragen worden te zijner tijd herzien. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Als u hulp nodig heeft, bespreek dan in de [chat room](https://gitter.im/FreeCodeCamp/Contributors)van medewerkers, wij helpen u graag. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Als u meer pull requests wilt bijdragen, We raden u aan om de [richtlijnen te lezen die wijzigingen aanbrengen en](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) richtlijnen te synchroniseren om te voorkomen dat u uw vork hoeft te verwijderen. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Conflicten op een pull-aanvraag +## Conflicts on a pull request -Conflicten kunnen ontstaan omdat veel bijdragers aan de repository werken, en veranderingen kunnen je PR breken die in afwachting is van een review en samenvoeging. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Meestal dan niet zult u geen rebase nodig hebben, omdat we alle commits verpletteren, Maar als hier gevraagd wordt om een rebase dan zou je dat moeten doen. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Voor gebruikelijke bugfixes en functies +### For usual bug fixes and features -Wanneer u werkt aan reguliere bugs en functies op onze ontwikkelingsbranch `master`, kunt u een eenvoudige rebase doen: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Rebase uw lokale kopie: +1. Rebase your local copy: ```console - Git checkout + git checkout git pull --rebase upstream master ``` -2. Los conflicten op en voeg commits toe / bewerken +2. Resolve any conflicts and add / edit commits ```console - # + # Either git add . - git commit -m "schaak: conflicten oplossen" + git commit -m "chore: resolve conflicts" - # Of + # Or git add . - git commit --wijzigen --no-edit + git commit --amend --no-edit ``` -3. Stuur uw wijzigingen terug naar de PR +3. Push back your changes to the PR ```console git push --force origin ``` -### Voor aanstaande curriculum en functies +### For upcoming curriculum and features -Wanneer je werkt aan functies voor ons aanstaande curriculum `volgende*` branches, heb je een kersenvrije keuze: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Zorg ervoor dat je upstream gesynchroniseerd wordt met je lokaal: +1. Make sure your upstream comes in sync with your local: ```console - Git checkout master + git checkout master git fetch --all --prune - git checkout next-python-project - git reset --hard upstream/next-python-projecten + git checkout next-python-projects + git reset --hard upstream/next-python-projects ``` -2. Back-up maken +2. Take backup - a. Verwijder je lokale filiaal na het nemen van een back-up (als je deze nog lokaal hebt): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console - Git checkout + git checkout - # voorbeeld: - # git checkout feat/add-numpy-video vraag + # example: + # git checkout feat/add-numpy-video-question git checkout -b - # voorbeeld: - # git checkout -b backup-feat/add-numpy-video vraag + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - b. Of gewoon een back-up van je pr branch (als je het niet lokaal hebt): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # voorbeeld: - # git checkout -b backup-feat/add-numpy-video vraag origin/feat/add-numpy-video vraag + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Begin met een schone helling +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Oplossen van conflicten en opruimen, installeer testen +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean @@ -166,13 +166,13 @@ Wanneer je werkt aan functies voor ons aanstaande curriculum `volgende*` branche npm ci npm run test:curriculum --superblock= - # voorbeeld: + # example: # npm run test:curriculum --superblock=python-for-everybody ``` -6. Als alles er goed uitziet, push terug naar de PR +6. If everything looks good push back to the PR ```console git push --force origin diff --git a/docs/i18n/Dutch/how-to-setup-freecodecamp-locally.md b/docs/i18n/Dutch/how-to-setup-freecodecamp-locally.md index 4141864dd9..619db733cf 100644 --- a/docs/i18n/Dutch/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Dutch/how-to-setup-freecodecamp-locally.md @@ -1,257 +1,257 @@ -Volg deze richtlijnen voor het opzetten van freeCodeCamp lokaal op uw systeem. Dit is sterk aanbevolen als u regelmatig wilt bijdragen. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Voor sommige van de bijdrageworkflows, moet u freeCodeCamp lokaal laten draaien. Bijvoorbeeld het vooraf bekijken van codeeruitdagingen of het debuggen en oplossen van fouten in de codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] Als u niet geïnteresseerd bent in het opzetten van freeCodeCamp lokaal overweeg dan om Gitpod, een gratis online dev omgeving te gebruiken. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Openen in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Begint een kant-en-klare dev omgeving voor freeCodeCamp in uw browser.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Bereid uw lokale machine voor +### How to prepare your local machine -Start met het installeren van de vereiste software voor uw besturingssysteem. +Start by installing the prerequisite software for your operating system. -We ondersteunen voornamelijk ontwikkeling op **\*nix** systemen. Onze staf en community bijdragers werken regelmatig met de codebase met behulp van gereedschappen geïnstalleerd op Ubuntu en macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Wij ondersteunen ook Windows 10 via WSL2, die u kunt voorbereiden door het [lezen van deze handleiding](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Sommige leden van de community ontwikkelen zich ook op Windows 10 zelfstandig met Git for Windows (Git Bash) en andere tools geïnstalleerd op Windows. We hebben op dit moment geen officiële ondersteuning voor een dergelijke installatie, we raden WSL2 aan. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Vereisten:** +**Prerequisites:** -| Vereisten | Versie | Opmerkingen | -| --------------------------------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12,x` | [LTS schema](https://github.com/nodejs/Release#release-schedule) | -| npm (gebundeld met Node) | `6,x` | Heeft geen LTS releases, we gebruiken de versie gebundeld met Node LTS | -| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We zijn momenteel op `3.6`, een [upgrade is gepland](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Als je een andere versie hebt, installeer dan de aanbevolen versie. We kunnen alleen installatieproblemen steunen voor aanbevolen versies. Zie [probleemoplossing](#troubleshooting) voor meer informatie. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Als Node.js al op uw machine is geïnstalleerd, voer dan de volgende commando's uit om de versies te valideren: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console node -v npm -v ``` -> [!TIP] Wij raden ten zeerste aan om bij te werken naar de laatste stabiele versies van bovenstaande software, ook bekend als Long Term Support (LTS) releases. +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Zodra je de voorwaarden hebt geïnstalleerd, moet je je ontwikkelomgeving voorbereiden. Dit is gebruikelijk voor veel ontwikkelingsworkflows, en dit hoef je maar één keer te doen. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Volg deze stappen om je ontwikkelomgeving klaar te krijgen:** +**Follow these steps to get your development environment ready:** -1. Installeer [Git](https://git-scm.com/) of uw favoriete Git client, als u dat nog niet gedaan hebt. Update naar de laatste versie; de versie die werd gebundeld met uw besturingssysteem kan verouderd zijn. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Optioneel maar aanbevolen) [Stel een SSH sleutel in](https://help.github.com/articles/generating-an-ssh-key/) voor GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Installeer een code editor naar keuze. +3. Install a code editor of your choice. - We raden sterk aan om [Visual Studio Code](https://code.visualstudio.com/) of [Atom](https://atom.io/) te gebruiken. Dit zijn grote, gratis en open source code-editors. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Stel linting in voor de code editor. +4. Set up linting for your code editor. - Je zou [ESLint moeten laten draaien in je editor](http://eslint.org/docs/user-guide/integrations.html), en zal alles markeren dat niet voldoet aan [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!TIP] Gelieve geen linkingsfouten te negeren. Ze zijn bedoeld om u te **helpen** en om te zorgen voor een schone en eenvoudige codebase. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Fork de repository op GitHub +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) is een stap waar u uw eigen kopie van freeCodeCamp's hoofdrepository krijgt (a.k.a _repo_) op GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Dit is essentieel, omdat u hierdoor kunt werken aan uw eigen exemplaar van freeCodeCamp op GitHub, of om uw repository te downloaden (klonen) om op lokaal niveau te werken. Later kunt u wijzigingen aanvragen die via een PR-aanvraag in de belangrijkste repository van uw vork worden opgenomen. +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] De hoofd repository op `https://github.com/freeCodeCamp/freeCodeCamp` wordt vaak aangeduid als de `upstream` repository. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Uw fork op `https://github.com/YOUR_USER_NAME/freeCodeCamp` wordt vaak aangeduid als de `oorsprong` repository. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Volg deze stappen om de `https://github.com/freeCodeCamp/freeCodeCamp` repository te fork:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Ga naar de freeCodeCamp repository op GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. Klik op de "Fork" knop in de rechterbovenhoek van de interface ([meer details hier](https://help.github.com/articles/fork-a-repo/) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Nadat de repository is forked, zal u worden meegenomen naar uw kopie van de freeCodeCamp repository op `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
          - Hoe je freeCodeCamp op GitHub (screenshot) fork + How to fork freeCodeCamp on GitHub (screenshot)
          - Hoe het freeCodeCamp te forken op GitHub + How to fork freeCodeCamp on GitHub
          -## Kopieer je fork van GitHub +## Clone your fork from GitHub -[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In uw geval is deze externe locatie uw `fork` van het freeCodeCamp's repository dat beschikbaar zou moeten zijn op `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Voer deze opdrachten uit op je lokale machine: +Run these commands on your local machine: -1. Open een Terminal / Command Prompt / Shell in uw projectmap +1. Open a Terminal / Command Prompt / Shell in your projects directory - _d.w.: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. Kloon je fork van freeCodeCamp, vervang `YOUR_USER_NAME` met uw GitHub gebruikersnaam +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Dit zal de gehele freeCodeCamp repository naar uw projectmap downloaden. +This will download the entire freeCodeCamp repository to your projects directory. -Opmerking: `--depth=1` maakt een ondiepe kloon van je vork, met alleen de meest recente historie/commit. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Synchronisatie instellen van bovenliggende map +## Set up syncing from parent -Nu u een kopie van uw vork hebt gedownload, moet u een `upstream` externe verbinding naar de bovenliggende repository instellen. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[zoals eerder vermeld](#fork-the-repository-on-github)wordt de belangrijkste repository verwezen naar `upstream` repository. Uw vork verwijst naar de `oorsprong` repository. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -U heeft een verwijzing van uw lokale kloon naar de `upstream` repository nodig naast de `oorsprong` repository. Dit is zodat u wijzigingen van de hoofdrepository kunt synchroniseren zonder herhaaldelijk te forken en te kloonen. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Wijzig map naar de nieuwe freeCodeCamp map: +1. Change directory to the new freeCodeCamp directory: ```console cd freeCodeCamp ``` -2. Een externe verwijzing naar de belangrijkste freeCodeCamp repository toevoegen: +2. Add a remote reference to the main freeCodeCamp repository: ```console git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Zorg ervoor dat de configuratie er correct uitziet: +3. Ensure the configuration looks correct: ```console - git afstandsbediening -v + git remote -v ``` - De uitvoer zou er hieronder iets uit moeten zien: + The output should look something like below: ```console - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Lokaal uitvoeren van freeCodeCamp +## Running freeCodeCamp locally -Nu u een lokale kopie van freeCodeCamp heeft, kunt u deze instructies volgen om het lokaal uit te voeren. Dit staat je toe om: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Bekijk bewerkingen naar pagina's zoals ze op het leerplatform verschijnen. -- Werk aan UI gerelateerde kwesties en verbeteringen. -- Foutopsporing en het oplossen van problemen met de applicatieservers en client-apps. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Als u problemen ondervindt, voer dan eerst een webzoekopdracht uit voor uw probleem en kijk of er al een antwoord op is. Als je geen oplossing kunt vinden, Zoek op onze [GitHub problemen](https://github.com/freeCodeCamp/freeCodeCamp/issues) pagina voor een oplossing en rapporteer het probleem als het nog niet is gerapporteerd. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -En zoals altijd Voel je vrij om op te gaan in onze [Bijdragers Chat room van Gitter](https://gitter.im/FreeCodeCamp/Contributors) of [onze Discord server](https://discord.gg/pFspAhS), voor snelle vragen. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] U kunt freeCodeCamp niet lokaal uitvoeren als u gewoon bestanden bewerkt. Bijvoorbeeld, het uitvoeren van een `rebase`, of het oplossen van `samenvoegen` conflicten. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> U kunt later altijd terugkeren naar dit deel van de instructies. Je moet **alleen** deze stap overslaan als je de apps niet hoeft uit te voeren op je computer. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Ga naar wijzigingen](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Afhankelijkheden configureren +### Configuring dependencies -#### Stap 1: stel het omgevingsvariabele bestand in +#### Step 1: Set up the environment variable file -De standaard API-sleutels en omgevingsvariabelen worden opgeslagen in het bestand `sample.env`. Dit bestand moet worden gekopieerd naar een nieuw bestand genaamd `.env` dat dynamisch wordt geopend tijdens de installatiestap. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Maak een kopie aan van "sample.env" en noem het ".env". -# Populeren met de benodigde API keys en secrets: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp sample. nv .env +cp sample.env .env # Windows copy sample.env .env ``` -De sleutels in het bestand `.env` zijn _niet_ verplicht om de app lokaal uit te voeren. De standaard waarden kunnen worden gekopieerd van `sample.env` as-is. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!TIP] Houd er rekening mee als u diensten zoals Auth0 of Algolië wilt gebruiken, je moet je eigen API-sleutels voor deze diensten verkrijgen en de items dienovereenkomstig bewerken in de `. nv` bestand. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Stap 2: Installeer afhankelijkheden +#### Step 2: Install dependencies -Deze stap zal de benodigde afhankelijkheden installeren om de applicatie uit te voeren: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Stap 3: Start MongoDB en seed de database +#### Step 3: Start MongoDB and seed the database -Voordat u de applicatie lokaal kunt uitvoeren, moet u de MongoDB-service starten. +Before you can run the application locally, you will need to start the MongoDB service. -> [!NOTE] Tenzij u MongoDB draait in een andere instelling dan de standaard, de URL opgeslagen als de `MONGOHQ_URL` waarde in de `. nv` bestand zou prima moeten werken. Als u een aangepaste configuratie gebruikt, wijzig deze waarde indien nodig. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -De MongoDB-server starten in een aparte terminal: +Start the MongoDB server in a separate terminal: -- Op macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- Op Windows moet u het volledige pad naar het `mongod` binary opgeven +- On Windows, you must specify the full path to the `mongod` binary ```console - C:\Programma Files\MongoDB\Server\3.6\bin\mongod" + "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Zorg ervoor dat je `3.6` vervangt door de versie die je hebt geïnstalleerd + Make sure to replace `3.6` with the version you have installed -> [!TIP] U kunt voorkomen dat u elke keer MongoDB hoeft te starten door het te installeren als achtergrond service. U kunt [er meer over leren in hun documentatie voor uw besturingssysteem](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Laten we vervolgens de database uploaden. In deze stap voeren we het onderstaande commando uit dat de MongoDB-server vult met een aantal eerste gegevenssets die door services nodig zijn. Hiertoe behoren onder andere enkele programma's. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -Npm run seed +npm run seed ``` -#### Stap 4: Start de freeCodeCamp client applicatie en API server +#### Step 4: Start the freeCodeCamp client application and API server -U kunt nu de API-server en de client applicaties opstarten. +You can now start up the API server and the client applications. ```console -npm run run ontwikkeling +npm run develop ``` -Deze enkele opdracht zal alle diensten ontslaan, inclusief de API server en de client applicaties die beschikbaar zijn om aan te werken. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!NOTE] Eenmaal klaar, open een webbrowser en **bezoek **. Als de app laadt, gefeliciteerd - je bent klaar! U heeft nu een kopie van freeCodeCamp's gehele leerplatform dat op uw lokale machine draait. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] De API Server dient API's op `http://localhost:3000`. De Gatsby app dient de client applicatie op `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Als je bezoekt, zou je de beschikbare API's moeten zien. +> If you visit you should see the available APIs. -## Log in met een lokale gebruiker +## Sign in with a local user -Uw lokale instellingen vullen automatisch een lokale gebruiker in de database. Door op de `Aanmelden` knop te klikken wordt u automatisch geverifieerd in de lokale toepassing. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -De toegang tot de gebruikersportefeuilleton pagina is echter een beetje lastig. In ontwikkeling, Gatsby neemt het vervangen van de client-side pagina's en zo krijgt u een `404` pagina voor de gebruikerspfolio wanneer u lokaal werkt. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Klik simpelweg op de knop **"Voorvertoning 404 Pagina"** om u naar de juiste pagina te sturen. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
          - Hoe log je in wanneer je lokaal werkt (screenshot) + How to sign in when working locally (screenshot)
          - Hoe log je in wanneer je lokaal werkt + How to sign in when working locally
          -## Wijzigingen lokaal maken +## Making changes locally -Je kunt nu wijzigingen aanbrengen in de bestanden en je wijzigingen doorvoeren aan je lokale kloon van de vork. +You can now make changes to files and commit your changes to your local clone of your fork. -Volg deze stappen: +Follow these steps: 1. Validate that you are on the `master` branch: @@ -259,68 +259,68 @@ Volg deze stappen: git status ``` - Je zou een uitvoer zo moeten krijgen: + You should get an output like this: ```console - Op branch master - is je branch up-to-date met 'origin/master'. + On branch master + Your branch is up-to-date with 'origin/master'. - Niets te committen, lege werkmap + nothing to commit, working directory clean ``` - Als je niet op je master bent of als je werkmap niet leeg is, zoek dan de openstaande bestanden/commits en kassa `master` op: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - Git checkout master + git checkout master ``` -2. Synchroniseer de laatste wijzigingen van het freeCodeCamp upstream `master` branch naar uw lokale master branch: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!WAARSCHUWING] Als u een openstaand pull-verzoek heeft gedaan van de `master` branch van uw vork, aan het einde van deze stap zult u ze verliezen. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Je moet ervoor zorgen dat je pull request wordt samengevoegd door een moderator voordat je deze stap uitvoert. Om dit scenario te voorkomen, moet je **altijd** werken aan een tak anders dan de `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Deze stap **synchroniseert de laatste wijzigingen** van de belangrijkste repository van freeCodeCamp. Het is belangrijk dat u zo vaak mogelijk uw filiaal bovenop de nieuwste `upstream/master` herbaseert om conflicten later te voorkomen. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Update uw lokale kopie van de freeCodeCamp upstream repository: + Update your local copy of the freeCodeCamp upstream repository: ```console - Git ophalen stroomopwaarts + git fetch upstream ``` - Je kunt je master filiaal resetten met de freeCodeCamp master: + Hard reset your master branch with the freeCodeCamp master: ```console git reset --hard upstream/master ``` - Duw je hoofdfiliaal naar je oorsprong om een schone geschiedenis op je vork te hebben op GitHub: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console - Git push-origin master --forceren + git push origin master --force ``` - U kunt uw huidige master valideren door het uitvoeren van een diff: + You can validate your current master matches the upstream/master by performing a diff: ```console git diff upstream/master ``` - De resulterende uitvoer moet leeg zijn. + The resulting output should be empty. -3. Maak een nieuwe branch: +3. Create a fresh new branch: - Met behulp van een aparte branch voor elk probleem kunt u uw lokale werkkopie schoon houden. Je zou nooit moeten werken aan de `master`. Dit zal je exemplaar van freeCodeCamp neerzetten en je moet mogelijk opnieuw beginnen met een frisse kloon of vork. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Controleer of je `master` gebruikt zoals eerder uitgelegd, en branch eraf staat: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Uw branchnaam moet beginnen met een `fix/`, `feat/`, `docs/`, enz. Vermijd het gebruik van issue nummers in branches. Vermijd het gebruik van issue nummers in branches. Houd ze kort, betekenisvol en uniek. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Enkele voorbeelden van goede branchnamen zijn: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,171 +330,175 @@ Volg deze stappen: translate/add-spanish-basic-html ``` -4. Bewerk pagina's en werk aan code in uw favoriete teksteditor. +4. Edit pages and work on code in your favorite text editor. -5. Zodra u tevreden bent met de wijzigingen, moet u optioneel het freeCodeCamp lokaal uitvoeren om de wijzigingen te bekijken. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Zorg ervoor dat u fouten herstelt en controleer de opmaak van uw wijzigingen. +6. Make sure you fix any errors and check the formatting of your changes. -7. Controleer en bevestig de bestanden die u bijwerkt: +7. Check and confirm the files you are updating: ```console git status ``` - Dit zou een lijst met `unstaged` bestanden moeten tonen die je hebt bewerkt. + This should show a list of `unstaged` files that you have edited. ```console - Op branch functie/documentatie - Je branch is up to date met 'upstream/feate/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Wijzigingen die worden toegepast: - (gebruik "git reset HEAD ..." naar unstage) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - gewijzigd: CONTRIBUTING.md - gewijzigd: docs/README.md - gewijzigd: docs/how-to-setup-freecodecamp-locally.md - gewijzigd: docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Stap de wijzigingen door en maak een commit: +8. Stage the changes and make a commit: - In deze stap moet u alleen bestanden markeren die u zelf hebt bewerkt of toegevoegd. U kunt bestanden opnieuw instellen en oplossen die u niet van plan was te wijzigen indien nodig. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console - git add pad/naar/mijn/gewijzigd/file.ext + git add path/to/my/changed/file.ext ``` - Of je kunt alle `ongefaseerde` bestanden toevoegen aan het staginggebied: + Or you can add all the `unstaged` files to the staging area: ```console - Git toevoegt . + git add . ``` - Alleen de bestanden die werden verplaatst naar de staging gebied zullen worden toegevoegd wanneer je een commit maakt. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Uitvoer: + Output: ```console - Op branch functie/documentatie - Je branch is up to date met 'upstream/feate/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - d - gewijzigd: docs/README.md - gewijzigd: docs/how-to-setup-freecodecamp-local. d - gewijzigd: docs/how-to-work-on-guide-articles.md -... + Changes to be committed: + (use "git reset HEAD ..." to unstage) + + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Nu kunt u uw wijzigingen doorvoeren met een kort bericht zoals: + Now, you can commit your changes with a short message like so: ```console - git commit -m "fix: mijn korte commit bericht" + git commit -m "fix: my short commit message" ``` - Enkele voorbeelden: + Some examples: ```md - fix: update het gids artikel voor Java - voor lus - functie: voeg gids artikel toe voor alexa vaardigheden + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - Optioneel: + Optional: - Wij raden u ten zeerste aan een conventionele commit boodschap te sturen. Dit is een goede praktijk die u zult zien op enkele van de populaire Open Source repositories. Als ontwikkelaar moedig dit je aan om standaardpraktijken te volgen. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Enkele voorbeelden van conventionele commit boodschappen zijn: + Some examples of conventional commit messages are: ```md - fix: update HTML-gids artikel - fix: update build-scripts voor Travbe-CI - functie: voeg artikel toe voor JavaScript hoisting - documenten: update bijdragen richtlijnen + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - Houd deze kort, niet meer dan 50 tekens. U kunt altijd extra informatie toevoegen in de beschrijving van het commit bericht. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Dit duurt geen extra tijd dan een onconventionele boodschap zoals 'updatebestand' of 'voeg index.md' toe + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Je kunt meer leren over waarom je conventionele commits [hier](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits) moet gebruiken. + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Als je beseft dat je een bestand moet bewerken of het commit-bericht moet bijwerken na het maken van een commit kun je dit doen na het bewerken van de bestanden met: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - Git commit --wijzigen + git commit --amend ``` - Dit opent een standaard teksteditor zoals `nano` of `vi` waar je de commit bericht titel kunt bewerken en de beschrijving kunt toevoegen/bewerken. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Vervolgens kun je de veranderingen naar je vork duwen: +10. Next, you can push your changes to your fork: ```console - git oorsprong branch/naam-hier + git push origin branch/name-here ``` -## Voorstellen van een pull-aanvraag (PR) +## Proposing a Pull Request (PR) -Nadat je je wijzigingen hebt toegezegd, controleer hier [hoe je een Pull Request](how-to-open-a-pull-request.md) kunt openen. +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Snelle opdrachten referentie +## Quick commands reference -Een snelle verwijzing naar de commando's die u nodig hebt wanneer u lokaal werkt. +A quick reference to the commands that you will need when working locally. -| commando | beschrijving | -| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | -| `npm ci` | Installeert / herinstalleer alle afhankelijkheden en bootstraps de verschillende services. | -| `Npm run seed` | Parseert alle challenge markdown bestanden en voegt ze in MongoDB. | -| `npm run run ontwikkeling` | Start de freeCodeCamp API Server en Client applicaties. | -| `npm test` | Voer alle JS tests uit in het systeem, inclusief client, server, lint en challenge tests. | -| `npm start test:client` | Voer de klantentest serie uit. | -| `npm run test:curriculum` | Voer de curriculumtest test uit. | -| `npm run test:curriculum --block='Basic HTML en HTML5'` | Test een specifiek blok. | -| `npm run test:curriculum --superblock='responsive-web-design'` | Test een specifiek SuperBlock. | -| `npm run test-curriculum-full-output` | Voer de curriculumtest suite, zonder bailing na de eerste fout uit | -| `npm run test:server` | Voer de server test serie uit. | -| `npm run e2e` | Voer het einde van Cypress uit naar de eindtests. | -| `npm run clean` | Verwijder alle afhankelijkheden en verwijder caches. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Probleemoplossing +## Troubleshooting -### Problemen met het installeren van de aanbevolen voorwaarden +### Issues with installing the recommended prerequisites -We ontwikkelen regelmatig de nieuwste of meest populaire besturingssystemen zoals macOS 10.15 of later, Ubuntu 18.04 of hoger en Windows 10 (met WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Het wordt aanbevolen om je specifieke probleem te onderzoeken op bronnen zoals Google, Stack Overflow en Stack Exchange. Er bestaat een goede kans dat iemand met hetzelfde probleem te maken heeft en er is al een antwoord op uw specifieke vraag. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Als je in een ander OS zit en/of nog steeds problemen ondervindt, zie [hulp krijgen](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!WAARSCHUWING] +> [!WARNING] > -> Vermijd alstublieft het maken van GitHub problemen voor vereiste problemen. Zij vallen buiten de reikwijdte van dit project. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Problemen met de UI, Fonts, fouten maken, etc. +### Issues with the UI, Fonts, build errors etc. -Als je problemen hebt met het UI, lettertypen of fouten ziet zien die opruimen nuttig kan zijn: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean npm ci npm run seed -npm run development +npm run develop ``` -of +OR -Gebruik de snelkoppeling +Use the shortcut ``` npm run clean-and-develop ``` -Als je problemen blijft ondervinden met het bouwwerk, wordt het opschonen van de werkruimte aanbevolen. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Gebruik `Git clean` in interatieve modus: +Use `git clean` in interative mode: ``` git clean -ifdX @@ -502,41 +506,41 @@ git clean -ifdX
          - Het opschonen van niet-gevolgde Git bestanden (screenshot) + How to clean git untracked files (screenshot)
          - Hoe ongevolgde Git bestanden opschonen + How to clean git untracked files
          -### Problemen met API, login, Uitdagingsuitwerkingen, etc. +### Issues with API, Login, Challenge Submissions, etc. -Als u niet kunt inloggen, en in plaats daarvan ziet u een banner met een foutmelding dat het zal worden gerapporteerd aan freeCodeCamp, Controleer of uw lokale poort `3000` niet in gebruik is door een ander programma. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**In Linux / macOS / WSL op Windows - Van Terminal:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console -netstat -ab womp "3000" +netstat -ab | grep "3000" -tcp4 0 0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**In Windows - Van Verhoogd PowerShell:** +**On Windows - From Elevated PowerShell:** ```powershell -Netstat -ab ½ Select-String "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Issues installeren van afhankelijkheden +### Issues installing dependencies -Als je fouten krijgt tijdens het installeren van de afhankelijkheden, Zorg ervoor dat u zich niet in een beperkt netwerk bevindt of dat uw firewall-instellingen u niet verhinderen toegang te krijgen tot bronnen. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -Afhankelijk van uw netwerk bandbreedte kan het voor het eerst instellen een tijdje duren. Wees geduldig, en als je nog steeds vastzit, worden we aanbevolen met GitPod in plaats van een offline installatie. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Hulp krijgen +## Getting Help -Als u vastzit en hulp nodig hebt, Laat het ons weten door het vragen in de ['Bijdragers' categorie op ons forum](https://forum.freecodecamp.org/c/contributors) of de [Bijdragers chat room](https://gitter.im/FreeCodeCamp/Contributors) op Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Er is mogelijk een fout in de console van je browser of in Bash / Terminal / Command Line die het probleem helpt identificeren. Geef dit foutbericht in uw probleembeschrijving zodat anderen het probleem gemakkelijker kunnen identificeren en u helpen een resolutie te vinden. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Dutch/how-to-setup-wsl.md b/docs/i18n/Dutch/how-to-setup-wsl.md index 0673d6ea94..68bce6dde6 100644 --- a/docs/i18n/Dutch/how-to-setup-wsl.md +++ b/docs/i18n/Dutch/how-to-setup-wsl.md @@ -1,26 +1,26 @@ -# Installeer freeCodeCamp op Windows Subsysteem voor Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!NOT] Zorg ervoor dat uw systeem voldoet aan de vereisten voordat u deze instructies opvolgt. +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (versie 2004, Build 19041 of hoger) - beschikbaar voor alle distributies, inclusief Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop voor Windows**: Zie de betreffende vereisten voor [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) en [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Deze handleiding bestrijkt enkele algemene stappen met de installatie van WSL2. Zodra sommige van de gemeenschappelijke kwesties met WSL2 zijn aangepakt, u moet in staat zijn om onze lokale installatiehandleiding te volgen om met freeCodeCamp op Windows te werken met een WSL distro zoals Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## WSL inschakelen +## Enable WSL -Volg de instructies op de [officiële documentatie](https://docs.microsoft.com/en-us/windows/wsl/install-win10) om WSL1 te installeren en daarna te upgraden naar WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. We hebben Ubuntu-18.04 of hoger aanbevolen met WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!NOT] + > [!NOTE] > - > Hoewel je andere niet-debiaanse ditis mag gebruiken, komen ze allemaal met hun eigen gotchas en vallen ze buiten het bereik van deze handleiding. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Werk de afhankelijkheden van het besturingssysteem bij +2. Update the dependencies for the OS ```console sudo apt update @@ -30,73 +30,73 @@ Volg de instructies op de [officiële documentatie](https://docs.microsoft.com/e sudo apt autoremove -y ``` -## Git instellen +## Set up Git -Git wordt vooraf geïnstalleerd met Ubuntu 18.04, controleer of je Git versie met `git --versie`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ -± git --versie -git versie 2.25.1 +❯ git --version +git version 2.25.1 ``` -(Optioneel maar aanbevolen) U kunt nu doorgaan naar [uw ssh toetsen instellen](https://help.github.com/articles/generating-an-ssh-key) met GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Een Code-Editor installeren +## Installing a Code Editor -We raden ten zeerste aan [Visual Studio Code](https://code.visualstudio.com) te installeren op Windows 10. Het heeft geweldige ondersteuning voor WSL en installeert automatisch alle benodigde extensies op je WSL distro. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -In wezen zal je de code bewerken en opslaan op Ubuntu-18.04 met VS code geïnstalleerd op Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Installeren Docker Desktop +## Installing Docker Desktop -**Docker Desktop for Windows** stelt u in staat om database en services zoals MongoDB, NGINX, etc. te installeren en uitvoeren. Dit is handig om veelvoorkomende valkuilen te voorkomen bij het installeren van MongoDB of andere diensten rechtstreeks op Windows of WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Volg de instructuction op de [officiële documentatie](https://docs.docker.com/docker-for-windows/install) en installeer Docker Desktop voor uw Windows-distributie. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Er zijn enkele minimale hardware vereisten voor de beste ervaring. +There are some minimum hardware requirements for the best experience. -## Configureer Docker Desktop voor WSL +## Configure Docker Desktop for WSL -Zodra Docker Desktop is geïnstalleerd, [volg deze instructies](https://docs.docker.com/docker-for-windows/wsl) en configureer het zodat de Ubuntu-18.04 installatie als een backend. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Dit maakt het zo dat de containers op WSL lopen in plaats van op Windows te draaien. U kunt toegang krijgen tot de diensten via `http://localhost` op zowel Windows als Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## MongoDB installeren van Docker Hub +## Install MongoDB from Docker Hub -Zodra u de Docker Desktop hebt geconfigureerd om met WSL2 te werken, volg dan deze stappen om een MongoDB service te starten: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Start een nieuwe Ubuntu-18.04 terminal +1. Launch a new Ubuntu-18.04 terminal -2. Trek `MongoDB 3.6` van dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Start de MongoDB-service op poort `27017`, en stel in dat deze automatisch wordt uitgevoerd op het systeem herstart +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console docker run -it \ -v mongodata:/data/db \ -p 27017:27017 \ --name mongodb \ - --herstart unless-stop \ + --restart unless-stopped \ -d mongo:3 ``` -4. U kunt nu de service openen vanaf Windows of Ubuntu via `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Node.js en npm installeren +## Installing Node.js and npm -Wij raden u aan om de LTS release voor Node.js te installeren met een node versie manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Eenmaal geïnstalleerd gebruik deze commando's om de Node.js versie te installeren en gebruiken indien nodig +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts -# OF +# OR # nvm install nvm install 14 @@ -107,23 +107,23 @@ nvm install 14 nvm use 12 ``` -Node.js wordt gebundeld met `npm`, je kunt updaten naar de laatste versies van `npm` met: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console -npm installatie -g npm@latest +npm install -g npm@latest ``` -## Een freeCodeCamp lokaal instellen +## Set up freeCodeCamp locally -Nu dat u de vereiste vereisten hebt geïnstalleerd, volgt u [onze lokale setup-gids](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) om freeCodeCamp lokaal te klonen, installeren en installeren op uw computer. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!WAARSCHUWING] +> [!WARNING] > -> Let op, op dit moment zijn de instellingen voor Cypress tests (en de bijbehorende GUI behoeften) een werk in uitvoering. Je zou toch aan het grootste deel van de codebase moeten kunnen werken. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Nuttige links +## Useful Links -- [Een WSL2 Dev Setup met Ubuntu 20.04, Node.js, MongoDB, VS Code en Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - een artikel van Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) -- Veel gestelde vragen op: - - [Windows Subsysteem voor Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Docker Desktop voor Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Dutch/how-to-use-docker-on-windows-home.md b/docs/i18n/Dutch/how-to-use-docker-on-windows-home.md index bb554f2438..85ac65a3e3 100644 --- a/docs/i18n/Dutch/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Dutch/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Hoe gebruik je Docker op Windows Home +# How to use Docker on Windows Home -Er zijn een paar valkuilen te voorkomen bij het instellen van een docker op Windows Home. Eerst moet je [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) gebruiken als beheerder. Helaas ondersteunt Windows Home geen Docker voor Windows Desktop, dus Toolbox moet in plaats daarvan worden gebruikt. Het moet als beheerder worden uitgevoerd omdat de installatie symlinks gebruikt, die anders niet kunnen worden gecreëerd. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Zodra je de werkset hebt geïnstalleerd, voer Docker Quickstart Terminal uit als Administrator. Dit zal een `standaard` virtuele machine maken, als deze nog niet bestaat. Zodra dat is gebeurd, sluit je de terminal en open VirtualBox (opnieuw als beheerder). Je zou de `standaard` machine moeten kunnen zien. De site is zeer intensief, dus stop de virtuele machine en verhoog de instellingen zoveel mogelijk - met name geheugen. Het is bevestigd dat het werkt met 4GB ram. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Zodra u blij bent dat Docker werkt, kloon de freeCodeCamp repository naar een map binnen `C:\Users`. Deze mappen worden gedeeld en geven Docker toegang tot de lokale mappen, die het nodig heeft tijdens de installatie. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Als je berichten zoals +If you see messages like ```shell -bash: change_volumes_owner.sh: Geen dergelijk bestand of map +bash: change_volumes_owner.sh: No such file or directory ``` -wanneer je `npm run docker:init` dit is waarschijnlijk de boot. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Dutch/how-to-work-on-coding-challenges.md b/docs/i18n/Dutch/how-to-work-on-coding-challenges.md index f37f68f279..2b95545e91 100644 --- a/docs/i18n/Dutch/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Dutch/how-to-work-on-coding-challenges.md @@ -1,282 +1,363 @@ -# Hoe te werken aan coderingsuitdagingen +# How to work on coding challenges -Ons doel is het ontwikkelen van een leuke en heldere interactieve leerervaring. +Our goal is to develop a fun and clear interactive learning experience. -Het ontwerpen van interactieve coderingsuitdagingen is moeilijk. Het zou veel gemakkelijker zijn om een lange uitleg te schrijven of een video tutorial te maken, en er is een plaats voor degenen op Medium en YouTube. Voor ons core curriculum houden we echter vast aan wat het beste werkt voor de meeste mensen - een volledig interactieve video game-achtige ervaring. +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. -Wij willen dat de campers een toestroom krijgen. We willen dat ze impulsen geven en ons curriculum met zo weinig mogelijk nagels doorblazen. Wij willen dat zij met vertrouwen aan de projecten deelnemen en zich in ruime mate blootstellen aan programmeringsconcepten. +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. -Het aangaan van deze uitdagingen vereist enorme creativiteit en zorgvuldigheid. Er is genoeg hulp beschikbaar. Je zult steun hebben van een heel team van bijdragers aan wie je ideeën kunt afstoten en je uitdagingen kunt demonstreren. Blijf actief in de [bijdragers kamer](https://gitter.im/freecodecamp/contributors) en stel veel vragen. +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/). -Met uw hulp kunnen we een interactief leerplan ontwerpen waarmee miljoenen mensen nog jaren leren programmeren. +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. -De inhoud voor elke challenge wordt opgeslagen in zijn eigen markdown bestand. Dit markdown bestand wordt later geconverteerd naar HTML met behulp van onze tools om interactieve webpagina's te maken. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -U vindt alle curriculaire inhoud in de map [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) map. +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. -## Stel de tooling voor het curriculum in +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Voordat je aan het curriculum werkt, moet je eerst wat gereedschap instellen om je wijzigingen te helpen testen. U kunt elke optie gebruiken vanuit onderstaande opties: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- U kunt [het freeCodeCamp lokaal instellen](how-to-setup-freecodecamp-locally.md). Dit wordt **sterk aanbevolen** voor reguliere / herhaal bijdragen. Met deze instelling kunt u uw wijzigingen testen en werken. -- Gebruik Gitpod, een gratis online dev omgeving. Door op de knop hieronder te drukken start je een kant-en-klare dev omgeving voor freeCodeCamp in je browser. Het duurt maar een paar minuten. +## Set up the tooling for the curriculum - [![Openen in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Bewerk de bestanden op de interface van GitHub door te klikken op het potloodpictogram voor het corresponderende bestand. Hoewel dit de snelste manier is, wordt het **niet aanbevolen**, omdat u uw wijzigingen niet kunt testen op GitHub. Als onze onderhouders tot de conclusie komen dat de wijzigingen die je hebt aangebracht lokaal getest moeten worden, moet je in plaats daarvan de bovenstaande methoden opnieuw volgen. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Uitdaging sjabloon + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Hieronder is een sjabloon van hoe de markdown bestanden er op dit moment uitzien. Om de gestroomlijnde sjabloon te zien, zien we [hieronder](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: Unieke identificatie (alfanumeriek), MongoDB_id) -titel: Challenge titel +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 0 -videoUrl: 'url of video uitleg' +videoUrl: 'url of video explanation' --- -## Beschrijving +## Description
          -Een beschrijving van de uitdaging en wat nodig is om te doorlopen +A Description of the challenge and what is required to pass
          -## Instructies +## Instructions
          -instructies over wat precies gedaan moet worden. +Instructions about what exactly needs to be done.
          -## Testen +## Tests
          ```yml tests: - - Tekst: Moet "foo" - testString: 'Een stringified function mogelijk met Chai asserts' + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
          -## Zaad Uitdaging +## Challenge Seed
          ```{ext} -Code wordt standaard in de editor weergegeven. +Code displayed in the editor by default. -Dit is een vereist onderdeel voor de uitdaging. +This is a required section for the challenge. ```
          -### Voor de test +### Before Test
          ```{ext} -Optionele Test setup code. +Optional Test setup code. ```
          -### Na de test +### After Test
          ```{ext} -Optionele Test demonteer code. +Optional Test tear down code. ```
          -## Oplossing +## Solution
          ```{ext} -// oplossing vereist +// solution required ```
          ```` -> [!NOT] +> [!NOTE] > -> char@@1. In de bovenstaande secties, voorbeelden van `{ext}` zijn: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Voor de `Tests` sectie hierboven, `text` en `testString` moeten geldige YAML strings zijn. `testString` kan een stringified function of expression zijn met behulp van Chai asserts. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Nummering Challenges +## Numbering Challenges -Elke uitdaging heeft een `id` nodig. Als je er geen specificeert dan zal MongoDB een nieuwe willekeurige aanmaken wanneer het de data opslaat; We willen echter niet dat het dat doet, omdat we willen dat de uitdaging in verschillende omgevingen consistent is (stagnering, productie, veel verschillende ontwikkelaars, etc.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -Genereren van een nieuwe in een shell (ervan uitgaande dat MongoDB apart wordt uitgevoerd): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Voer `mongo` commando uit. -2. Voer het `ObjectId()` commando uit. +1. Run `mongo` command. +2. Run `ObjectId()` command. -Bijvoorbeeld: +For example: ```bash $ mongo MongoDB shell version v3.6.1 -verbinding naar: mongodb://127.0.0.1:27017 -MongoDB server versie: 3.4.10 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Het resultaat is een nieuw id, bijvoorbeeld `5a474d78df58bafeb3535d34` hierboven. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -Zodra je ID hebt, plaats het in het Markdown bestand als het `id` veld bovenaan, bv. +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- id: 5a474d78df58bafeb3535d34 -titel: Challenge Titel +title: Challenge Title ``` -## Naamgeving uitdagingen +## Naming challenges -De benaming is moeilijk. We hebben het makkelijker gemaakt door enkele beperkingen op te leggen. +Naming things is hard. We've made it easier by imposing some constraints. -Alle titels van challenge moeten expliciet zijn en dit patroon volgen: +All challenge titles should be explicit and should follow this pattern: \[verb\]\[object clause\] -Hier zijn enkele voorbeeld van challenge namen: +Here are some example challenge names: -- Gebruik klok om de opvulling van een element op te geven -- Condenserende arrays met .reduce -- Gebruik Haak-Notatie om de Eerste Karakter in een String te vinden +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Uitdaging beschrijving/instructies +## Challenge descriptions/instructions -Zinnen moeten duidelijk en beknopt zijn met minimaal jargon. Als het gebruikt wordt moet het jargon onmiddellijk in gewoon Engels gedefinieerd worden. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Houd alinea's kort (ongeveer 1-4 zinnen). Mensen lezen waarschijnlijk meer een paar korte alinea's dan een muur tekst. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Uitdagingstekst moet de tweede persoon ("jij") gebruiken om te helpen om er een gesprekstoon aan te geven. Op deze manier lijken de tekst en de instructies rechtstreeks tot de camper te spreken die de uitdaging doorwerkt. Probeer te voorkomen dat je de eerste persoon ("I", "wij", "let's" en "us" moet gebruiken. +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Gebruik geen uitgaande links. Deze onderbreken de stroom. Campers zouden nooit iets hoeven te googlen tijdens deze uitdagingen. Als er bronnen zijn waarvan je denkt dat campers er baat bij hebben, voeg ze dan toe aan het handleidingsartikel van de uitdaging. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -U kunt diagrammen toevoegen als dit absoluut noodzakelijk is. +You can add diagrams if absolutely necessary. -Gebruik geen emojis of emoticons in uitdagingen. freeCodeCamp heeft een wereldwijde gemeenschap en de culturele betekenis van een emoji of emoticon kan verschillend zijn over de hele wereld. Ook kunnen emojis op verschillende systemen verschillend renderen. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Proper nouns moet de juiste hoofdletters gebruiken wanneer dat mogelijk is. Hieronder staat een lijst met woorden zoals ze in de uitdagingen zouden moeten verschijnen. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (hoofdletters in "J" en "S" en geen afkortingen) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Front-end ontwikkeling (adjectief formulier met een dash) is wanneer je op de voorkant werkt (noun formulier zonder dash). Hetzelfde geldt voor "back end", "full stack" en vele andere samengestelde voorwaarden. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### De 2 minuten regel +### The 2-minute rule -Elke uitdaging zou binnen 120 seconden moeten worden opgelost door een moedertaalspreker die de uitdagingen die eraan ten grondslag liggen heeft voltooid. Dit omvat de tijd die nodig is om de richtingen/instructies te lezen om de code te begrijpen schrijf hun eigen code en laat alle tests passeren. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Als het langer dan twee minuten duurt om de uitdaging te voltooien, hebt u twee opties: +If it takes longer than two minutes to complete the challenge, you have two options: -- Vereenvoudig de uitdaging, of -- Splits de uitdaging in twee uitdagingen. +- Simplify the challenge, or +- Split the challenge into two challenges. -De 2 minuten regel dwingt jou, de uitdagingontwerper, om je richtingsbeknopt, je zaadcode duidelijk te maken en je testen recht vooruit. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -We volgen hoe lang het duurt voordat campers veranderingen oplossen en deze informatie gebruiken om uitdagingen te identificeren die vereenvoudigd of verdeeld moeten worden. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modulariteit +### Modularity -Elke uitdaging zou precies één concept moeten onderwijzen, en dat concept moet blijken uit de naam van de uitdaging. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -We kunnen eerder behandelde concepten versterken door herhaling en variaties - bijvoorbeeld introduceer h1 elementen in één uitdaging, h3 elementen later een paar uitdagingen +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Ons doel is om duizenden tweedaagse uitdagingen te hebben. Deze kunnen samenvloeien en er is nog eens sprake van eerder gedekte concepten. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Formatteer challenge tekst +### Formatting challenge text -Hier zijn specifieke opmaak richtlijnen voor challenge tekst en voorbeelden: +Here are specific formatting guidelines for challenge text and examples: -- Taal trefwoorden gaan in `` tags. Bijvoorbeeld, namen van HTML-tag of CSS-eigenschappen -- De eerste instantie van een trefwoord wanneer het wordt gedefinieerd, of algemene trefwoorden (bijv. "object" of "immutable") gaan over `` tags -- Referenties naar coderen onderdelen (bijvoorbeeld functie, methode of variabelenamen) moeten worden verpakt in `` tags. Zie voorbeeld hieronder: -- Gebruik parseInt om de variabele realNumber om te zetten in een geheel getal. -- Multi-regel codeblokken **moeten worden voorafgegaan door een lege regel**. De volgende regel moet beginnen met drie achtergronden die onmiddellijk gevolgd worden door een van de [ondersteunde talen](https://prismjs.com/#supported-languages). Om het codeblok te voltooien, moet je een nieuwe regel starten die slechts drie backticks en **een andere lege regel** heeft. **Opmerking:** Als je een voorbeeldcode in YAML gaat gebruiken, gebruik `yaml` in plaats van `yml` voor de taal rechts van de backticks. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Zie voorbeeld hieronder: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Het volgende is een voorbeeld van code: +The following is an example of code: ```{language} -[UW CODE HERE] +[YOUR CODE HERE] ```` ```` -- Aanvullende informatie in de vorm van een notitie moet worden geformatteerd `Opmerking: Rest van notitie tekst... -- Als er meerdere notities nodig zijn dan de lijst van alle notities in aparte zinnen met behulp van het formaat `notities: Eerste notitie tekst. Tweede notitie tekst.`. -- Gebruik dubbele aanhalingstekens van toepassing +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Schrijftesten +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Uitdagingen moeten het minimum aantal tests hebben dat nodig is om te verifiëren dat een camper een concept begrijpt. +## Writing tests -Ons doel is om het enige punt te communiceren dat de uitdaging probeert te leren en te testen dat zij dat punt hebben begrepen. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Uitdaging tests kunnen gebruik maken van de Node.js en Chai.js assertie bibliotheken. En, indien nodig, kan de door de gebruiker gegenereerde code geopend worden in de variabele `code`. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Opmaak seed code +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Hier zijn specifieke formattering richtlijnen voor de challenge seed code: +## Formatting seed code -- Gebruik twee spaties om te inspringen -- JavaScript stellingen eindigen met een puntkomma -- Gebruik dubbele aanhalingstekens van toepassing, -- Commentaren moeten een spatie hebben tussen de reactietekens en de reactie zelf +Here are specific formatting guidelines for the challenge seed code: - `// Deze lijn oplossen` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Hints en Solutions +### Seed code comments -Elke uitdaging heeft een `Get a Hint` knop. dus een gebruiker heeft toegang tot alle hints/oplossingen die zijn gemaakt voor de challenge. Onderwerpen voor curriculumhints/oplossingen bevinden zich op [ons forum](https://forum.freecodecamp.org/c/guide) onder de categorie 'Guide'. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Als je een probleem vindt met een bestaand challenge's hints/oplossingen onderwerp, kun je suggesties doen in de [contributors categorie](https://forum.freecodecamp.org/c/contributors) op het forum. Moderators en gebruikers met trust level 3 zullen de reacties beoordelen en beslissen of de wijzigingen al dan niet in het bijbehorende hint/oplossingen onderwerp worden opgenomen. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Toevoegen van nieuwe Uitdaging hints/oplossingen Onderwerpen +Example of valid single line JavaScript comment: -Neem de volgende stappen bij het toevoegen van een nieuwe challenge hints/oplossingen gerelateerd onderwerp. +```js +// Only change code below this line +```` -1. Begin met dezelfde stappen voor het maken van een nieuw onderwerp, maar bekijk de volgende stappen voor het maken van de titel. -2. De titel van het onderwerp moet beginnen met `freeCodeCamp Challenge Guide: ` samengevoegd met de werkelijke titel van de curriculum challenge. Bijvoorbeeld, als de uitdaging "`Chunky Monkey`" heet, zou de titel van de topic "`freeCodeCamp Challenge Guide: Chunky Monkey`" zijn. -3. `camperbot` moet de eigenaar zijn van deze topics/posts, dus moet je een beheerder vragen om het hoofdbericht te veranderen naar `camperbot`. -4. Zodra het nieuwe onderwerp is aangemaakt, is er een forumonderwerp-id gemaakt. Het bevindt zich op het einde van de URL van het forumonderwerp. Deze id moet worden toegevoegd aan de frontmatter van het curriculum challenge bestand via het normale pull request proces voor de `Get a Hint` knop om naar het onderwerp te linken. +Example of a valid CSS comment: -### Richtsnoeren voor de inhoud van hints en oplossingen topics +```js +/* Only change code above this line */ +``` -Wanneer u een oplossing voorstelt voor een curriculumuitdaging gerelateerd onderwerp de volledige code moet worden toegevoegd. Dit omvat alle originele seed code plus eventuele wijzigingen die nodig zijn om te slagen voor alle challenge tests. De volgende sjabloon moet worden gebruikt bij het maken van nieuwe hints/oplossingen topics: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. -``md +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
          + { /* Change code below this line */ } + + { /* Change code above this line */ } +

          {this.state.text}

          +
          + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md # Challenge Name Goes Here --- -## Probleemuitleg +## Problem Explanation -Dit vat samen wat er moet worden gedaan zonder de beschrijving en/of instructies van de uitdaging opnieuw te geven. This is an optional section +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section #### Relevant Links @@ -307,132 +388,132 @@ function myFunc() { } ```` -#### Code uitleg +#### Code Explanation -- Code-uitleg komt hier -- Code-uitleg komt hier +- Code explanation goes here +- Code explanation goes here -#### Relevante links +#### Relevant Links -- [Link tekst](link_url_goes_here) -- [Link tekst](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
          ```` -## Testen Challenges +## Testing Challenges -voordat je [een pull request maakt](how-to-open-a-pull-request maakt. d) voor je wijzigingen moet je bevestigen dat de wijzigingen die je hebt aangebracht niet per ongeluk problemen veroorzaken met de challenge. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Voer het onderstaande commando uit de hoofdmap uit om alle uitdagingen te testen +1. To test all challenges run the below command from the root directory ```` npm run test:curriculum ``` -2. Je kunt ook een blok of een superblok uitdagingen testen met deze commando's +2. You can also test a block or a superblock of challenges with these commands ``` -npm run test:curriculum --block='Basic HTML en HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` npm run test:curriculum --superblock=responsive-web-design ``` -U kunt ook één uitdaging individueel testen door de volgende stappen uit te voeren: +You are also able to test one challenge individually by performing the following steps: -1. Ga naar de `curriculum` map: +1. Switch to the `curriculum` directory: ``` cd curriculum ``` -2. Voer het volgende uit voor elk challenge bestand waarvoor u hebt gewijzigd: +2. Run the following for each challenge file for which you have changed: ``` - npm run test -- -g de volledige Engelse titel van de challenge' + npm run test -- -g 'the full English title of the challenge' ``` -Zodra u hebt geverifieerd dat elke uitdaging door de tests is goedgekeurd, [creëer een pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> U kunt de omgevingsvariabele `LOCALE` in de `.env` instellen op de taal van de uitdaging(en) die u moet testen. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> De momenteel geaccepteerde waarden zijn `dutch` en `chinese`, waarbij `dutch` standaard is ingesteld. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Opkomende Uitdaging Sjabloon +## Upcoming Challenge Template -De uitdaging sjabloon in het proces wordt bijgewerkt naar een schonere, minder geneste structuur. Dit is nog niet volledig voltooid, maar het volgende zou moeten sluiten bij de definitieve structuur: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: -``mdx +````mdx --- -id: Unieke identifier (alfanumerieke, alfanumerieke naam, MongoDB_id) -titel: 'Challenge Title' -challengeType: Geheel getal, gedefinieerd in 'client/utils/challengeTypes. s` -videoUrl: 'url van video-uitleg' +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` +videoUrl: 'url of video explanation' forumTopicId: 12345 --- -importeer Script van './script. dx'; +import Script from './script.mdx'; -## --stap-beschrijving-- +## --step-description-- -Beschrijving tekst, in markdown +Description text, in markdown ```html
          - voorbeeld code + example code
          ``` -## Stap-tips -- +## --step-hints-- ![test-id-1] -Er zal een willekeurig aantal drievoudige ID's, instructies (in markdown) en codeblokken zijn. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Code voor test een +Code for test one ``` ![test-id-2] -Meer instructies in markdown syntaxis +More instructions in markdown syntax ```js -Meer code +More code ``` -## --stap-seed-- +## --step-seed-- -### --bij gebruiker-code--- +### --before-user-code-- ```lang -Code geëvalueerd voor de gebruiker +Code evaluated before the user’s ``` -### --after-user-code- +### --after-user-code-- ```lang -Code geëvalueerd na de gebruiker en net voor de tests +Code evaluated after the user’s, and just before the tests ``` -### --seed-inhoud-- +### --seed-content-- ![index-html] ```html -Een paar html +Some html ``` ```css -Sommige css +Some css ``` ```js -Enkele js +Some js ``` ![index-js] @@ -441,63 +522,63 @@ Enkele js

          - --oplossing-marker-- + --solution-marker--

          - Precies hetzelfde als de seeds sectie + Exactly the same as the seeds section

          - --volgende-oplossing-marker + --next-solution-marker

          - Opnieuw hetzelfde + Same again

          - --vraagteken-- + --question-marker--

          - --tekst-markering-- + --text-marker--

          - De vraag zou hier gaan (alleen gebruikt voor video challenges) + The question would go here (only used for video challenges)

          - --antwoordmarkering-- + --answers-marker--

          - Antwoord 1 + Answer 1


          - Meer antwoorden + Answer 2


          - Antwoord 2 + More answers

          - --oplossing-marker-- + --solution-marker--

          @@ -513,13 +594,13 @@ Enkele js

          - Nuttige links + Useful Links

          - Het maken en bewerken van uitdagingen: + Creating and Editing Challenges:

          @@ -527,14 +608,14 @@ Enkele js
          1. - Uitdaging types - wat de numerieke challenge type waarden betekenen (enum). + Challenge types - what the numeric challenge type values mean (enum).

          2. - Bijdragen aan FreeCodeCamp - Schrijven van ES6 Challenge Testen - een video volgend op Ethan Arrowood als hij bijdraagt aan de oude versie van het curriculum. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

          3. diff --git a/docs/i18n/Dutch/how-to-work-on-the-docs-theme.md b/docs/i18n/Dutch/how-to-work-on-the-docs-theme.md index a6d5705776..bf8bf8f6c9 100644 --- a/docs/i18n/Dutch/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Dutch/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Hoe te werken aan het thema van de documenten +# How to work on the docs theme -> [!NOT] Een snelle herinnering dat je niets hoeft te installeren om te werken aan de inhoud van de documentatiesite. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Om te werken aan de bijdragende richtlijnen, kun je bestanden bewerken of toevoegen in de `docs` directory [die hier beschikbaar zijn](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Wanneer je wijzigingen zijn samengevoegd, wordt deze automatisch beschikbaar op de documentatiesite. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Structuur van de documentenwebsite +## Structure of the docs website -De site wordt gegenereerd met behulp van [`docsify`](https://docsify.js.org), en wordt geserveerd met behulp van GitHub pagina's. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Normaal gesproken hoeft u geen configuratie te wijzigen of de site lokaal te bouwen. In het geval dat je geïnteresseerd bent, is hier hoe het werkt: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- De bron van de startpagina voor deze site is beschikbaar in [`documenten/index.html`](index.html). -- We dienen dit bestand als een SPA met behulp van `docsify` en GitHub pagina's. -- Het `docsify` script genereert de inhoud van `markdown` bestanden in `docs` directory op vraag. -- De startpagina is gegenereerd door de [`_coverpage.md`](_coverpage.md). -- de zijbalk navigatie wordt gegenereerd door [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Documentatie lokaal te bedienen +## Serving the documentation site locally -Kloon gratiscode: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git -docsify dient docs +docsify serve docs ``` -Installeer `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -en bedien de map `/docs` +and serve the `/docs` directory -```sh -docs uitdelen +```console +docsify serve docs ``` -Of als u het freeCodeCamp lokaal hebt geïnstalleerd (zie de lokale installatiehandleiding), we bundelen de CLI met de ontwikkelaarshulpm zodat je `npm run docs:serve` van de root van de repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Dutch/how-to-work-on-the-news-theme.md b/docs/i18n/Dutch/how-to-work-on-the-news-theme.md index 665b22e5f9..51ad62ccf0 100644 --- a/docs/i18n/Dutch/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Dutch/how-to-work-on-the-news-theme.md @@ -1,8 +1,99 @@ - https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md \ No newline at end of file +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). + +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Dutch/index.md b/docs/i18n/Dutch/index.md index 3f01b6907b..1c4add4ab3 100644 --- a/docs/i18n/Dutch/index.md +++ b/docs/i18n/Dutch/index.md @@ -1,45 +1,43 @@ -De [freeCodeCamp.org](https://freecodecamp.org) community is mogelijk dankzij duizenden vriendelijke vrijwilligers zoals jij. Wij verwelkomen alle bijdragen aan de gemeenschap en zijn blij u aan boord te kunnen verwelkomen. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOT] Voordat je verder gaat, neem je 2 minuten de tijd om onze [Gedragscode](https://www.freecodecamp.org/code-of-conduct) te lezen. We handhaven het streng in onze hele gemeenschap. We willen bijdragen aan freeCodeCamp.org om voor iedereen een veilige en inclusieve ervaring te zijn. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Fijne bijdrage. +Happy contributing. -Je bent welkom tot: +You are welcome to: -- Maak, update en los bugs op in onze [coderingsuitdagingen](#coding-challenges). -- Help ons fouten op te lossen in freeCodeCamp.org's [leerplatform](#learning-platform). -- _(Binnenkort)_ Help ons freeCodeCamp.org te vertalen naar wereldtalen. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Heb je vragen? Ga naar [deze FAQs](/FAQ.md) waar we antwoorden geven op veelvoorkomende vragen over bijdragen. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Codering Uitdagingen +## Curriculum -Al onze programmeeruitdagingen worden beheerst door de gemeenschap, door het inbrengen van deskundigenkennis van vrijwilligers zoals jij. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Je kunt helpen om ze uit te breiden en hun formulering te verbeteren. Je kunt de gebruikersverhalen ook bijwerken om het concept beter uit te leggen of overbodige te verwijderen en de challenge tests te verbeteren om ze nauwkeuriger de code van mensen te laten testen. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Als je geïnteresseerd bent in het verbeteren van deze coderingsuitdagingen, is hier [hoe je moet werken aan coderingsuitdagingen](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Platform leren +## Learning Platform -Ons leerplatform draait op een moderne JavaScript-stack. Het bevat verschillende componenten, gereedschappen en bibliotheken, waaronder maar niet beperkt tot, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, en meer. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Breed, +Broadly, we use -- We hebben een Node.js gebaseerde API-server. -- Een set van React-gebaseerde client applicaties. -- Een script dat we gebruiken om onze front-end projecten te evalueren. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Voor een bijdrage hieraan is wat begrip van APIs, ES6 Syntax en veel nieuwsgierigheid. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -In wezen verwachten we basiskennis van de eerder genoemde technologieën, instrumenten en bibliotheken. Met dit gezegd zijnde, hoeft u geen expert op hen te zijn om een bijdrage te leveren. +If you want to help us improve our codebase... -**Als je ons wilt helpen met het verbeteren van onze codebase, kun je Gitpod, een gratis online dev omgeving gebruiken** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Openen in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Begint een kant-en-klare dev omgeving voor freeCodeCamp in uw browser.) +Or you can... -of - -**U kunt [uw freeCodeCamp lokaal instellen](how-to-setup-freecodecamp-locally.md) op uw computer.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Dutch/moderator-handbook.md b/docs/i18n/Dutch/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Dutch/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
            + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Finnish/FAQ.md b/docs/i18n/Finnish/FAQ.md index be8a8f1bc8..e6ef4fed0d 100644 --- a/docs/i18n/Finnish/FAQ.md +++ b/docs/i18n/Finnish/FAQ.md @@ -1,95 +1,76 @@ -### Olen uusi GitHub ja Open Source, mistä minun pitäisi aloittaa? +### I am new to GitHub and Open Source. Where should I start? -Lue ["Kuinka auttaa avoimen lähdekoodin opas"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Se on kompressoiva resurssi ensimmäinen ajastin ystävällisiä projekteja ja ohjeita. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Voinko kääntää freeCodeCampin opetussuunnitelma? +### Can I translate freeCodeCamp's curriculum? -Tulemme potkimaan lokalisointi pyrkimyksiä freeCodeCamp alkaa **Kiinan** ensin. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Aiomme asettaa opetussuunnitelman saataville useammilla kielillä, mutta emme voi sitoutua mihinkään määräaikoihin. Useilla toiminnallisilla rajoilla, kuten henkilöstöllä, aktiivisilla osallistujilla ja palvelinkustannuksilla, on oma roolinsa kansainvälistymisen (i18n) toimien vauhdittamisessa. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Aiomme aloittaa i18n ponnistelut näillä kielillä: arabia, portugali, Venäläinen ja espanja (ei missään nimessä) sen jälkeen, kun olemme julkaisseet opetussuunnitelman kiinalaisille. +### How can I report a new bug? -**Miksi te keskitytte ensin Kiinan opetussuunnitelmaan?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -Kiina on suurin väestörakenteen alueet, meidän ei-natiivi Englanti puhuva yleisö. Tällä hetkellä meillä on satoja tuhansia käyttäjiä käyttäen vanhaa versiota alustasta. Keskittyminen Kiinan opetussuunnitelma antaa meille arvion logistiikka mukana i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Keskitymme Latinalaiseen Amerikkaan Portugalin ja Espanjan väestönkehityksen alueena. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -Meillä ei ole lähitulevaisuudessa mitään suunnitelmia i18n:n puolesta muille kuin edellä mainituille kielille. +### How can I report a security issue? -Emme rohkaise sinua työskentelemään i18n edellä mainituilla kielillä. Voimme hyväksyä pyynnöt ilman minkäänlaisia odotuksia niiden käyttöönotosta. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Miten voin ilmoittaa uudesta virheestä? +### I am a student. Can I work on a feature for academic credits? -Jos luulet, että olet löytänyt virheen, lue ensin ["Apua olen löytänyt Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) artikkeli ja seuraa sen ohjeita. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Jos olet varma, että se on uusi bugi, mene eteenpäin ja luo uusi GitHub ongelma. Muista sisällyttää niin paljon tietoa kuin mahdollista, jotta voimme jäljentää vian. Meillä on ennalta määritelty ongelma malli auttaa sinua tämän läpi. +We request you to plan ahead and work on code contributions with this in mind. -Huomioithan, että kaikki ongelmat, jotka etsivät koodausapua haasteesta, tullaan sulkemaan. Ongelman seuranta on ehdottomasti codebaseihin liittyviä kysymyksiä ja keskusteluja. Aina kun epäilet, sinun pitäisi [hakea apua foorumilla](https://forum.freecodecamp.org) ennen raportin laatimista. +### What do these different labels that are tagged on issues mean? -### Miten voin ilmoittaa turvallisuuskysymyksestä? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Älä luo GitHubin ongelmia turvallisuusongelmien ratkaisemiseksi. Sen sijaan lähetä sähköpostia osoitteeseen `security@freecodecamp.org` ja tarkastelemme sitä välittömästi. +### Where do I start if I want to work on an issue? -### Minä olen opiskelija, voinko minä tai tiimimme työskennellä akateemisten opintosuoritusten parissa? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Kyllä, varmasti. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -Vaikka olemme avoimia kaikille kannanotoille, olkaa hyvä ja ottakaa huomioon, että emme voi sitoutua mihinkään aikatauluun, joka voi olla vaatimuksena yliopistossanne tai yliopistossanne. Saamme paljon vetopyyntöjä ja koodausta vapaaehtoisten kehittäjien toimesta, ja kunnioitamme heidän aikaansa ja ponnistelujaan. Emme voi antaa minkäänlaista PR-oikeutta erityistä huomiota ollaksemme oikeudenmukaisia kaikille. +### I found a typo. Should I report an issue before I can make a pull request? -Pyydämme teitä suunnittelemaan tulevaisuutta ja työskentelemään ominaisuuden parissa tämän mielessä. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Mitä nämä eri merkit merkitsevät asioille? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -Koodin ylläpitäjät [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) kysymyksiä ja vetää pyyntöjä perustuen niiden prioriteetti, vakavuus ja muut tekijät. Voit [löytää täydellisen sanaston niiden merkityksiä täällä](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Mistä aloitan, jos haluan työskennellä asian parissa? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Sinun pitäisi käydä läpi [**`apua halusi`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) tai [**`ensimmäinen ajastimet vain`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) ongelmaa jotta saat nopeasti yleiskuvan siitä, mitä voit työskennellä. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`auttaa halusi`** ongelmat ovat kourat, ja sinun ei tarvitse hakea lupaa ennen työstämistä niitä. Kuitenkin ongelmia **`ensimmäinen ajastimet vain`** merkki on varattu ihmisille, jotka eivät ole osallistuneet freeCodeCamp koodausta ennen. Jos nämä asiat eivät ole selvillä siitä, mitä on tehtävä, voit esittää kysymyksiä kommenteissa. +### I am stuck on something that is not included in this documentation. -### Löysin typon, pitäisikö minun kertoa asiasta ennen kuin voin esittää pull-pyynnön? - -Tyyppien ja muiden sanamuotojen muutosten osalta voit suoraan avata vetopyyntöjä luomatta ensin kysymystä. Ongelmia on enemmän keskustella suurempia ongelmia, jotka liittyvät käytännesääntöihin tai rakenteellisiin näkökohtiin. - -Kuitenkin, mainitse yksityiskohtia, konteksti jne. pull pyynnön kuvausalueella auttaa meitä ymmärtämään ja tarkistamaan oman panoksesi jopa pieniä muutoksia. - -### Miten saan ongelman joka on määrätty minulle? - -Emme yleensä anna kysymyksiä kenellekään muulle kuin pitkäaikaiselle osallistujalle, jotta vältyttäisiin monitulkintaisilta esityksiltä. Sen sijaan noudatamme seuraavassa esitettyä politiikkaa oikeudenmukaisesti kaikille: - -1. Ensisijaisena vaihtoehtona on, että kaikki asiat yhdistetään ensimmäiseen vetopyyntöön. -2. Jos samaa asiaa koskevia useita pullonkauloja koskevia pyyntöjä on esitetty, lähdekoodin laatu on asetettava etusijalle. - - Oteitko mukaan testejä? - - Saitko kiinni kaikki käyttökohteet? - - Varmistatko kaikki testit läpäisevän, ja vahvistitte, että kaikki toimii paikallisesti? -3. Lopuksi kannatamme pyyntöjä, jotka noudattavat suositeltuja ohjeita. - - Nouditko pull-pyynnön tarkistuslistaa? - - Nimitkö pull-pyyntösi otsikon mielekkäästi? - -Et tarvitse lupaa ongelmiin, jotka on merkitty `auttaa halusi` tai `ensimmäinen ajastimet vain` kuten aiemmin selitettiin. - -Noudata ohjeita huolellisesti ja avaa pull-pyyntö. - -### Olen juuttunut asiaan, joka ei sisälly näihin asiakirjoihin. - -**Voit vapaasti pyytää apua:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Olemme innoissamme siitä, että autat sinua osallistumaan mihin tahansa aiheeseen, jonka parissa haluatte työskennellä. Voit vapaasti esittää meille kysymyksiä aiheeseen liittyvistä aiheista, ja olemme iloisia voidessamme selventää. Varmista, että etsit hakuasi ennen uuden lähettämistä. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Ole kohtelias ja kärsivällinen. Vapaaehtoistyömme ja moderaattorimme ovat aina valmiina opastamaan sinut kyselyjesi läpi. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Ylimääräinen Apu:** +**Additional Assistance:** -Jos sinulla on kysyttävää pinosta, arkkitehtuuri codebase, voit vapaasti tavoittaa meidän henkilökunta dev joukkue: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Henkilökunta | Lähetä viesti foorumissa | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | | Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | @@ -98,4 +79,4 @@ Jos sinulla on kysyttävää pinosta, arkkitehtuuri codebase, voit vapaasti tavo | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | | Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Voit lähettää sähköpostia kehittäjähenkilökunnallemme: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Finnish/_sidebar.md b/docs/i18n/Finnish/_sidebar.md index a39af876e5..1b5bda2bdc 100644 --- a/docs/i18n/Finnish/_sidebar.md +++ b/docs/i18n/Finnish/_sidebar.md @@ -1,36 +1,39 @@ -- **Aloittaminen** - - [Johdanto](index 'Osallistu freeCodeCamp.org -yhteisöön') - - [Usein Kysytyt Kysymykset](FAQ.md) -- **Koodin Rahoitusosuus** -- - [Aseta freeCodeCamp paikallisesti](how-to-setup-freecodecamp-locally.md) - - [Avaa pull-pyyntö](how-to-open-a-pull-request.md) - - [Koodaukseen liittyviä haasteita koskeva työ](how-to-work-on-coding-challenges.md) - - [Videohaasteisiin liittyvä työ](how-to-help-with-video-challenges.md) - - [Työ uutisaiheen parissa](how-to-work-on-the-news-theme.md) - - [Työskentele dokumenttien teemassa](how-to-work-on-the-docs-theme.md) -- **Valinnaiset Oppaat** - - [Saaliin lähtevät sähköpostit paikallisesti](how-to-catch-outgoing-emails-locally.md) - - [Määritä freeCodeCamp WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Lentokäsikirjat** (henkilökunta & Modit) - - [Moderaattorin Käsikirja](flight-manuals/moderator-handbook.md) - - [Vastaa Mallit](flight-manuals/using-reply-templates.md) - - [DevOPS-yleiskatsaus](devops.md) - - [Palvelimia koskeva työskentely](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Meidän Yhteisömme** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Katso, Foorumi**](https://freecodecamp.org/forum/c/contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Finnish/devops.md b/docs/i18n/Finnish/devops.md index b63880e276..46fb8b5382 100644 --- a/docs/i18n/Finnish/devops.md +++ b/docs/i18n/Finnish/devops.md @@ -1,75 +1,75 @@ -# Kehittäjän toiminta at freeCodeCamp.org +# DevOps Handbook -Tämä opas auttaa sinua ymmärtämään infrastruktuurin pino ja miten ylläpidämme alustoja. Vaikka tällä oppaalla ei ole tyhjentäviä yksityiskohtia kaikille toiminnoille, sitä voitaisiin käyttää viitteenä ymmärtääksesi järjestelmiä. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Kerro meille, jos sinulla on palautetta tai kysyttävää, ja olemme iloisia voidessamme selventää. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Miten rakennamme, testaamme ja otamme käyttöön yhteistoimintaa? +# Flight Manual - Code deployments -Tämä arkisto on jatkuvasti rakennettu, testattu ja otettu käyttöön **erilliset infrastruktuurit (Palvelimet, Tietokannat, CDN:t, jne.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Tämä edellyttää kolmea vaihetta, joita on noudatettava: +This involves three steps to be followed in sequence: -1. Uudet muutokset (sekä korjaukset että ominaisuudet) yhdistetään ensisijaiseen kehityshaaraan (`master`) pull-pyyntöjen kautta. -2. Nämä muutokset tehdään useiden automaattisten testien läpi. -3. Kun testit on suoritettu, vapautamme muutokset (tai päivitämme niitä tarvittaessa) infrastruktuuriemme käyttöönottoon. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. #### Building the codebase - Mapping Git Branches to Deployments. -Tyypillisesti [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (oletuskehityshaara) on yhdistetty [`tuotantovaiheiseen`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) haaraan kerran päivässä, ja se vapautuu erilliseen infrastruktuuriin. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Tämä on välivaiheen julkaisu kehittäjillemme ja vapaaehtoisille osallistujille. Se tunnetaan myös meidän "lavastus" tai "beeta" julkaisu. +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Se on identtinen meidän live tuotantoympäristö `freeCodeCamp.org`, muu kuin se käyttäen erillisiä tietokantoja, palvelimia, web-välityspalvelimia, jne. Tämän eristyksen avulla voimme testata jatkuvaa kehitystä ja ominaisuuksia "tuotantoa" kuten skenaario, vaikuttamatta säännöllisesti käyttäjiä freeCodeCamp.orgin pääalustoja. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Kun kehittäjätiimi [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) on tyytyväinen vaiheistusalustan muutoksiin, nämä muutokset siirretään muutaman päivän välein [`tuotanto-nykyiseen`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) -haaraan. +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -Tämä on viimeinen julkaisu, joka siirtää muutoksia freeCodeCamp.orgin tuotantoalustoihimme. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Muutosten testaus - Integraatio ja käyttäjän hyväksymistesti. +#### Testing changes - Integration and User Acceptance Testing. -Käytämme eri tasoilla integraation ja hyväksynnän testaus tarkistaa laadun koodin. Kaikki testimme tehdään ohjelmistojen kautta, kuten [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) ja [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Meillä on yksikkötestejä haasteratkaisujemme testaamiseen, palvelimen API-rajapintoihin ja asiakaskäyttöliittymiin. Nämä auttavat meitä testaamaan eri komponenttien välistä integrointia. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!HUOM] Olemme myös kirjoittamassa loppukäyttäjän testejä, jotka auttavat jäljittelemään reaalimaailman skenaarioita kuten päivittämällä sähköpostia tai soittamalla API tai kolmannen osapuolen palveluihin. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Yhdessä nämä testit auttavat estämään ongelmia toistamasta itseään ja varmistaa, emme ota käyttöön bugi työskennellessämme toisen bugin tai ominaisuuden. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Muutosten käyttöönotto - Palvelimiin tehtävien muutosten painaminen. +#### Deploying Changes - Pushing changes to servers. -Olemme konfiguroineet jatkuvan toimituksen ohjelmisto työntää muutoksia meidän kehitys- ja tuotantopalvelimet. +We have configured continuous delivery software to push changes to our development and production servers. -Kun muutokset on työnnetty suojatuille julkaisusivukonttoreille, rakenneputki laukeaa automaattisesti sivukonttorin käyttöön. Rakennusputkistot ovat vastuussa esineiden rakentamisesta ja niiden pitämisestä kylmävarastossa myöhempää käyttöä varten. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -Rakenneputki laukaisee vastaavan kaasuputken, jos se on valmis menestyksekkäästi ajettavaksi. Vapautusputkistot ovat vastuussa rakentamiseen liittyvien esineiden keräämisestä, niiden siirtämisestä palvelimille ja elämiseen. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Rakennusten ja julkaisujen tila [on saatavilla täällä](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Rakenteen, testauksen ja käyttöönoton käynnistäminen. +## Trigger a build, test and deploy -Tällä hetkellä vain kehittäjätiimin jäsenet voivat työntää tuotannon sivuliikkeisiin. Muutokset `tuotanto-*` haaroihin voivat laskeutua vain nopeasti tapahtuvan yhdistämisen kautta [`ylävirtaan`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!HUOM] Tulevina päivinä me parantaisimme tätä virtausta tekemällä pull-pyyntöjä ja parantamalla käyttöoikeuksien hallintaa ja avoimuutta. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Työstetään muutoksia vaiheistetun julkaisun sovelluksiin. +### Pushing changes to Staging Applications. -1. Määritä kaukosäätimet oikein. +1. Configure your remotes correctly. ```sh git remote -v ``` - **Tulokset:** + **Results:** ``` - origin git@github.com:raisedadead/freeCodeCamp.git (fetch) - origin git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Varmista, että `master` haara on koskematon ja synkronoitu ylöspäin. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master @@ -77,51 +77,51 @@ Tällä hetkellä vain kehittäjätiimin jäsenet voivat työntää tuotannon si git reset --hard upstream/master ``` -3. Tarkista, että Travis CI kulkee `master` -haarassa ylöspäin. +3. Check that the Travis CI is passing on the `master` branch for upstream. - Jatkuvan [integroinnin](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) testien tulee olla vihreitä ja PASSING `master` -sivuliikkeelle. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
            Tarkistetaan Travis CI -järjestelmän tilaa (kuvakaappaus) +
            Checking status on Travis CI (screenshot)
            - ![Tarkista version tila Travis CI -valmisteella](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
            - Jos tämä ei onnistu, sinun pitäisi lopettaa ja tutkia virheitä. + If this is failing you should stop and investigate the errors. -4. Vahvista että pystyt rakentamaan arkiston paikallisesti. +4. Confirm that you are able to build the repository locally. ``` - npm ajaa puhdasta ja kehittää + npm run clean-and-develop ``` -5. Siirrä muutokset `master` +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` - git checkout tuotantovaiheinen + git checkout production-staging git merge master git push upstream ``` - > [!HUOM] Et voi pakottaa työntöä ja jos olet kirjoittanut historian uudelleen joka tapauksessa nämä komennot ovat virheellisiä. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Jos he tekevät, olet ehkä tehnyt jotain väärin ja sinun pitäisi vain aloittaa alusta. + > If they do, you may have done something incorrectly and you should just start over. -Edellä mainitut vaiheet laukaisevat automaattisesti ajon rakenneputkeen `tuotantovaiheista` vastaavaa haaraa varten. Kun rakennus on valmis, artifaktat tallennetaan `.zip` tiedostoina kylmään tallennustilaan, jota haetaan ja käytetään myöhemmin. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -Vapautusputki laukeaa automaattisesti, kun siihen liitetystä rakennusputkesta on saatavilla uusi artifakti. Lavausalustoille tämä prosessi ei sisällä manuaalista hyväksyntää ja esineitä työnnetään Client CDN- ja API-palvelimille. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP·label:Arviot] Tyypillisesti rakentamiseen kuluu noin 20-25 minuuttia ja sen jälkeen julkaisuajo, joka kestää noin 15-20 min asiakkaalle, ja ~5-10 min jotta API on saatavilla suorana. Koodista työnnä olla elävänä lavastus alustoilla koko prosessi kestää yhteensä **~ 35-45 min**. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Työnnetään muutoksia tuotantosovelluksiin. +### Pushing changes to Production Applications. -Prosessi on enimmäkseen sama kuin lavastus ja muutamia lisätarkastuksia on tehty. Tämä on vain tehdä varma, emme rikkoa mitään freeCodeCamp.org joka voi nähdä satoja käyttäjiä sitä milloin tahansa. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| ÄLÄ suorita näitä komentoja, ellet ole varmistanut, että kaikki toimii lavastusalustalla. Sinun ei pitäisi ohittaa tai ohittaa mitään testausta lavastuksen yhteydessä ennen kuin jatkat eteenpäin. | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Varmista, että `tuotantovaiheinen` haara on koskematon ja synkronoitu ylöspäin. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh git checkout production-staging @@ -129,99 +129,580 @@ Prosessi on enimmäkseen sama kuin lavastus ja muutamia lisätarkastuksia on teh git reset --hard upstream/production-staging ``` -2. Siirrä muutokset `tuotantovaiheisesta` +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` - git checkout tuotantovirta - git yhdistää tuotantovaiheisen + git checkout production-current + git merge production-staging git push upstream ``` - > [!HUOM] Et voi pakottaa työntöä ja jos olet kirjoittanut historian uudelleen joka tapauksessa nämä komennot ovat virheellisiä. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Jos he tekevät, olet ehkä tehnyt jotain väärin ja sinun pitäisi vain aloittaa alusta. + > If they do, you may have done something incorrectly and you should just start over. -Edellä mainitut vaiheet laukaisevat automaattisesti ajon rakenneputkistoon `tuotantovirran` haaraa varten. Kun rakentaa artifact on valmis, se laukaisee ajaa päästöputkistossa. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIPělabel:Arviot] Tyypillisesti koontiajo kestää ~20-25 minuuttia loppuun. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Henkilöstötoimia koskevat lisätoimet** +**Additional Steps for Staff Action** -Yksi julkaisuajo on käynnistynyt, kehittäjän henkilökunnan jäsenet saavat automaattisen manuaalisen intervention sähköpostiosoitteen. He voivat joko _hyväksyä_ tai _hylätä_ julkaisuajan. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Jos muutokset toimivat hyvin ja ne on testattu vaiheistetulla alustalla, se voidaan hyväksyä. Hyväksyntä on annettava 4 tunnin kuluessa vapauttamisen alkamisesta ennen kuin se hylätään automaattisesti. Henkilökunta voi käynnistää julkaisun uudelleen manuaalisesti hylätyistä ajoista, tai odottaa seuraavaa julkaisujaksoa. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Henkilöstön käyttö: +For staff use: -| Tarkista sähköpostisi saadaksesi suoran linkin tai [siirry julkaisuhallintapaneeliin](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) sen jälkeen, kun käännöksen suoritus on valmis. | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Kun yksi henkilöstön jäsenistä hyväksyy vapauttamisen, putki ajaa muutokset elää freeCodeCamp.orgin tuotannon CDN ja API palvelimet. Ne kestävät tyypillisesti noin 15-20 min asiakkaalle, ja ~5 min API-palvelimet ovat saatavilla suorina. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP·label:Arviot] Julkaisu kestää tyypillisesti ~15-20 min jokaista asiakasta, ja ~5-10 min jokaisesta API instanssista on saatavilla livenä. Koodista työnnä ollakseen elossa tuotantoalustoilla koko prosessi kestää **~ 90-120 min** yhteensä (ei lasketa henkilöstön hyväksynnän odotusaikaa). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Koonti-, testi- ja käyttöönottotila +## Build, Test and Deployment Status -Tässä on nykyinen testi, rakentaa ja ottaa käyttöön tila codebase. +Here is the current test, build and deployment status of the codebase. -| Tyyppi | Haara | Tila | Hallintapaneeli | -|:----------------- |:-------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------- | -| CI Testit | [`mestari`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis Ci Build -tila](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Siirry tilan hallintapaneeliin](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| CI Testit | [`tuotantovaiheistus`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis Ci Build -tila](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Siirry tilan hallintapaneeliin](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Koosta Putkilinja | [`tuotantovaiheistus`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Koosteen Tila](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Siirry tilan hallintapaneeliin](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Vapauta Pipeline | [`tuotantovaiheistus`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Siirry tilan hallintapaneeliin](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| CI Testit | [`tuotantovirta`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis Ci Build -tila](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Siirry tilan hallintapaneeliin](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Koosta Putkilinja | [`tuotantovirta`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Koosteen Tila](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Siirry tilan hallintapaneeliin](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Vapauta Pipeline | [`tuotantovirta`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Siirry tilan hallintapaneeliin](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Varhainen pääsy ja beta-testaus +## Early access and beta testing -Toivotamme sinut tervetulleeksi testaamaan näitä julkaisuja **"julkisen beta-testauksessa"** -tilassa ja pääsemään varhaisessa vaiheessa käsiksi tuleviin ominaisuuksiin alustoille. Joskus näitä ominaisuuksia/muutoksia kutsutaan **seuraavaksi, beta, lavastus** jne. vaihdettaviksi. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Palautteesi palautteen ja kysymysraporttien kautta auttavat meitä tekemään tuotantoalustoja osoitteessa `freeCodeCamp. rg` lisää **joustava**, **johdonmukainen** ja **vakaa** kaikille. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Kiitämme teitä raportoinnista vikoja, joita kohtaat ja auttaa tekemään freeCodeCamp.org paremmin. Sinä rock! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Laitosten tulevan version tunnistaminen +### Identifying the upcoming version of the platforms -Tällä hetkellä julkinen beetatestaus versio on saatavilla osoitteessa: +Currently a public beta testing version is available at:

            freecodecamp.dev

            -> [!HUOM] Verkkotunnuksen nimi on erilainen kuin **`freeCodeCamp.org`**. Tämä on tarkoituksellista estää hakukoneen indeksointi ja välttää sekaannusta alustan säännöllisten käyttäjien keskuudessa. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Laitosten nykyisen version tunnistaminen +### Identifying the current version of the platforms -**Nykyinen versio alustasta on aina saatavilla osoitteessa [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -Dev-tiimi yhdistää muutokset `tuotantovaiheisesta` haarasta `tuotantovirtaan` kun ne julkaistaan muutokset. Top commit pitäisi olla mitä näet elää sivustolla. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Voit tunnistaa tarkan version joka on otettu käyttöön käymällä tila-osiossa käytettävissä olevissa rakentamis- ja käyttöönottolokeissa. Vaihtoehtoisesti voit myös ping meitä [osallistujien chat-huoneessa](https://gitter.im/FreeCodeCamp/Contributors) vahvistaa. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Tunnetut Rajoitukset +### Known Limitations -On olemassa joitakin tunnettuja rajoituksia ja kompromisseja käytettäessä beta-versiota alusta. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### Kaikki tiedot / henkilökohtainen edistyminen näillä beta-alustoilla `EI tallenneta tai siirretä` tuotantoon. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Beta-versiossa olevilla käyttäjillä on tuotannosta erillinen tili.** Beta-versiossa käytetään fyysisesti erillistä tietokantaa tuotannosta. Tämä antaa meille mahdollisuuden estää tahattomia tietojen menetyksiä tai muutoksia. dev tiimi voi tyhjentää tietokannan tämän beta-version tarpeen mukaan. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Beta-alustojen käytettävyydestä ja luotettavuudesta ei ole takeita. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Käyttöönoton odotetaan olevan yleistä ja nopeaa toistoa, joskus useita kertoja päivässä. Tämän seurauksena beta-versiossa tulee olemaan odottamattomia seisokkeja ajoittain tai rikkoutuneita toimintoja. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Älä lähetä säännöllisiä käyttäjiä tälle sivustolle korjauksen vahvistamisen mittana +- #### Do not send regular users to this site as a measure of confirming a fix - Beta sivusto on ja on aina ollut laajentaa paikallista kehitystä ja testausta, ei mitään muuta. Se ei ole lupaus siitä, mitä on tulossa, vaan väläys siitä, mitä tehdään. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### Allekirjoita sivu voi näyttää toiselta kuin tuotanto +- #### Sign page may look different than production - Käytämme testivuokralainen freecodecamp.dev Auth0, ja näin ollen ei ole kykyä asettaa mukautetun verkkotunnuksen. Tämä tekee siitä niin, että kaikki uudelleenohjatut takaisinkutsut ja kirjautumissivu näkyvät oletusverkkotunnuksella: `https://freecodecamp-dev.auth0.com/`. Tämä ei vaikuta toiminnallisuuteen on niin lähellä tuotantoa kuin voimme saada. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Raportointikysymykset ja palautteen antaminen +## Reporting issues and leaving feedback -Ole hyvä ja avaa uusia asioita keskusteluille ja vikojen raportointille. Voit merkitä ne nimellä **[`julkaisu: seuraava / beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Voit lähettää sähköpostia osoitteeseen `dev[at]freecodecamp.org` jos sinulla on kysyttävää. Kuten aina kaikki tietoturvahaavoittuvuudet tulisi ilmoittaa `tietoturvalle[at]freecodecamp.org` julkisen seurantakeskuksen ja foorumin sijaan. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

            https://amplify.nginx.com

            +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Finnish/flight-manuals/moderator-handbook.md b/docs/i18n/Finnish/flight-manuals/moderator-handbook.md deleted file mode 100644 index 282c6d17b8..0000000000 --- a/docs/i18n/Finnish/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# Virallinen freeCodeCamp Moderaattori käsikirja. - -Tämä auttaa sinua kohtaamaan eri paikkoja yhteisössämme, mukaan lukien: - -- GitHub kysymykset & pull-pyynnöt -- Foorumi, chatit, Facebook-ryhmät, ja muut online-kokouspaikat -- Henkilökohtaiset tapahtumat, kuten opintoryhmät, hackathonit ja konferenssit - -**Kaikki freeCodeCamp Moderaattorit ovat yhteisön laajuisia valvojia. Se tarkoittaa, että luotamme siihen, että valvotte mitään näistä paikoista.** - -Tämä sanoi, voit palvella moderaattorina missä tahansa paikoissa ovat eniten kiinnostusta sinua. Jotkut valvojat vain auttavat GitHubissa. Toiset vain auttaa ulos foorumilla. Jotkut valvojat ovat aktiivisia kaikkialla. - -Tärkeintä on, että haluamme sinun nauttia on moderaattori, ja sijoittaa niukka aika paikkoihin, jotka ovat kiinnostavia sinulle. - -> [!HUOM] "Suurella voimalla tulee suuri vastuu." - Setä Ben - -Moderaattorina luonteenlaatu on tärkeämpää kuin tekninen taito. - -Kuuntele. Ole Hyödyllinen. Älä käytä valtaasi väärin. - -freeCodeCamp on osallistava yhteisö, ja meidän on pidettävä se sellaisena. - -Meillä on yksi yhteinen menettelysääntö, joka hallitsee koko yhteisöämme. Mitä vähemmän sääntöjä, sitä helpommin ne muistetaan. Voit lukea nämä säännöt ja toimittaa ne muistiin [täällä](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderaattoreilla on kyky sulkea ongelmia ja hyväksyä tai sulkea pull-pyyntöjä. - -Moderaattoreilla on kaksi ensisijaista GitHubin vastuualuetta: - -1. QA 'ing and merging pull requests -2. Kysymysten arviointi ja niihin vastaaminen - -## Hallitsee Pull-pyyntöjä - -Pull Requests (PRs) are how contributors submit changes to freeCodeCamp 's repository. On tärkeää, että teemme laadunvarmistuksen (QA) vetopyyntöjen yhteydessä ennen kuin päätämme yhdistää ne tai sulkea ne. - -### Pull-pyyntöjen tyypit - -1. **Haasteohjeet Edits** Nämä ovat muutoksia tekstiin haasteiden - Kuvaus, Ohjeet tai Test Text. Voit myös tarkistaa nämä oikeudet GitHubissa ja päättää, yhdistetäänkö ne. Meidän on oltava hieman varovaisempia näiden asioiden suhteen, koska miljoonat ihmiset kohtaavat tämän tekstin, kun he työskentelevät freeCodeCampin opetussuunnitelman kautta. Tekeekö vetopyyntö tekstin selkeyden tekemättä siitä paljon pidempään? Ovatko editoinnit merkityksellisiä eikä liian pedanttisia? Muistakaa, että tavoitteenamme on, että haasteet ovat mahdollisimman selkeitä ja lyhyitä. Ne eivät ole paikka hämärtää yksityiskohtia. Rahoittajat voivat myös yrittää lisätä linkkejä resursseihin haasteisiin. Voit sulkea nämä pull-pyynnöt ja vastata niihin seuraavasti: - - > Kiitos pull pyynnöstänne. - > - > Olen päättämässä tämän vetopyynnön. Lisää linkkejä ja muita yksityiskohtia haasteen vastaavaan oppaan artikkeliin. - > - > Jos luulet, että olen väärässä tämän ongelman ratkaisemisessa, avaa se uudelleen ja lisää lisäselvennyksiä. Kiitos ja onnellinen koodaus. - -2. **Haastekoodimuokkaukset** Nämä ovat muutoksia koodiin haasteessa - Haastesiemen, Challenge Solution, Challenge and Test Strings. Nämä pull-pyynnöt on vedettävä pois GitHubista ja testattava paikallisella tietokoneella, jotta voidaan varmistaa, että haastetestit voidaan vielä läpäistä nykyisen ratkaisun avulla, ja uusi koodi ei tuo virheitä. Jotkut osallistujat voivat yrittää lisätä ylimääräisiä testejä kattamaan pedantiset kulma-tapaukset. Meidän on oltava varovaisia, ettemme tee haasteesta liian monimutkaista. Näiden haasteiden ja testien tulisi olla mahdollisimman yksinkertaisia ja intuitiivisia. Sen lisäksi, että algoritmi haasteita ja haastattelu prep osa, oppijoiden pitäisi pystyä ratkaisemaan kunkin haasteen noin 2 minuutissa. - -3. **Codebase Muutokset** Nämä koodit muuttavat freeCodeCamp alustan toiminnallisuutta. Joskus osallistujat yrittävät tehdä muutoksia ilman paljon selityksiä, mutta koodimuunnosten osalta meidän on varmistettava, että muutokselle on todellista tarvetta. Näissä pull-pyynnöissä olisi siis viitattava GitHubin olemassa olevaan asiaan, jossa keskustellaan muutoksen syistä. Sitten voit avata pull-pyynnön tietokoneellesi ja testata ne paikallisesti. Kun olet tehnyt niin, jos muutokset näyttävät hyvältä, älä yhdistä niitä vielä. Voit kommentoida pull-pyyntöä sanomalla "LGTM", sitten mainita @raisedadead jotta hän voi katsoa lopullisesti. - -### Kuinka yhdistää tai sulkea pull-pyynnöt - -Ensinnäkin, kun valitset pull-pyynnön QA:lle, sinun pitäisi antaa itsesi siihen. Voit tehdä tämän klikkaamalla "Määritä itse" -linkkiä GitHubin käyttöliittymän oikean käden sarakkeen "Osoittajat" -osan alapuolella. - -Riippuen pull-pyynnön tyypistä se on, noudata vastaavia sääntöjä edellä. - -Ennen kuin yhdistät pull-pyynnön, varmista, että GitHubissa on vihreät tarkistusmerkit kaikille. Jos on mitään X: n, tutkia ensin ja selvittää, miten saada heidät muuttumaan vihreiksi tarkistusmerkeiksi ensin. - -Joskus syntyy ristiriita yhdistämisestä. Tämä tarkoittaa sitä, että toinen pull-pyyntö on muuttanut saman tiedoston täsmälleen samaa osaa. GitHubilla on työkalu näiden yhdistettyjen konfliktien ratkaisemiseen GitHubissa. Voit yrittää käsitellä näitä konflikteja. Käytä vain parasta harkintaasi. Pall-pyynnön muutokset tulevat olemaan päällä, ja Mestarihaaran muutokset tulevat olemaan alhaalla. Joskus siellä on turhia tietoja, jotka voidaan poistaa. Ennen kuin lopetat , muista poistaa `<<<<<<`, `=======`, ja `>>>>>>` että Git lisää selkkausalueita. - -Jos pull-pyyntö näyttää olevan valmis yhdistämään (ja ei vaadi hyväksyntää @raisedadead), voit yhdistää sen. Varmista, että käytät GitHubissa oletuksena "Squash and Merge". Tämä poistaa kaikki pull-pyynnöt ja sitoutuu yhteen sitoumukseen, mikä tekee Gitin historiasta paljon helpompaa lukea. - -Sen jälkeen sinun pitäisi kommentoida pull pyyntöä, kiittämällä osallistujaa omalla henkilökohtaisella tavallaan. - -Jos pull-pyynnön laatija on "ensimmäistä kertaa osallistuja", sinun tulisi myös onnitella heitä heidän ensimmäisestä yhdistetystä pull-pyynnöstä arkistoon. Voit katsoa PR: n kehon yläkulmaan määrittääksesi ensimmäisen kerran osallistujan oikealle. Se näyttää `Entinen osallistuja` alla esitetyllä tavalla: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp◄ 690x281](https://i.imgur.com/dTQMjGM.png) - -Jos pull-pyyntö ei näytä valmiilta yhdistämiselle, voit kohteliaasti vastata kirjoittajalle, mitä heidän pitäisi tehdä saadakseen sen valmiiksi. Toivottavasti he vastaavat ja saavat vetopyyntönsä lähemmäs valmiita. - -Usein vetopyyntö tulee olemaan tietenkin vähäinen. Voit usein kertoa tämän välittömästi, kun avustaja ei häiritse valintaruutujen tarkistamista Pull Request -mallissa, tai käyttää yleistä pull-pyynnön otsikkoa kuten "tehdyt muutokset" tai "Update index. d". - -On myös tilanteita, joissa osallistuja yrittää lisätä linkin omaan verkkosivustoonsa, tai sisällyttää itse luomansa kirjaston tai on kevyt muokkaus, joka ei auta ketään muuta kuin itseään. - -Molemmissa tilanteissa sinun pitäisi mennä eteenpäin ja sulkea niiden pull pyyntö ja vastata tällä standardiviestillä: - -> Kiitos tämän pull-pyynnön avaamisesta. -> -> Tämä on tavallinen viesti, joka ilmoittaa sinulle, että olemme arvioineet pull-pyyntösi ja päättäneet olla yhdistämättä sitä. Olisimme tyytyväisiä, jos teiltä vaadittaisiin tulevia pyyntöjä. -> -> Kiitos ja onnellinen koodaus. - -Jos tarvitset toisen lausunnon pull-pyynnöstä, mene eteenpäin ja jätä kommenttisi pull-pyyntöön sitten lisää "discussing" etiketti pull pyyntöön. - -## Moderoidaan GitHubin Ongelmia - -freeCodeCamp on aktiivinen avoimen lähdekoodin projekti. Saamme joka päivä uusia kysymyksiä, jotka on ratkaistava ja varustettava merkinnällä. - -### GitHubin ongelmien tyypit - -1. **Code Help Requests**, jotka ihmiset ovat virheellisesti luoneet GitHub ongelmia. Jos joku pyytää apua, liitä seuraava viesti, sulje asia. - - > Kiitos, että ilmoititte tästä asiasta. - > - > Tämä on tavallinen viesti, joka ilmoittaa sinulle, että tämä ongelma näyttää olevan avunpyyntö. Sen sijaan, että pyytäisit apua tästä, klikkaa \*\*"Ohje"\*\* painiketta freeCodeCampin haasteessa, joka auttaa sinua luomaan kysymyksen oikeassa osassa foorumi. Foorumin vapaaehtoiset yleensä vastaavat kysymyksiin muutaman tunnin sisällä ja voivat auttaa määrittämään, onko koodisi tai haasteesi testeissä jokin ongelma. - > - > Jos foorumin jäsenet päättävät, ettei koodissasi ole mitään vikaa, voit pyytää tämän ongelman avaamista uudelleen. - > - > Kiitos ja onnellinen koodaus. - -2. **Virhe- tai selvennysongelmat** Yritä toistaa vika itse, jos voit. Jos ei, pyydä heitä vaiheet jäljentää vika, ja onko heillä mitään kuvakaappauksia, videoita, tai lisätietoja, jotka voivat auttaa sinua jäljentämään ongelman. Kun voit jäljentää ongelman - tai ainakin vahvistaa se legit kysymys - etiketti `vahvistettu`. Sitten: - -- Jos se on yksinkertainen muutos olemassa olevaan haasteeseen, etiketti `ensimmäinen ajastimet vain`, muuten etiketti `auttaa halusi`. Käytetään tarvittaessa muita merkintöjä. -- Jos ongelma on merkittävämpi, lippu `virheenä`.   Jos ei ole mitään epäselvyyttä siitä, oikea toimintatapa asiassa, voi vapaasti tag @raisedadead asiasta saada hänen mielipiteensä siitä, sitten lisätä `Keskustele` etiketti. - -3. **Kaksoiskappaleet** Jos liikkeeseenlasku on sama kuin toinen ilmoitettu liikkeeseenlasku, aiemmin ilmoitetun liikkeeseenlaskun tulisi olla etusijalla. Merkitse nimellä `Kahdenna`, liitä seuraava viesti korvaamalla `#XXXXX` viitenumerolla ja sulje sitten ongelma. - - > Kiitos, että ilmoititte tästä asiasta. - > - > Tämä on normaali viesti ilmoittaa, että tämä ongelma näyttää olevan hyvin samanlainen kuin ongelma #XXXXX, Joten olen sulkemassa sen kahtena kappaleena. - > - > Jos luulet, että olen väärässä tämän ongelman ratkaisemisessa, avaa se uudelleen ja lisää lisäselvennyksiä. Kiitos ja onnellinen koodaus. - -4. **Vaihtelevassa versiossa** Joitakin ongelmia on ehkä jo korjattu vaiheistetussa versiossa, mutta niihin ei liity GitHub-ongelmaa. Jos näin on, voit liittää seuraavan viestin, sulkea ongelman ja lisätä `tila: ratkaistu/toimitus` etiketti: - - > Kiitos, että ilmoititte tästä asiasta. - > - > Tämä on tavallinen viesti, joka ilmoittaa sinulle, että täällä mainittu ongelma on läsnä tuotannossa, mutta että se on jo vahvistettu vaiheittain. Tämä tarkoittaa sitä, että seuraavalla kerralla viemme lavastusta tuotantoa, tämä ongelma pitäisi korjata. Tämän vuoksi lopetan tämän asian. - > - > Jos luulet, että olen väärässä tämän ongelman ratkaisemisessa, avaa se uudelleen ja lisää lisäselvennyksiä. Kiitos ja onnellinen koodaus. - -### Stale, vanhentunut, passiiviset kysymykset ja Pull-pyynnöt - -- Stale Issues tai PRs ovat ne, jotka eivät ole nähneet mitään toimintaa toimenpideohjelmasta 21 päivän ajan (3 viikon kuluttua viimeisestä toiminnasta), mutta vasta kun moderaattori on pyytänyt lisää tietoa/muutoksia. Ne voidaan sulkea automatisoidulla / botin skriptillä tai moderaattorit itse. - -- Toiminta määritellään seuraavasti: Kommentit, joissa pyydetään päivitystä PR:ään ja matkoihin, kuten `status: päivitystä tarvitaan` etiketti jne. - -- Jos toimintaohjelma pyytää lisäapua tai -aikaa, edellä mainittua voidaan lieventää ja tarkistaa vastauksen antamisen jälkeen. Joka tapauksessa modeissa olisi käytettävä parhaita arvioita jäljellä olevan PR:n aseman ratkaisemiseksi. - -### Muut ohjeet Moderaattoreille GitHubissa - -Vaikka sinulla on kirjoitusoikeudet freeCodeCampin repoon, **sinun ei pitäisi koskaan pushata koodia suoraan freeCodeCamp repoihin**. Kaikkien koodien pitäisi syöttää freeCodeCampin koodaus arkiston haarautuneen pull-pyynnön muodossa. @ info: whatsthis - -Sinun ei myöskään pitäisi koskaan hyväksyä omia PR-ohjeita. Niiden täytyy olla QA toinen moderaattori, aivan kuten mikä tahansa muu PR. - -Jos huomaat joku rikkoo [käytännesääntöä](https://code-of-conduct.freecodecamp.org) GitHub kysymyksiä, tai avaamalla pull-pyyntöjä ilkivaltaisella sisällöllä tai koodilla, sähköposti dev@freecodecamp. rg linkillä rikkoneen pull-pyyntöön ja voimme harkita niiden kieltämistä freeCodeCampin GitHub organisaatiosta kokonaan. - -# Foorumin muokkaaminen - -Moderaattorina autat pitämään yhteisömme nautinnollisena paikkana, jossa kuka tahansa oppii ja saa apua. Käytte käsiksi liputettuihin viesteihin ja käsittelette roskapostia, aiheettomia ja muita sopimattomia keskusteluja. - -Huomaa, että kun olet moderaattori foorumilla, voit alkaa nähdä sinisen moderaattorin vihjeitä foorumin jäsenistä, kuten "tämä on ensimmäinen kerta [person] on lähetetty - tervetuloa ne yhteisöön! tai "[person] ei ole lähetetty pitkään aikaan - tervetuloa heidät takaisin." - -![Sininen tekstiviesti, joka sanoo "tämä on ensimmäinen kerta [person] on lähetetty - tervetuloa ne yhteisöön!](https://i.imgur.com/mPmVgzK.png) - -Nämä ovat mahdollisuuksia toivottaa heidät tervetulleeksi ja saada heidät tuntemaan erityisen. Et koskaan tiedä, kuka henkilö joka on marginaalisesti mukana voi tulla meidän seuraava super-auttaja, auttaa monia muita ihmisiä heidän koodausmatkallaan. Jopa pienin ystävällisyys voi laukaista kaskadi hyviä tekoja. - -### Foorumin viestien poistaminen - -Foorumin valvojilla on kyky poistaa käyttäjän viestit. Sinun tulee tehdä tämä vain seuraavissa tapauksissa: - -1. Joku on julkaissut pornografisen tai graafisesti väkivaltaisen kuvan. -2. Joku on julkaissut linkin tai koodin, joka on haitallinen luonnossa, ja voi vahingoittaa muita leiriläisiä, jotka klikkaavat sitä. -3. Joku on tulvannut lankaan, jossa on paljon roskapostiviestejä. - -### Roskapostin käsittely - -Jos haluat ensimmäisen roskapostin käyttäjälle, lähetä heille viesti ongelman selvittämisestä ja poista linkki tai viesti tarpeen mukaan. Jätä muistiinpano käyttäjän profiiliin selittäen mitä olet tehnyt. Jos ongelma jatkuu, seuraa yllä olevaa prosessia. Hiljaisesti estä käyttäjä lähettämästä (käyttämällä käyttäjän hallintapaneelissa olevaa hiljaisuusmahdollisuutta) ja lähetä sitten varoitus Code of Conductin avulla. Tarkista yksityisviestissä oleva ruutu, joka osoittaa, että viestisi on "virallinen varoitus". - -Voit esittää kysymyksiä ja raportoida tapahtumista [henkilökunta foorumi -osiossa](https://forum.freecodecamp.com/c/staff). - -### Keskustelujen käsittely aiheettomissa keskusteluissa - -Viestit tai aiheet, jotka näyttävät olevan väärässä paikassa, voidaan luokitella uudelleen tai nimetä uudelleen mille tahansa sopivaksi. - -Poikkeuksellisissa olosuhteissa voi olla asianmukaista, että moderaattori haaraa keskustelua useisiin säikeisiin. - -Jos sinulla on vielä ongelmia tai kysymyksiä, tee viesti toiminnallasi henkilöstökategoriassa, ja merkitse toinen moderaattori, jos haluat heidän tarkistavan moderointitoiminnot. - -### Alaikäiset Käyttäjät - -Meidän Käyttöehdot edellyttää, että freeCodeCamp käyttäjät ovat vähintään 13-vuotiaita. Siinä tapauksessa, että käyttäjä paljastaa, että he ovat alle 13-vuotiaita, lähetä heille alla oleva viesti ja poista heidän foorumitili (jos poisto ei ole käytettävissä, tilin keskeyttäminen riittää). Sitten sähköposti [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) tai [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) poistaa käyttäjän freeCodeCamp tili samoin. - -```markdown -SUBJECT: Alle 13-vuotiaat käyttäjät eivät saa käyttää foorumia per käyttöehdot - -On tullut tietoomme, että olet alle 13-vuotias. Per [freeCodeCamp käyttöehdot](https://www.freecodecamp.org/news/terms-of-service), sinun on oltava vähintään 13-vuotias käyttääksesi sivustoa tai foorumia. Aiomme poistaa sekä freeCodeCamp tilin ja foorumi tili. Tämä rajoitus pitää meidät Yhdysvaltojen lainsäädännön mukaisina. - -Liity uudelleen heti, kun olet saavuttanut vähintään 13 vuotta. - -Kiitos ymmärtäväisyydestänne. -``` - -# Valvotaan Facebookia - -Jos näet jotain, joka näyttää rikkovan meidän [Code of Conduct](https://code-of-conduct.freecodecamp.org/), sinun pitäisi poistaa se välittömästi. - -Joskus ihmiset julkaisevat asioita, joita he pitävät hauskana. He eivät ymmärrä, että mitä he sanoivat tai mitä he jakavat, voitaisiin tulkita loukkaavaksi. Näissä tapauksissa heidän virkansa pitäisi poistaa, mutta sen lähettänyt henkilö ei välttämättä tarvitse kieltää. Saattamalla heidät poistetaan, he toivottavasti tulevat ymmärtämään, että se, mitä he lähettivät oli sopimaton. - -Mutta jos kyseessä on suurenmoinen rikos, jota ei voida kohtuudella katsoa kulttuurisen eron tai englantilaisen kielen väärinkäsityksen perusteella, sitten sinun pitäisi harkita voimakkaasti estää jäsenen Facebook-ryhmästä. - -# Hallitsee Discordia - -Näin moderaattorit käsittelevät meidän [Code of Conduct](https://code-of-conduct.freecodecamp.org/) Discordissa: - -1. **Varmista, että se oli tarkoitus rikkoa käytännesääntöjä.** Kaikkia käytännesääntöjen rikkomuksia ei ollut tarkoitettu sellaisenaan. Uusi kamera saattaa lähettää suuren määrän koodia apuun, tietämättä, että tätä voidaan pitää roskapostina. Näissä tapauksissa voit vain pyytää heitä liittämään koodinsa esimerkiksi Codepenin tai Pastebinin palveluihin. - -2. **Jos leirintäalue rikkoo selvästi käytännesääntöjä, moderaattori toimii seuraavasti:** - -- Keskeytä loukkaava leirintäalue, mutta älä varoita tai uhkaa heitä. Sen sijaan, hiljaa antaa heille keskeytetty rooli Discordissa, sitten lähettää heille seuraava viesti: - -``` -Tämä on normaali viesti ilmoittaa sinulle, että minun piti tilapäisesti keskeyttää puhuminen freeCodeCamp Discord-palvelimella. - -Olen moderaattori, joka toimii avoimen lähdekoodin yhteisömme puolesta. Voin harkita poistamalla suspensio, mutta minun täytyy sinun tehdä seuraavat 3 vaiheet ensin: - -1. Lue toimintaohjeemme: https://code-of-conduct.freecodecamp.org/ -2. Viesti minulle takaisin vahvistaa, että olet lukenut sen. -3. Selitä minulle, miksi luulet keskeyttäneeni teidät, ja miksi minun pitäisi poistaa suspensio. -``` - -- Raportoi lyhyt yhteenveto tapahtumasta ja miten se vastasi siihen #admin kanava. Tässä on esimerkki siitä, mitä tällainen yhteenveto voisi näyttää: - -``` -Keskeytetty: _@username_ -Syy(t): _Spamming, trolling_ -Näyttö: _Yksi tai useampi linkki rikkoneille viesteille_ -CoC: _Sent_ -``` - -- Suspensiosta poistamista koskevan raportin pitäisi olla seuraavanlainen: - -``` -Olen poistanut jousituksen kohteesta ` @username `. Olen lähettänyt heille käytännesäännöt. He tajusivat juuri tänään, että heidät keskeytettiin ja he pyysivät anteeksi. -``` - -- Rikoksentekijöiden vastauksen perusteella moderaattori päättää, poistaako tämä keskeytyksen rikoksentekijästä. Jos ne vaikuttavat kunnioittavilta ja anteeksipyynnöiltä, moderaattori voi poistaa keskeytyksen. Politiikan alalla moderaattorit ovat tämän prosessin aikana kohteliaita riippumatta siitä, kuinka huonosti rikoksentekijä on käyttäytynyt. Jos he eivät ole kunnioittavia tai haluttomia hyväksymään osallistujakeskuspankkia, keskeyttämistä on noudatettava kieltämällä se Discord-palvelimelta. Käytä samaa yhteenvetoa kuin edellä, mutta korvaa "Keskeytetty:" "Kielletty:". - -3. **Miten kieltää ja / tai unban** - -- Estääksesi jonkun klikkaa oikeaa käyttäjänimeä/profiilikuvaa ja valitse "Ban ". Sinulle annetaan mahdollisuus poistaa heidän aiemmat viestit - valitse "Älä poista mitään", koska viestien olisi pysyttävä läsnä historiallisen ennätyksen. -- Jos päätät kieltää joku, se tarkoittaa, että he eivät halua noudattaa käytännesääntöjämme. Sen vuoksi kameran kieltämistä pitäisi harvoin poistaa. Kuitenkin, jos tarvetta ilmenee, voit tehdä sen klikkaamalla palvelimen nimeä, valitsemalla "Palvelimen asetukset", Valitsemalla "Bans", valitsemalla käyttäjän, jonka haluat kumota, ja klikkaamalla "Peruuta Ban". - -Discord Bans are global - et voi kieltää käyttäjää tietyltä kanavalta vain koko palvelimelta. - -4. **Poistetaan viestejä** Moderaattoreilla on kyky poistaa viestejä Discordissa. Niiden olisi käytettävä tätä mahdollisuutta vain neljässä hyvin erityisessä tilanteessa: - -- Joku on julkaissut pornografisen tai graafisesti väkivaltaisen kuvan. -- Joku on julkaissut linkin tai koodin, joka on haitallinen luonnossa, ja voi vahingoittaa muita leiriläisiä, jotka klikkaavat sitä. -- Joku on tulvannut chatin paljon roskapostia niin äärimmäisessä määrin (yleensä mukana botteja) kuin tehdä chatista täysin käyttökelvoton. -- Joku on julkaissut mainoksia ja / tai itseään edistävän viestin / kuvan (sosiaalinen media). - -Kaikissa muissa tilanteissa - jopa tilanteissa, joissa käytännesääntöjä rikotaan - Moderaattoreiden ei pitäisi poistaa viestiä, koska ne ovat tärkeä historiallinen ennätys. Kun poistat viestin, varmista, että otat siitä ensin kuvakaappauksen! Kuvakaappaus voidaan kirjata #mod-log kanavalla, mutta #activity-loki riittää sanoa, että todisteet oli "poistettu johtuen arkaluontoinen sisältö". Huomautus: Jos viesti sisältää materiaalia, joka olisi laitonta ottaa kuvakaappauksen, kopioi viestin linkki sen sijaan - anna viesti linkki @raisedadead lähettää eteenpäin Discordin Luottamus ja Turvallisuustiimiin. - -5. **Älä käytä @everyone tai @here** Älä käytä @everyone tai @here missään olosuhteissa! Jokainen yksittäinen henkilö tuossa chat-huoneessa saa ilmoituksen. Joissakin tapauksissa kymmeniä tuhansia ihmisiä. Sen sijaan, jos haluat ihmisten näkevän ilmoituksen, voit kiinnittää sen kanavalle, jotta kaikki voivat lukea sen. - -6. **Älä uhkaa kieltää tai keskeyttää** Jos kamera rikkoo käytännesääntöä, eivät uhkaile kieltää tai keskeyttää niitä, eivätkä koskaan varoita niitä julkisesti. Sen sijaan keskustele heidän kanssaan yksityisesti tai lähetä heille DM ja anna keskeyttäminen (jokaista edellä mainittua protokollaa). Kenenkään muun tuossa kanavassa ei tarvitse tietää, että kieltäisit / keskeytit henkilön - leiriläiset voivat nähdä tiivistelmän #activity-log -kanavalla, jos he haluavat pitää kiinni näistä tiedoista. Jos rikkomus oli selvästi tahaton eikä oikeuta keskeyttämistä tai yksityistä keskustelua, tehdä loukkaantunut camper tietoinen hänen / hänen toimintansa tekemättä se törmännyt varoituksen. Esimerkiksi: - -- Camper viestit koodin seinään pyytää apua - - Moderaattori: @username Ole hyvä ja käytä Codepenia tai Pastebinia, kun lähetät suuria määriä koodia. - -- Tai jos sinun täytyy todella selittää, miksi: - - Moderaattori: @username Ole hyvä ja käytä Codepenia tai Pastebinia, kun lähetät suuria määriä koodia, koska se häiritsee kaikkien välistä keskustelua ja sitä voidaan pitää roskapostina käytännesääntöjen mukaisesti. - -- Käytännesääntöjen lievät ja tahattomat rikkomukset - - Moderaattori: Tämä on ystävällinen muistutus kaikille noudattaa käytännesääntöä: https://code-of-conduct.freecodecamp.org/ - -7. **Älä kerskaile olla valvoja** Älä näe itseäsi yhteisön yläpuolella. Sinä olet yhteisö. Ja yhteisö on luottanut siihen, että autat suojelemaan jotain harvinaista jota me kaikki jaamme - _toivottaa tervetulleeksi_ paikka uusille kehittäjille. Jos kehuskelee siitä, että moderaattori, ihmiset voivat tuntea levottomuutta ympärilläsi, samalla tavalla, että ihmiset voivat tuntea levottomuutta noin poliisi, vaikka he eivät tee mitään väärää. Tämä on vain ihmisluontoa. - -8. **Älä ole ristiriidassa muiden valvojien** Jos olet eri mieltä moderaattorin toiminnasta, juttele heidän kanssaan yksityisesti tai tuo se esille #mod-chat-kanavalla. Älä koskaan ohita kieltoa äläkä koskaan ole ristiriidassa muiden valvojien kanssa julkisesti. Sen sijaan keskustele moodikysymyksistä ja vakuuta moderaattori, että heidän pitäisi itse kääntää kielensä tai muuttaa näkemystään. Muista: olemme kaikki samassa joukkueessa. Haluamme arvostaa moderaattoreiden roolia ja esittää yhtenäisen rintaman. - -9. **Keskustele muiden valvojien kanssa** Meillä on tilaa vain valvojille. Käytä sitä! Jos tunnet olosi epämiellyttäväksi siitä, miten käsitellä tiettyä tilannetta, kysy muilta valvojilta apua. Jos luulet, että jostakin pitäisi keskustella, tehkää se. Olet osa tiimiä ja arvostamme jokaisen tiimin jäsenen panostusta! Vaikka olisitte täysin eri mieltä joistakin näistä suuntaviivoista tai käytännesäännöistä! - -10. **Tilapäisesti passiivinen** Jos et ole aktiivinen Moderaattorina jonkin aikaa lomailun vuoksi, sairaus tai jokin muu syy, varmista, että kerrot muille #mod-chat-kanavassa. Tämä on niin tiedämme, jos voimme luottaa siihen, että voit olla säännöllisesti aktiivinen palvelimella tai ei. - -# Miten tulla moderaattori - -Jos autat ihmisiä yhteisössä johdonmukaisesti ajan mittaan, meidän Moderaattori Team lopulta huomaa, ja yksi heistä mainitsee sinut mahdollisena moderaattorina [meidän henkilökunta](https://forum.freecodecamp.org/g/Team). Ei ole pikakuvakkeita tulossa moderaattori. - -Jos olet hyväksytty, lisäämme sinut meidän Moderaattori Joukkueet [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [foorumi](https://forum.freecodecamp.org/g/moderators), jne. - -> [!HUOM] > **GitHubille:** Kun sinut on hyväksytty moderaattoriksi, saat Github repo kutsun. Sinun täytyy suunnata kohti [freeCodeCamp GitHub Organisation Kutsu](https://github.com/orgs/freeCodeCamp/invitation) jotta voit hyväksyä kutsu. Tämä on tarpeen, jotta voimme antaa sinulle kirjoitusoikeudet joihinkin arkistoihimme. - -# Miten me eläkkeelle passiiviset moderaattorit - -Huomioithan, että poistamme usein modeja, jotka luulemme olevan epäaktiivisia. Kun teemme näin, lähetämme seuraavan viestin: - -> Tämä on tavallinen viesti, joka ilmoittaa sinulle, että: koska et näytä olleen aktiivinen valvoja viime aikoina, me poistamme sinut meidän Moderaattori joukkue. Arvostamme suuresti apuanne menneisyydessä. - -> Jos luulet että teimme tämän virheen, tai kun olet valmis tulemaan takaisin ja edistää enemmän, vastaa vain tähän viestiin ja kerro minulle. - -# Miten meidän Kehittäjien huone toimii - -Kuka tahansa on tervetullut [Kehittäjien huoneeseen Discordissa](https://discord.gg/KVUmVXA). Se on nimetty chat-huone moderaattoreille ja muille leiriläisille, jotka ovat mukana yhteisössämme millä tahansa tavalla, myös valmisteluryhmien kautta. - -Oletuksemme on, että osallistujat lukevat tässä huoneessa mitään, mikä suoraan mainitsee heidät `@käyttäjätunnuksella`. Kaikki muu on vapaaehtoista. Mutta voit lukea mitä tahansa virkaa siellä ja vuorovaikutuksessa. - -# Sotilaiden kanssa asiointi - -Sinua saattavat lähestyä organisaatiot, jotka haluavat kumppanin tai yhteisbrändin kanssa freeCodeCamp jollakin tavalla. Kun tajuat, että tämä on mitä he ovat jälkeen, lakatkaa puhumasta heille ja kertokaa heille sähköpostia quincy@freecodecamp.org. Hän saa koko ajan tällaisia ehdotuksia ja pystyy parhaassa asemassa arvioimaan, onko tällainen suhde yhteisömme arvoinen (ja se on harvinaista). - -# Terveyteen liittyvien (mentaalisten) tutkimusten käsittely - -Saatat törmätä tilanteisiin, joissa käyttäjät hakevat lääkärinhoitoa tai käsittelevät mielenterveyskysymyksiä ja etsivät tukea. Politiikan osalta teidän pitäisi välttää puhumasta näistä asioista yksityisesti. Jos tilanne jossain vaiheessa heijastaa takaisin fCC:hen, haluamme käydä keskustelun (keskustelut) kirjaa. Tee selväksi, että emme ole lääketieteen ammattilaisia ja että rohkaiset käyttäjää löytämään ammattitaitoista apua. Niin vaikeaa kuin se joskus voi olla, välttää antamasta vinkkejä tai neuvoja muu kuin osoittaa käyttäjä suuntaan ammattimaista apua! - -Jos näin tapahtuu Discordissa: Keskeytä käyttäjä. Tämä ei ole rangaista heitä! Käyttäjän keskeyttäminen luo yksityisen kanavan, joka on käytettävissä vain käyttäjän ja tiimin kautta. Tämä hyödyttää sekä käyttäjää että fCC:tä monella tavalla: - -- Käyttäjä on taattu jonkin verran yksityisyyttä -- Julkinen keskustelu ei enää häiriinny -- Muut tiimin jäsenet voivat pitch in, jos olet epämukava käsitellä tilannetta itse - -> [!HUOM] Käyttäjän keskeyttäminen antaa heille viestin käytännesääntöjen lukemisesta. Varmista, että kerrot käyttäjälle, että keskeytit heidät antamaan heille yksityisyyttä ja että heitä ei rangaista. Tämä on hyvin tärkeää! Haluamme ehdottomasti välttää antamasta käyttäjille ajatusta siitä, että heitä rangaistaan siitä, että he saavat apua! - -Jos uskot, että käyttäjä pystyy liittymään uudelleen yhteisöön, napsauta hiiren oikealla puolella olevaa kanavaa ja kopioi ID. Laita seuraava viesti #mod-lokiin: - -> Terveydenhuollon viiteohjeet: - -Sen jälkeen voit poistaa Suspension käyttäjältä niin kuin normaalisti. - -Hyödyllisiä URL-osoitteita: - -http://www.suicide.org/international-suicide-hotlines.html - -# Vapaata puhetta koskeva merkintä - -Joskus ihmiset puolustavat jotain loukkaavaa tai sytyttävää, jota he sanoivat "vapaana puheena." - -Tämä XKCD-sarjakuva tiivistää täydellisesti useimpien yhteisöjen ajatukset vapaasta puheesta. Joten jos joku puolustaa jotain, he sanovat "vapaa puhe" vapaasti lähettää sen heille. - -
            - -Kiitos tämän lukemisesta, ja kiitos kehittäjäyhteisön auttamisesta! diff --git a/docs/i18n/Finnish/flight-manuals/using-reply-templates.md b/docs/i18n/Finnish/flight-manuals/using-reply-templates.md deleted file mode 100644 index fc32183895..0000000000 --- a/docs/i18n/Finnish/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Käyttämällä Vastausmalleja - -Nämä ovat joitakin standardi vastausmalleja, joita voit käyttää arvioitaessa pull-pyyntöjä ja triaging kysymyksiä. - -> Voit tehdä oman GitHubin sisäänrakennetulla [**Tallennetulla vastauksella**](https://github.com/settings/replies/) ominaisuudella tai käyttää alla olevia ominaisuuksia. - -### Kiitos sinulle - -```markdown -Kiitos teidän panoksestanne tälle sivulle! 👍 -Hyväksymme mielellämme nämä muutokset ja odotamme innolla tulevia maksuja. 🎉 -``` - -### Kiitos ja onnittelut - -> Kiitokset ja rohkaisevat ensikertalaisia osallistujia. - -```markdown -Hei @username Onnea ensimmäiseen pull-pyyntöösi (PR)! 🎉 - -Kiitos panoksestasi sivulle! 👍 -Hyväksymme mielellämme nämä muutokset ja odotamme innolla tulevia maksuja. 📝 -``` - -### Virhe Koosta - -```markdown -Hei @username - -Haluaisimme saada muutokset yhdistettyä, mutta näyttää siltä, että Travis CI:n rakentamisessa on virhe. ⚠️ - -Kun ratkaiset nämä ongelmat, voimme tarkistaa PR-palvelusi ja yhdistää sen. 😊 - ---- - -> Voit vapaasti viitata [Style guide for writing articles](https://github. om/freeCodeCamp/freeCodeCamp#article-title) tälle repolle artikkelin muotoillessa oikein, joten Travis CI build passes. :white_heavy_check·: -> -> Myös GitHubissa on hyvä käytäntö kirjoittaa lyhyt kuvaus muutoksistasi PR:n luomisessa. 📝 -``` - -### Synkronoidaan Forkia - -> Kun PR ei ole ajan tasalla `master` -haaran kanssa. - -``````markdown -Hei @username - -Haluaisimme saada muutokset yhdistettyä, mutta näyttää siltä, että Travis CI:n rakentamisessa on virhe. ⚠️ - -```bash -Virhe: ENOTDIR: ei hakemisto, avaa 'src/pages/java/data-abstraction/index.md' -`````` - -Tämä virhe ei johtunut tiedostostasi, vaan se oli vanha virhe, jonka aiheutti viallisen koodin yhdistäminen `master` -haaraan. Se on sittemmin ratkaistu. - -Jotta voit siirtää rakennuksen, sinun täytyy synkronoida viimeisimmät muutokset `freeCodeCamp/freeCodeCamp` repo-sovelluksen `master` -haarasta. - -Komentorivin avulla voit tehdä tämän kolmella helpolla vaiheella: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -Jos käytät käyttöliittymää, voit yksinkertaisesti `Lisää uusi kaukosäädin...` ja käytä linkkiä `git://github.com/freeCodeCamp/freeCodeCamp.git` ylhäältä. - -Kun synkronoit haarukkasi ja läpäisyt rakennuksen, Pystymme arvioimaan PR:äsi ja yhdistämään sen. 😊 - ---- - -> Voit vapaasti viitata [Synkronoida haarukan](https://help.github.com/articles/syncing-a-fork/) artikkelin GitHubissa saadaksesi lisätietoa siitä, miten haarukkisi pidetään ajan tasalla yläjuoksuarkiston kanssa. 🔄 -> -> GitHubissa on myös hyvä käytäntö kirjoittaa lyhyt kuvaus muutoksistasi PR:n luomisessa. 📝 -`````` - -### Konfliktien yhdistäminen - -> Kun PR:ssä on yhdistetty ristiriitoja, jotka on ratkaistava.1 - -````markdown -Hei @username - -Haluaisimme yhdistää muutoksesi, mutta näyttää siltä, että sinulla on joitakin yhdistämisristiriitoja. ⚠️ - -Kun ratkaiset nämä ristiriidat, pystymme tarkistamaan PR-palvelusi ja yhdistämään sen. 😊 - ---- - -> Jos et tunne yhdistämisprosessia, voit vapaasti katsoa GitHubin oppaan ["Yhdistää konfliktin ratkaiseminen"](https://helpp. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> Myös GitHubissa on hyvä käytäntö kirjoittaa lyhyt kuvaus muutoksistasi PR:n luomisessa. 📝 -`````` -1 Jos ensimmäisen kerran maksajalla on fuusio-konflikti, ylläpitäjät ratkaisee konfliktin heille. - -### Duplicate - -> Kun PR-arvo on toistuva tai kaksoiskappale. - -```markdown -Hei @username - -Näyttää siltä, että vastaavat muutokset on jo hyväksytty aiemmin tässä artikkelissa, jota olet muokkaamassa. 😓 - -Jos sinulla on enemmän lisättävää, ota rohkeasti käyttöön uusi PR. - -Kiitos vielä kerran! 😊 - ---- - -> Jos sinulla on kysyttävää, ota rohkeasti yhteyttä [Gitter]kautta [Gitter] (https://gitter.im/FreeCodeCamp/Contributors) tai kommentoimalla alla. 💬 -``` - -### Suljetaan virheellisiä pull-pyyntöjä - -> Kun PR on virheellinen. - -```markdown -Hei @username - -Et ole lisännyt mitään sisältöä, Sulemme tämän PR:n ja merkitsemme sen `virheelliseksi`. :downcast_face_with_hikinen: - -Voit kuitenkin avata toisen PR:n! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Finnish/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Finnish/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index ddeae2488b..0000000000 --- a/docs/i18n/Finnish/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,481 +0,0 @@ -# Flight Manual for working on Virtual Machines - -Henkilöstön jäsenenä tai dev-ryhmän jäsenenä Sinulle on ehkä annettu pääsy pilvipalvelujen tarjoajiin, kuten Azure, Digital Ocean, jne. - -Tässä muutamia käteviä komentoja, joita voit käyttää virtuaalikoneisiin (VM), esimerkiksi suorittamalla huoltopäivityksiä tai tekemällä yleinen hoeskeeping. - -# Get a list of the VMs - -> [!HUOM] Vaikka sinulla saattaa jo olla SSH pääsy VM:iin, että yksin ei voit luetella VM:t, ellei sinulle ole myönnetty pääsy pilvipalveluportaaleihin. - -## Azure - -Asenna Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Asenna Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Autentikointi ja kontekstinvaihto: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Varmista, että VM on tarjonnut täysin ja ei ole asennuksen jälkeen vaiheet käynnissä. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -NGINX config on saatavilla [tässä repossa](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -Jos et käyttänyt konfiguraatiota pilvipalvelussa, käytä sitä aiemmin NGINX- ja virhesivujen manuaaliseen asetukseen: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Hanki Cloudflare alkuperätodistukset turvallisesta varastosta ja asenna vaadittuihin paikkoihin. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Päivitetään Instansseja (Maintenance) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

            https://amplify.nginx.com

            -## Updating Instances (Maintenance) - -Config muutokset meidän NGINX instansseja ylläpidetään GitHub, nämä pitäisi ottaa käyttöön jokaisessa instanssissa, kuten näin: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Testaa ja lataa asetukset [Signaaleilla](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Päivitetään Instansseja (Maintenance) - -```console -## Kirjaaminen ja seuranta - -```console -pm2 lokit -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Käynnistä verkkoasiakkaan paikkamerkit, ne päivitetään Azuren pipetin esineiden avulla. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Päivitetään Instansseja (Maintenance) - -```console -## Kirjaaminen ja seuranta - -```console -pm2 lokit -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Finnish/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Finnish/how-to-catch-outgoing-emails-locally.md index 97c8b9e6d6..397ea3382a 100644 --- a/docs/i18n/Finnish/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Finnish/how-to-catch-outgoing-emails-locally.md @@ -1,67 +1,67 @@ -> **Huomautus:** Tämä on **valinnainen** vaihe ja vaaditaan vain, kun työskennellään sähköpostin työnkulun kanssa +> **Note:** This is an **optional** step and is required only when working with email workflows -## Johdanto +## Introduction -Jotkut sähköpostin työnkulku kuten päivittäminen käyttäjän sähköpostia, vaatii back-end api-palvelimen lähettää lähtevät sähköpostit. Vaihtoehtona sille, että sähköpostipalvelun tarjoajaa käytetään varsinaisten sähköpostiviestien lähettämiseen, Mailhog on kehittäjän työkalu sähköpostin testaus, joka saalis sähköpostiviestit lähetetään freeCodeCamp instance. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Asennetaan MailHogia +## Installing MailHog -MailHog voidaan asentaa macOS, Windows ja Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Johdanto](#introduction) -- [Asennetaan MailHogia](#installing-mailhog) - - [Asennetaan MailHogia macOS:ään](#installing-mailhog-on-macos) - - [Asennetaan MailHogia Windowsiin](#installing-mailhog-on-windows) - - [Asennetaan MailHogia Linuxiin](#installing-mailhog-on-linux) -- [Käyttäen MailHogia](#using-mailhog) -- [Hyödyllisiä Linkkejä](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Asennetaan MailHogia macOS:ään +### Installing MailHog on macOS -Asenna MailHog macOS:ään [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash brew install mailhog -brew palvelut aloittaa mailhog +brew services start mailhog ``` -Yllä olevat komennot aloittavat poshogipalvelun taustalla. +The above commands will start a mailhog service in the background. -Kun asennus on valmis, voit aloittaa [käyttämällä MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Asennetaan MailHogia Windowsiin +### Installing MailHog on Windows -Lataa uusin versio MailHog osoitteesta [MailHogin virallinen arkisto](https://github.com/mailhog/MailHog/releases). Etsi ja klikkaa linkkiä Windows version (32 tai 64 bit) ja .exe tiedosto ladataan tietokoneellesi. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Kun lataus valmistuu, napsauta avataksesi tiedoston. Windows palomuuri ilmoitus voi ilmestyä, pyytää pääsyä MailHog. Standardi Windows komentorivikehote aukeaa, jossa MailHog on käynnissä, kun palomuuri pääsy on myönnetty. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Sulje MailHog sulkemalla komennon kehysikkuna. Aloita MailHog uudelleen, napsauta MailHog suoritettavaa (. xe) tiedosto, joka on ladattu aluksi - se ei ole tarpeen ladata uusi MailHog asennustiedosto. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Aloita [käyttämällä MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Asennetaan MailHogia Linuxiin +### Installing MailHog on Linux -Asenna [Go](https://golang.org). +First, install [Go](https://golang.org). -Suorita seuraavat komennot asennettaessa GO Debianiin perustuviin järjestelmiin, kuten Ubuntu ja Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Suorita seuraavat komennot asennettaessa GO RPM- pohjaisiin järjestelmiin, kuten CentOS, Fedora, Red Hat Linux, jne. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Vaihtoehtoisesti suorita seuraavat komennot asennettavaksi GO:ksi. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Aseta nyt polku Go kanssa seuraavat komennot. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile @@ -69,7 +69,7 @@ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile source ~/.profile ``` -Lopuksi kirjoita alla olevat komennot asentaaksesi ja suorittaaksesi MailHogin. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Aloita [käyttämällä MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Käyttäen MailHogia +## Using MailHog -Avaa selaimen uusi välilehti tai ikkuna ja siirry osoitteeseen [http://localhost:8025](http://localhost:8025) avataksesi MailHog postilaatikon, kun MailHog on valmis ja MailHog on käynnissä. Saapuneet-kansio näyttää samanlaiselta kuin alla oleva näyttö. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![MailHog Kuvakaappaus 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -FreeCodeCamp -asennuksen lähettämät sähköpostit näkyvät kuten alla +Emails sent by your freeCodeCamp installation will appear as below -![MailHog Kuvakaappaus 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -Kaksi välilehteä, joiden avulla voit tarkastella joko tekstiä tai lähdekoodia on käytettävissä, kun avaat tietyn sähköpostiosoitteen. Varmista, että tekstivälilehti on valittu kuten alla. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![MailHog Kuvakaappaus 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Kaikkien sähköpostin linkkien tulisi olla klikattavissa ja ne tulisi ratkaista URL-osoitteeseen. +All links in the email should be clickable and resolve to their URL. -## Hyödyllisiä Linkkejä +## Useful Links -- Tutustu [MailHog](https://github.com/mailhog/MailHog) -arkistoon saadaksesi lisätietoja MailHogista. Lisätietoja on myös käyttävät mukautetun MailHog kokoonpanot. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Finnish/how-to-help-with-video-challenges.md b/docs/i18n/Finnish/how-to-help-with-video-challenges.md index 009de392d7..0724aaef02 100644 --- a/docs/i18n/Finnish/how-to-help-with-video-challenges.md +++ b/docs/i18n/Finnish/how-to-help-with-video-challenges.md @@ -1,199 +1,199 @@ -# Kuinka auttaa videon haasteissa +# How to help with video challenges -Videon haasteet ovat uudenlainen haaste freeCodeCampin opetussuunnitelmassa. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -Videon haaste on pieni osa koko pitkien videokurssien tietyssä aiheessa. Videon haaste-sivu upottaa YouTube-videon. Jokaisella haasteen sivulla on yksi monivalintakysymys, joka liittyy videoon. Käyttäjän on vastattava kysymykseen oikein, ennen kuin hän siirtyy kurssilla seuraavaan videohaasteeseen. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -Videon haastesivujen ovat luoneet freeCodeCamp tiimin jäsenet. YouTube-videot on ladattu myös freeCodeCamp tiimin jäseniltä. Monilla videon haasteista ei vielä ole niihin liittyviä kysymyksiä. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Voit auttaa luomalla video-osioihin liittyviä monivalintakysymyksiä ja lisäämällä kysymyksiä videon haasteiden markdown tiedostoihin. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Haasteen Malli +## Challenge Template -Alla on malli siitä, miltä haasteen markdown tiedostot näyttävät. +Below is a template of what the challenge markdown files look like. ````md --- -id: Yksilöllinen tunniste (aakkosnumeerinen, MongoDB_id) -otsikko: Challenge Title +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 11 videoId: 'YouTube videoId for video challenge' --- -## Kuvaus +## Description
            -Valinnainen kuvaus videoon liittyvillä hyödyllisillä tiedoilla. +An optional description with helpful information related to the video.
            -## Testit +## Tests
            -````yml -kysymys: - tekstiä: 'Kysymys' - vastauksia: - - 'Vastaus yksi' - - 'Vastaus kaksi' - - 'Vastaus kolmi' - ratkaisu: 3 +```yml +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
            ```` -## Kysymysten luominen videon haasteita varten +## Creating questions for video challenges -### Käytä videon haasteen kuvaustiedostoja +### Access the video challenge markdown files -Löydät kuvaustiedostot videon haasteen kuvaustiedostoista opetussuunnitelmassa: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Data Analysis with Python Course](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) -- [TensorFlow 2.0 Course](https://github. om/freeCodeCamp/freeCodeCamp/tree/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) - [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) - [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) Pick a challenge markdown file from the options above. -### Hiipii haasteeseen liittyvän videon läpi ja luo mutipla valintakysymys +### Skim through the video associated with the challenge and create a mutiple choice question -Ensinnäkin, etsi videoId. +First, find the videoId. -Esimerkiksi, seuraavassa koodissa otsikko video haaste markdown tiedoston, videoId on "nVAaxZ34khk". GitHubissa tiedot on sijoitettava taulukon muotoon. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d otsikko: Data Analysis Example A challengeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -Seuraavaksi käytä YouTube-videota tuolla videotunnuksella. Videon url-osoite on: -https://www.youtube. om/watch?v=[videoId] (lisää videoID URL ilman hakasulkuja) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -Yllä olevassa esimerkissä url on https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim the YouTube video with that videoID and think of multiple choice question based on the content of the video. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Lisää kysymys merkkikansioon +### Add the question to the markdown file -Voit lisätä kysymyksen paikallisesti tai suoraan sulkemalla GitHubin käyttöliittymän. Lisätäksesi kysymyksen paikallisesti, sinun täytyy [määrittää freeCodeCamp paikallinen](how-to-setup-freecodecamp-locally.md). Voit myös löytää tiedoston GitHubista ja klikkaa muokkaa painiketta lisätäksesi kysymyksen suoraan selaimessasi. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Jos kysymystä ei ole vielä lisätty tiettyyn videon haasteeseen, sillä on seuraava oletuskysymys: - -````yml -kysymys: - teksti: • - Kysymys - vastauksia: - - ¶ - yksi - - − - kaksi - - − - kolme - ratkaisu: 3 -``` - -Päivitä sana “Kysymys” kysymykselläsi. Päivitä “yksi”, “kaksi”, ja “kolme” kanssa mahdollisia vastauksia. Varmista, että päivitä ratkaisun numero, jolla vastaus on oikea. Voit lisätä enemmän mahdollisia vastauksia käyttäen samaa muotoa. Kysymystä ja vastauksia voidaan ympäröidä lainausmerkeillä. - -#### Käytä merkintää muotoillaksesi kysymyksesi - -Käsiteltävänä oleva teksti on luokiteltu merkiksi. Yksinkertaisin tapa varmistaa, että se on muotoiltu oikein on aloittaa kysymys `teksti: ¶`, kuten tämä: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -kysymys: - teksti: ¶ - Kysymys +question: + text: | + Question + answers: + - | + one + - | + two + - | + three + solution: 3 ``` -Sitten sinun täytyy varmistaa, että kysymyksesi on uudella rivillä ja indented yhdellä tasolla enemmän kuin `tekstiä: ¶`. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -Samaa lähestymistapaa voidaan käyttää vastauksissa, joten koko kysymys tulee +#### Use markdown to format your question + +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -kysymys: - teksti: ¶ - Kysymys - vastauksia: - - · - Ensimmäinen vastaus - - · - Toinen - - − - Kolmas - ratkaisu: 2 +question: + text: | + Question ``` -Varmista, että jokainen vastaus on uskottava, mutta on vain yksi oikea vastaus. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -#### HTML:n käyttö +The same approach can be used for the answers, so the entire question becomes -Kysymykset ja vastaukset voivat sisältää tiettyjä HTML-tageja, kuten `
            ` uudelle riville. HTML-tunnisteita tulee käyttää säästeliäästi, kun kysymyksiä ei voida ilmaista ilman niitä. +```yml +question: + text: | + Question + answers: + - | + First answer + - | + Second + - | + Third + solution: 2 +``` -### Esimerkit kysymyksistä +Make sure each answer is plausible but there is only one correct answer. -#### Esimerkkejä ilman HTML +#### Use of HTML + +Questions and answers can contain certain HTML tags like `
            ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. + +### Question examples + +#### Examples without HTML ````yml -kysymys: - teksti: ¶ - Mitä tämä JavaScript-koodi kirjautuu konsoliin? - ``js +question: + text: | + What does this JavaScript code log to the console? + ```js console.log('hello world'); ```` - Valitse vastaus! - vastaukset: - - ¶ hello *maailma* - - ¶ **hello** maailma - - ¶ hello maailma ratkaisu: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -kysymys: - teksti: ¶ - Mitä tulostaa tämän koodin käytön jälkeen: +question: + text: | + What will print out after running this code: ```py - leveys = 15 - korkeus = 12. - print(korkeus/3) + width = 15 + height = 12.0 + print(height/3) ```` - vastaukset: + answers: - | 39 - | 4 - - ¶ 4,0 - - ¶ 5,0 - - ¶ 5 ratkaisu: 3 + - | 4.0 + - | 5.0 + - | 5 solution: 3 ```` -#### Esimerkki HTML:llä +#### Example with HTML ```yml -kysymys: - teksti: ¶ - Mitä tulostaa tämän koodin käytön jälkeen: -
            leveys = 15
            korkeus = 12.
            print(height/3)
            - vastauksia: - - pt +question: + text: | + What will print out after running this code: +
            width = 15
            height = 12.0
            print(height/3)
            + answers: + - | 39 - - pt + - | 4 - - pt - 4. - - ¶ - 5. - - ¶ + - | + 4.0 + - | + 5.0 + - | 5 - liuos: 3 + solution: 3 ```` -Lopullinen esimerkki osoittaa, että HTML voidaan käyttää, mutta se ei ole yhtä luettavissa kuin versio ilman sitä. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Lisää esimerkkejä, voit katsoa seuraavan videokurssin merkkilevyjä varten. Kaikilla haasteilla on jo kysymyksiä: [Python kaikille -kurssi](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Avaa pull-pyyntö +## Open a pull request -Kun olet luonut yhden tai useamman kysymyksen, voit toimittaa muutokset uuteen haaraan ja [avaa pull-pyynnön](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Finnish/how-to-open-a-pull-request.md b/docs/i18n/Finnish/how-to-open-a-pull-request.md index 8cb0049a89..2729cd6237 100644 --- a/docs/i18n/Finnish/how-to-open-a-pull-request.md +++ b/docs/i18n/Finnish/how-to-open-a-pull-request.md @@ -1,121 +1,121 @@ -# Kuinka avata Pull-pyyntö (PR) +# How to open a Pull Request (PR) -Pull pyyntö mahdollistaa sen, että voit lähettää muutoksia haarukastasi GitHubissa freeCodeCamp.orgin päärepoon. Kun olet tehnyt muutoksia koodiin, tai koodaus haasteita, sinun tulee noudattaa näitä ohjeita lähettää PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Valmistele hyvä PR-otsikko +## Prepare a good PR title -Suosittelemme käyttämään [perinteistä otsikkoa ja viestejä](https://www.conventionalcommits.org/) commitit ja vedä pyyntö. Yleissopimuksen muoto on seuraava: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([valinnainen soveltamisala(t)]): ` +> `([optional scope(s)]): ` > -> Esimerkiksi: +> For example: > -> `fix(learn): testit tehdä...kun silmukka haaste` +> `fix(learn): tests for the do...while loop challenge` -Kun avaat Pull Request(PR), voit käyttää alla olevaa määrittääksesi tyypin, laajuuden (valinnainen) ja kuvauksen. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**Tyyppi:** +**Type:** -| Tyyppi | Milloin valita | -|:------ |:--------------------------------------------------------------------------------------- | -| korjaa | Muutettu tai päivitetty/parannettu toiminnallisuus, testit, oppitunti ja niin edelleen. | -| tappio | Vain jos lisäät uusia toimintoja, testejä jne. | -| urakka | Muutokset, jotka eivät liity oppituntien koodiin, testeihin tai sanamuotoon. | -| docs | Muutokset `/docs` -hakemistoon tai rahoitukseen liittyviin ohjeisiin jne. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Laajuus:** +**Scope:** -Voit valita laajuuden [tästä tunnisteiden luettelosta](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Kuvaus:** +**Description:** -Pidä se lyhyt (alle 30 merkkiä) ja yksinkertainen, voit lisätä lisää tietoa PR-kuvauslaatikkoon ja kommentteihin. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Esimerkkejä PR-ohjelmien hyvistä nimikkeistä olisivat seuraavat: +Some examples of good PRs titles would be: -- `fix(a11y): parempi hakupalkin kontrasti` -- `feat: lisää testejä html- ja css haasteisiin` -- `fix(api,client): estää CORS-virheitä lomakkeen toimittamisessa` -- `docs(i18n): Kiinankielinen käännös paikallisten asetusten` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Pull-pyynnön ehdottaminen +## Proposing a Pull Request -1. Kun muokkaukset on sitoutunut, sinua kehotetaan luomaan pull-pyyntö haarukkaasi GitHub Page. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Kuva - Vertaa pull-pyynnön kehotusta GitHubissa](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Oletuksena kaikkien pull-pyyntöjen pitäisi olla freeCodeCamp main repoa, `master` haaraa vastaan. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Varmista, että Base Fork on asetettu freeCodeCamp/freeCodeCamp kun nostat Pull Request. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Kuva - Haarukkien vertailu pull-pyyntöä tehtäessä](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Lähetä pull-pyyntö haarasta freeCodeCampin `master` -haaraan. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. PR sisältää yksityiskohtaisemman yhteenvedon muutoksista, jotka olet tehnyt ja miksi. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Sinut tullaan esittämään pull pyyntö malli . Tämä on tarkistuslista, jota sinun olisi pitänyt seurata ennen pull-pyynnön avaamista. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Täytä tiedot niin kuin näette sopivaksi. Nämä tiedot tarkistetaan ja arvioijat päättävät, hyväksytäänkö pull-pyyntösi vai ei. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Jos PR:n tarkoituksena on puuttua olemassa olevaan GitHub Issueen, sitten lopussa teidän PR: n kuvauselin, käytä avainsanaa _Sulkee_ viitenumerolla [sulkee tämän ongelman automaattisesti, jos PR on hyväksytty ja yhdistetty](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Esimerkki: `Sulkee #123` sulkee ongelman 123 + > Example: `Closes #123` will close issue 123 -5. Ilmoittakaa, onko olet testannut paikallista kopiota sivustosta vai ei. +5. Indicate if you have tested on a local copy of the site or not. - Tämä on erittäin tärkeää, kun tehdään muutoksia, jotka eivät ole pelkästään tekstin sisältöä kuten dokumentaatio tai haasteiden kuvaus. Esimerkkejä paikallista testausta vaativista muutoksista ovat JavaScript, CSS, tai HTML jotka voivat muuttaa sivun toiminnallisuutta tai asettelua. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Palaute pull-pyynnöistä +## Feedback on pull requests -> Onnittelut! :tada: kun olet tehnyt PR:n ja kiitos paljon siitä, että olet käyttänyt aikaa osallistumiseen. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Moderaattorimme tulevat nyt katsomaan ja jättämään sinulle palautetta. Olkaa kärsivällisiä muiden moderaattoreiden kanssa ja kunnioittakaa heidän aikaansa. Kaikki pull-pyynnöt tarkistetaan aikanaan. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Jos tarvitset apua, keskustele [osallistujien chat-huoneesta](https://gitter.im/FreeCodeCamp/Contributors), olemme enemmän kuin mielellämme auttaa sinua. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Jos haluat osallistua enemmän vetopyyntöjä, suosittelemme, että luet [tehdä muutoksia ja synkronoit](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) ohjeet, jottei haarukkaasi tarvitse poistaa. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Ristiriidat pull-pyynnössä +## Conflicts on a pull request -Ristiriitoja voi syntyä, koska monet tietolähteet työskentelevät arkistossa, ja muutokset voivat rikkoa PR:si, joka odottaa arvostelua ja yhdistämistä. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Useammin kuin ei ehkä vaadi rebase, koska me squash all commits, kuitenkin jos perustetta pyydetään tässä on mitä sinun pitäisi tehdä. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Tavallisia korjauksia ja ominaisuuksia varten +### For usual bug fixes and features -Kun työskentelet säännöllisten vikojen ja ominaisuuksien parissa kehityshaarassamme `master`, voit tehdä yksinkertaisen korjauksen: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Luo paikallinen kopio: +1. Rebase your local copy: ```console git checkout - git pull --rebase ylävirtaan master + git pull --rebase upstream master ``` -2. Ratkaise mahdolliset ristiriidat ja lisää / muokkaa commitit +2. Resolve any conflicts and add / edit commits ```console - # Joko + # Either git add . - git commit -m "chore: ratkaista ristiriidat" + git commit -m "chore: resolve conflicts" - # Tai + # Or git add . git commit --amend --no-edit ``` -3. Paina muutoksesi takaisin PR:ään +3. Push back your changes to the PR ```console git push --force origin ``` -### Tulevat opetussuunnitelmat ja ominaisuudet +### For upcoming curriculum and features -Kun työskentelet tulevan opetussuunnitelman ominaisuuksien parissa, `seuraava *` sivukonttori, sinulla on kirsikkavalinta: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Varmista, että ylävirrasi tulee synkronoitua paikallisesi kanssa: +1. Make sure your upstream comes in sync with your local: ```console git checkout master @@ -124,9 +124,9 @@ Kun työskentelet tulevan opetussuunnitelman ominaisuuksien parissa, `seuraava * git reset --hard upstream/next-python-projects ``` -2. Ota varmuuskopio +2. Take backup - a. Joko poista paikallinen sivukonttorisi varmuuskopion ottamisen jälkeen (jos sinulla on vielä se paikallisesti): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout @@ -137,28 +137,28 @@ Kun työskentelet tulevan opetussuunnitelman ominaisuuksien parissa, `seuraava * git checkout -b # example: - # git checkout -b backup-feat/add-numpy-video-question + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - b. Tai vain varmuuskopio Pr haarasta (jos sinulla ei ole sitä paikallisesti): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # esimerkki: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Aloita pois päältä puhtaalla liittimellä: +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Ratkaise mahdolliset ristiriidat ja siivoa, asenna suoritettavat testit +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean @@ -172,7 +172,7 @@ Kun työskentelet tulevan opetussuunnitelman ominaisuuksien parissa, `seuraava * ``` -6. Jos kaikki näyttää hyvältä työnnä takaisin PR-palveluun +6. If everything looks good push back to the PR ```console git push --force origin diff --git a/docs/i18n/Finnish/how-to-setup-freecodecamp-locally.md b/docs/i18n/Finnish/how-to-setup-freecodecamp-locally.md index 1338d010a5..619db733cf 100644 --- a/docs/i18n/Finnish/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Finnish/how-to-setup-freecodecamp-locally.md @@ -1,96 +1,96 @@ -Noudata näitä ohjeita, jotta voit luoda freeCodeCamp paikallisesti järjestelmääsi. Tämä on erittäin suositeltavaa, jos haluat osallistua säännöllisesti. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Joidenkin panos työnkulkua, sinun täytyy olla freeCodeCamp käynnissä paikallisesti. Esikatsele esimerkiksi koodaushaasteita tai virheenkorjausta ja virheiden korjaamista koodauspohjassa. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] Jos et ole kiinnostunut perustamaan freeCodeCamp paikallisesti harkita käyttää Gitpod, ilmainen online dev ympäristö. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Avaa Gitpodissa](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Starts valmis koodi dev ympäristö freeCodeCamp selaimessasi.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Valmistele paikallinen koneesi +### How to prepare your local machine -Aloita asentamalla käyttöjärjestelmäsi edellytyksenä oleva ohjelmisto. +Start by installing the prerequisite software for your operating system. -Tuemme ensisijaisesti **\*nix** -järjestelmien kehittämistä. Henkilökuntamme ja yhteisömme avustajat työskentelevät säännöllisesti codebasin kanssa Ubuntuun ja macOS:iin asennettujen työkalujen avulla. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Tuemme myös Windows 10 WSL2, jota voit valmistella [lukemalla tämän oppaan](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Jotkut yhteisön jäsenet myös kehittää Windows 10 natiivisti Git for Windows (Git Bash) ja muut Windowsiin asennetut työkalut. Meillä ei ole virallista tukea tällaiseen asetuksiin tällä hetkellä, suosittelemme käyttämään WSL2 sijaan. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Edellytykset:** +**Prerequisites:** -| Edellytys | Versio | Muistiinpanot | -| ---------------------------------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12.x` | [Lts-Aikataulu](https://github.com/nodejs/Release#release-schedule) | -| npm (toimitetaan solmun kanssa) | `6,x` | Ei ole LTS julkaisuja, käytämme versiota mukana Node LTS | -| [Mongodb Yhteisön Palvelin](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Julkaisutiedot](https://docs.mongodb.com/manual/release-notes/), Huomautus: Olemme tällä hetkellä `3.6`, [päivitys on suunniteltu](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Jos sinulla on eri versio, asenna suositeltu versio. Voimme vain tukea asennusongelmia suositelluille versioille. Katso lisätietoja [vianmäärityksestä](#troubleshooting). +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Jos Node.js on jo asennettu koneeseesi, suorita seuraavat komennot validoimaan versiot: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console node -v npm -v ``` -> [!TIP] Suosittelemme päivittämään viimeisimpiin edellä lueteltuihin vakaisiin julkaisuihin, jotka tunnetaan myös nimellä Long Term Support (LTS) -julkaisut. +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Kun olet asentanut tarvittavat edellytykset, sinun on valmisteltava kehitysympäristösi. Tämä on yleistä monille kehitystyön työnkulkuja, ja sinun tarvitsee vain tehdä tämä kerran. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Seuraa näitä vaiheita saada kehitysympäristö valmiiksi:** +**Follow these steps to get your development environment ready:** -1. Asenna [Git](https://git-scm.com/) tai Git -sovellus, jos et ole jo ennen. Päivitä uusimpaan versioon; versio, joka tuli mukana käyttöjärjestelmäsi voi olla vanhentunut. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Valinnainen, mutta suositeltava) [Aseta SSH avain](https://help.github.com/articles/generating-an-ssh-key/) GitHubille. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Asenna valintasi koodimuokkain. @ info: whatsthis +3. Install a code editor of your choice. - Suosittelemme käyttämään [Visual Studio Code](https://code.visualstudio.com/) tai [Atom](https://atom.io/). Nämä ovat suuria, vapaita ja avoimen lähdekoodin editoreita. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Määritä linkin koodi editorille. +4. Set up linting for your code editor. - Sinulla pitäisi olla [ESLint käynnissä editorissa](http://eslint.org/docs/user-guide/integrations.html), ja se korostaa kaikkea, mikä ei vastaa [freeCodeCampin JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!TIP] Älä ohita mitään linssivirheitä. Niiden tarkoituksena on **auttaa** sinua ja varmistaa puhdas ja yksinkertainen koodipohja. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Muokkaa arkistoa GitHubissa +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) on askel, jossa saat oman kopion freeCodeCampin päätietovarastosta (alias _repo_) GitHubissa. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Tämä on välttämätöntä, koska sen avulla voit työskennellä oman kopion freeCodeCamp GitHub, tai ladataksesi (kloonaa) arkistosi, jotta voit työskennellä paikallisesti. Myöhemmin voit pyytää muutoksia vedettäväksi tärkeimpään versiovarastoon haarukastasi pull-pyynnön kautta (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] Tärkein repo osoitteessa `https://github.com/freeCodeCamp/freeCodeCamp` on usein nimitystä `ylävirtaan` repository. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Haarukkaasi osoitteessa `https://github.com/YOUR_USER_NAME/freeCodeCamp` kutsutaan usein `alkuperäksi` repoksi. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Seuraa näitä ohjeita haarataksesi `https://github.com/freeCodeCamp/freeCodeCamp` repository:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Siirry freeCodeCamp repository GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. Klikkaa "haarukka" -painiketta käyttöliittymän yläkulmassa ([Lisää tietoja Tässä](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Kun repo on väärennetty, sinut viedään freeCodeCamp arkiston kopioon osoitteessa `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
            - Miten fork freeCodeCamp on GitHub (kuvakaappaus) + How to fork freeCodeCamp on GitHub (screenshot)
            - Miten fork freeCodeCamp on GitHub + How to fork freeCodeCamp on GitHub
            -## Kloonaa haarukkasi GitHubista +## Clone your fork from GitHub -[Kloonaus](https://help.github.com/articles/cloning-a-repository/) on missä **lataat** kopion arkistosta `etäisestä` paikasta, joka on joko sinun tai jonkun muun omistuksessa. Tapauksessasi tämä etäinen sijainti on sinun `haarautunut` freeCodeCampin reposta jonka pitäisi olla saatavilla osoitteessa `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Suorita nämä komennot paikallisella koneellasi: +Run these commands on your local machine: -1. Avaa terminaali / Komentoprompt / Shell projektisi hakemistossa +1. Open a Terminal / Command Prompt / Shell in your projects directory - _eli: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ 2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username @@ -98,229 +98,229 @@ Suorita nämä komennot paikallisella koneellasi: git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Tämä lataa koko freeCodeCamp arkiston projektisi hakemistoon. +This will download the entire freeCodeCamp repository to your projects directory. -Huomautus: `--depth=1` luo matalan kloonin, jossa on vain viimeisin historia / commit. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Määritä synkronointi vanhemmasta +## Set up syncing from parent -Nyt kun olet ladannut kopion forkistasi, sinun täytyy määrittää `ylävirtaan` etäisyys päärepoon. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Kuten edellä mainittiin,](#fork-the-repository-on-github), päärepo viitataan `ylävirtaan` repository. Your fork referred to as the `origin` repository. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Tarvitset paikallisen kloonisi viittauksen `ylävirtaan` arkistoon `alkuperästä` arkiston lisäksi. Tämä on niin, että voit synkronoida muutokset päätietovarastosta ilman tarvetta forkata ja kloonata toistuvasti. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Vaihda hakemisto uuteen freeCodeCamp kansioon: +1. Change directory to the new freeCodeCamp directory: ```console cd freeCodeCamp ``` -2. Lisää etäviittaus pääasialliseen freeCodeCamp repoon: +2. Add a remote reference to the main freeCodeCamp repository: ```console git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Varmista, että määritys näyttää oikealta: +3. Ensure the configuration looks correct: ```console git remote -v ``` - Ulostulon pitäisi näyttää jotain alla: + The output should look something like below: ```console - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - upstream https://github.com/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Käynnissä freeCodeCamp paikallisesti +## Running freeCodeCamp locally -Nyt kun sinulla on paikallinen kopio freeCodeCampista, voit seurata näitä ohjeita suorittaaksesi sen paikallisesti. Tämän avulla voit +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Esikatsele sivujen muokkaukset sellaisina kuin ne näkyvät oppimisalustalla. -- Työn tekeminen käyttöliittymään liittyviä kysymyksiä ja parannuksia. -- Vianetsintä ja korjaa ongelmia sovelluspalvelimien ja asiakassovellusten kanssa. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Jos et joudu ongelmiin, suorita ensin web-haku ongelmastasi ja katso onko siihen jo vastattu. Jos et löydä ratkaisua, etsi [GitHub ongelmia](https://github.com/freeCodeCamp/freeCodeCamp/issues) sivu ratkaisuun ja ilmoita ongelmasta, jos sitä ei ole vielä raportoitu. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -Ja kuten aina, voit vapaasti hypätä meidän [Kehittäjien Keskusteluhuone Gitter](https://gitter.im/FreeCodeCamp/Contributors) tai [meidän Discord-palvelin](https://discord.gg/pFspAhS), nopeita kyselyjä. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Voit ohittaa käynnissä freeCodeCamp paikallisesti jos olet muokkaamassa tiedostoja. Esimerkiksi `perusteen`suorittaminen tai `yhdistäminen` ristiriitojen ratkaiseminen. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Voit aina palata tähän osaan ohjeita myöhemmin. Sinun pitäisi **** ohittaa tämä vaihe, jos sinun ei tarvitse suorittaa sovelluksia koneellasi. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Siirry muutosten tekemiseen](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Riippuvuuksien määrittäminen +### Configuring dependencies -#### Vaihe 1: Määritä ympäristömuuttujatiedosto +#### Step 1: Set up the environment variable file -Oletusarvoiset API-avaimet ja ympäristömuuttujat tallennetaan tiedostoon `sample.env`. Tämä tiedosto on kopioitava uuteen tiedostoon nimeltä `.env` , joka on käytettävissä dynaamisesti asennusvaiheen aikana. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Luo kopio "sample.env" ja nimeä se ".env". -# Täytä se tarvittavilla API-avaimilla ja salaisuuksilla: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp näyte. nv .env +cp sample.env .env # Windows -kopioi sample.env .env +copy sample.env .env ``` -Avaimet `.env` tiedostossa eivät ole _ei_ tarvitse muuttaa suorittaaksesi sovelluksen paikallisesti. Voit jättää oletusarvot kopioitu `sample.env` as-is. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!TIP] Pidä mielessä, jos haluat käyttää palveluita, kuten Auth0 tai Algolia, sinun täytyy hankkia oma API avaimet näille palveluille ja muokata merkintöjä vastaavasti `. nv` tiedosto. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Vaihe 2: Asenna riippuvuudet +#### Step 2: Install dependencies -Tämä vaihe asentaa tarvittavat riippuvuudet, jotta sovellus voi suorittaa: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Vaihe 3: Käynnistä MongoDB ja vahvista tietokanta +#### Step 3: Start MongoDB and seed the database -Ennen kuin voit suorittaa sovelluksen paikallisesti, sinun täytyy aloittaa MongoDB palvelu. +Before you can run the application locally, you will need to start the MongoDB service. -> [!HUOM] Ellei MongoDB ole käynnissä asetuksessa, joka on erilainen kuin oletus, URL tallennettu `MONGOHQ_URL` arvo `. nv` tiedoston pitäisi toimia hyvin. Jos käytät mukautettua konfiguraatiota, muokkaa tätä arvoa tarpeen mukaan. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Käynnistä MongoDB palvelin erillisessä päätteessä: +Start the MongoDB server in a separate terminal: -- macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- Ikkunoissa sinun on määritettävä koko polku `mongodiin` binary +- On Windows, you must specify the full path to the `mongod` binary ```console - "C:\Program Files\MongoDb\Server\3.6\bin\mongod" + "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Varmista, että korvaat `3.6` asennetulla versiolla + Make sure to replace `3.6` with the version you have installed -> [!TIP] Voit välttää aloittamasta MongoDB:tä joka kerta asentamalla sen taustapalveluna. Voit [oppia siitä lisää niiden dokumentaatiossa käyttöjärjestelmäsi](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Seuraavaksi jaetaan tietokanta. Tässä vaiheessa suoritamme alla olevan komennon, joka täyttää MongoDB-palvelimen joillakin alustavilla tietosarjoilla, joita palvelut edellyttävät. Niihin kuuluu muun muassa muutamia järjestelmiä. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -npm suorita seed-luku +npm run seed ``` -#### Vaihe 4: Käynnistä freeCodeCamp asiakassovellus ja API-palvelin +#### Step 4: Start the freeCodeCamp client application and API server -Voit nyt käynnistää API-palvelimen ja asiakkaan sovellukset. +You can now start up the API server and the client applications. ```console -npm ajaa kehittää +npm run develop ``` -Tämä yksittäinen komento syttyy kaikkiin palveluihin, mukaan lukien API-palvelin ja käytettävissä olevat asiakassovellukset, joita voit käyttää. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!NOTE] Kun olet valmis, avaa selain ja **vieraile **. Jos sovellus latautuu, onnittelut – olet kaikki asetettu! Sinulla on nyt kopio freeCodeCampin koko oppimisalusta käynnissä paikallisella koneilla. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] API-palvelin palvelee sovellusliittymiä osoitteessa `http://localhost:3000`. Gatsby-sovellus palvelee asiakassovellusta osoitteessa `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Jos käyt , sinun pitäisi nähdä saatavilla olevat APIt. +> If you visit you should see the available APIs. -## Kirjaudu sisään paikallisella käyttäjällä +## Sign in with a local user -Paikallinen asetuksesi luo automaattisesti paikallisen käyttäjän tietokannassa. Klikkaamalla `Kirjaudu sisään` -painiketta autentikoi sinut automaattisesti paikalliseen sovellukseen. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Käyttäjän portfolioon pääsy on kuitenkin hieman hankala. Kehityksessä Gatsby ottaa haltuunsa palvellen asiakassivuja ja näin saat `404` sivun käyttäjäportfoliolle toimiessaan paikallisesti. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Yksinkertaisesti klikkaamalla **"Esikatsele mukautettua 404 sivua"** -painiketta voit lähettää sinut oikealle sivulle. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
            - Kuinka kirjautua sisään paikallisesti toimiessa (kuvakaappaus) + How to sign in when working locally (screenshot)
            - Kuinka kirjautua sisään paikallisesti toimiessa + How to sign in when working locally
            -## Tehdään muutoksia paikallisesti +## Making changes locally -Voit nyt tehdä muutoksia tiedostoihin ja toimittaa muutokset paikalliseen klooniin haarukastasi. +You can now make changes to files and commit your changes to your local clone of your fork. -Seuraa näitä ohjeita: +Follow these steps: -1. Vahvista että olet `master` haaralla: +1. Validate that you are on the `master` branch: ```console git status ``` - Sinun pitäisi saada tuotos näin: + You should get an output like this: ```console - Sivukonttorin päällikön - Sivukonttorisi on ajan tasalla 'alkuperä/isäntä'. + On branch master + Your branch is up-to-date with 'origin/master'. - ei toimiteta, työhakemisto puhdas + nothing to commit, working directory clean ``` - Jos et ole päällikössä tai työkansiosi ei ole puhdas, ratkaise kaikki jäljellä olevat tiedostot/toimitukset ja kassalle `master`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - git kassalle master + git checkout master ``` -2. Synkronoi viimeisimmät muutokset freeCodeCamp:in ylävirtaan `master` -haarasta paikalliseen päähaaraan: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!VAROITUS] Jos sinulla on jokin jäljellä oleva pull-pyyntö, jonka teit haaran `master` haarasta, menetät ne tämän vaiheen lopussa. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Sinun pitäisi varmistaa, että pull-pyyntösi yhdistetään valvojan toimesta ennen tämän vaiheen suorittamista. Tämän skenaarion välttämiseksi sinun pitäisi **aina** toimia muulla haaralla kuin `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Tämä vaihe **synkronoi viimeisimmät muutokset** freeCodeCampin pääarkistosta. On tärkeää, että perustat haaran uudelleen uusimman `ylävirtaan / master` niin usein kuin mahdollista välttääksesi ristiriitoja myöhemmin. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Päivitä paikallinen kopio freeCodeCamp ylävirtaan arkistosta: + Update your local copy of the freeCodeCamp upstream repository: ```console - git nouto ylävirtaan + git fetch upstream ``` - Palauta päähaara kovasti freeCodeCamp mestarin avulla: + Hard reset your master branch with the freeCodeCamp master: ```console git reset --hard upstream/master ``` - Työnnä isäntähaaraa alkuperäsi mukaan, jotta sinulla on puhdas historia haarukassa GitHubissa: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console git push origin master --force ``` - Voit vahvistaa nykyisen isäntäni vastaavuuksia ylös- ja alaspäin suorittamalla diff: + You can validate your current master matches the upstream/master by performing a diff: ```console - git diff ylävirtaan / master + git diff upstream/master ``` - Tuloksen tulisi olla tyhjä. + The resulting output should be empty. -3. Luo uusi haara: +3. Create a fresh new branch: - Jos työskentelet erillisessä haarassa kutakin ongelmaa varten, voit pitää paikallisen työkopion puhtaana. Sinun ei pitäisi koskaan työskennellä `master`. Tämä maaperä kopio freeCodeCamp ja sinun täytyy aloittaa uudestaan tuore klooni tai haarukka. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Tarkista, että olet `master` kuten aiemmin on selitetty, ja haaraudu sieltä: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Sivukonttorin nimen pitäisi alkaa `korjatulla /`, `feat/`, `docs/`, jne. Vältä numeroiden käyttöä haaroissa. Pidä ne lyhyinä, merkityksellisinä ja ainutlaatuisina. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Esimerkkejä hyvistä sivukonttorin nimistä ovat seuraavat: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,88 +330,88 @@ Seuraa näitä ohjeita: translate/add-spanish-basic-html ``` -4. Muokkaa sivuja ja toimi koodilla suosikki tekstieditori. +4. Edit pages and work on code in your favorite text editor. -5. Kun olet tyytyväinen muutoksiin, sinun pitäisi vaihtoehtoisesti ajaa freeCodeCamp paikallisesti esikatsella muutoksia. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Varmista, että korjaat virheet ja tarkista muutosten muotoilu. +6. Make sure you fix any errors and check the formatting of your changes. -7. Tarkista ja vahvista päivitetyt tiedostot: +7. Check and confirm the files you are updating: ```console git status ``` - Tämän pitäisi näyttää lista `vaiheettomista` tiedostoista, joita olet muokannut. + This should show a list of `unstaged` files that you have edited. ```console - Sivukonttorin feat/dokumentaatiossa - Sivukonttorisi on ajan tasalla 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Muutoksia ei ole vaiheistettu: - (käytä "git add/rm ... päivittää mitä tullaan tekemään) - (käytä "git checkout -- . ." hylätäksesi muutokset työhakemistossa) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - muutettu: RAHOITUS. d - muutettu: docs/README.md - muutettu: docs/how-to-setup-freecodecamp-locally. d - muutettu: docs/how-to-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Laita muutokset vaiheeseen ja sitoudu: +8. Stage the changes and make a commit: - Tässä vaiheessa sinun pitäisi merkitä vain ne tiedostot, joita olet muokannut tai lisännyt itse. Voit suorittaa nollauksen ja ratkaista tiedostoja, joita et aikonut muuttaa tarvittaessa. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console git add path/to/my/changed/file.ext ``` - Tai voit lisätä kaikki `vaiheettomat` tiedostot vaiheistetun julkaisun alueelle: + Or you can add all the `unstaged` files to the staging area: ```console git add . ``` - Vain ne tiedostot, jotka on siirretty vaiheistetun julkaisun alueelle, lisätään kun teet pysyvän muutoksen. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Tuloste: + Output: ```console - Sivukonttorin feat/dokumentaatiossa - Sivukonttorisi on ajan tasalla 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Muutokset tehdään: - (käytä "git reset HEAD ..." vaiheeseen) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - muutettu: RAJOITUS.md - muutettu: docs/README.md - muutettu: docs/how-to-setup-freecodecamp-locally.md - muutettu: docs/how-to-work-on-guide-on-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Nyt voit toimittaa muutoksesi lyhyellä viestillä, kuten näin: + Now, you can commit your changes with a short message like so: ```console - git commit -m "korjaa: minun lyhyt toimitusviesti" + git commit -m "fix: my short commit message" ``` - Joitakin esimerkkejä: + Some examples: ```md fix: update guide article for Java - for loop feat: add guide article for alexa skills ``` - Valinnainen: + Optional: - Suosittelemme, että tehdään perinteinen sitouttamisviesti. Tämä on hyvä käytäntö, jonka näet joissain suosituissa Avoimen lähdekoodin arkistoissa. Kehittäjänä tämä kannustaa sinua noudattamaan vakiokäytäntöjä. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Joitakin esimerkkejä perinteisistä toimitusilmoituksista ovat: + Some examples of conventional commit messages are: ```md fix: update HTML guide article @@ -420,66 +420,66 @@ Seuraa näitä ohjeita: docs: update contributing guidelines ``` - Säilytä nämä lyhyet, enintään 50 merkkiä. Voit aina lisätä lisää tietoa toimitusviestin kuvaukseen. @ info: whatsthis + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Tämä ei vie ylimääräistä aikaa kuin epätavanomainen viesti, kuten 'update file' tai 'add index.md' + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Voit oppia lisää siitä, miksi sinun pitäisi käyttää perinteisiä commikoita [täällä](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Jos tajuat, että sinun on muokattava tiedostoa tai päivitettävä toimitusviesti toimituksen tekemisen jälkeen, voit tehdä sen muokattuasi tiedostoja: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console git commit --amend ``` - Tämä avaa oletustekstieditorin, kuten `nano` tai `vi` jossa voit muokata toimitusviestin otsikkoa ja lisätä / muokata kuvausta. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Seuraavaksi voit työntää muutoksesi haarukkaisi: +10. Next, you can push your changes to your fork: ```console - git push alkuperä haara/nimi-täällä + git push origin branch/name-here ``` -## Pull-pyynnön ehdottaminen (PR) +## Proposing a Pull Request (PR) -Kun olet tehnyt muutoksesi, tarkista täältä [miten avata Pull-pyyntö](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Nopea komentojen viite +## Quick commands reference -Nopea viittaus komennoihin, joita tarvitset toimiessasi paikallisesti. +A quick reference to the commands that you will need when working locally. -| komento | kuvaus | -| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `npm ci` | Asentaa / asentaa uudelleen kaikki riippuvuudet ja bootstraps eri palveluja. | -| `npm suorita seed-luku` | Jäsentää kaikki haasteen markdown tiedostot ja lisää ne MongoDB. | -| `npm ajaa kehittää` | Käynnistää freeCodeCamp API-palvelimen ja asiakassovellukset. | -| `npm testi` | Suorita kaikki JS-testit järjestelmässä, mukaan lukien asiakas-, palvelin-, lintti- ja haastetestit. | -| `npm run test:client` | Suorita asiakkaan testisarja. | -| `npm run testi:opetussuunnitelma` | Suorita opetussuunnitelman testi sviitti. | -| `npm run test:curriculum --block='Basic HTML ja HTML5'` | Testaa tietty lohko. | -| `npm run test:curriculum --superblock='responsive-web-design'` | Testaa tietty SuperBlock. | -| `npm run test-curriculum-full output` | Suorita opetussuunnitelman testaussarja paistamatta ensimmäisen virheen jälkeen | -| `npm ajaa testi:palvelin` | Suorita palvelimen testisarja. | -| `npm ajo e2e` | Suorita sypressin loppu lopettaaksesi testit. | -| `npm suorita puhdas` | Poistaa kaikki riippuvuudet ja puhdistaa kätköt. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Vianmääritys +## Troubleshooting -### Suositeltujen edellytysten asentamiseen liittyvät ongelmat +### Issues with installing the recommended prerequisites -Kehitämme säännöllisesti uusimpia tai suosituimpia käyttöjärjestelmiä, kuten macOS 10.15 tai uudempia, Ubuntu 18.04 tai uudempia ja Windows 10 (WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -On suositeltavaa tutkia erityinen kysymys resursseja, kuten Google, pino ylivuoto ja pino vaihto. On olemassa hyvä mahdollisuus, että joku on kohdannut saman ongelman ja on jo vastaus sinun erityiseen kyselyyn. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Jos olet toisessa käyttöjärjestelmässä ja/tai olet yhä tekemisissä, katso [saada apua](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!VAROITUS] +> [!WARNING] > -> Ole hyvä ja vältä luomasta GitHub-ongelmia ennakkoehtojen täyttämiseksi. Ne eivät kuulu tämän hankkeen soveltamisalaan. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Ongelmia UI, Fontit, rakentaa virheitä jne. +### Issues with the UI, Fonts, build errors etc. -Jos kohtaat ongelmia UI, Fontit tai nähdä rakentaa virheitä, siivoaminen voi olla hyödyllistä: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean @@ -488,17 +488,17 @@ npm run seed npm run develop ``` -TAI +OR -Käytä pikakuvaketta +Use the shortcut ``` -npm ajaa puhdasta ja kehittää +npm run clean-and-develop ``` -Jos jatkat kohtaamista ongelmia rakennuksen kanssa, työtilan siivoaminen on suositeltavaa. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Käytä `git clean` interaktiivisessa tilassa: +Use `git clean` in interative mode: ``` git clean -ifdX @@ -506,41 +506,41 @@ git clean -ifdX
            - Kuinka puhdistaa git jäljittämättömät tiedostot (kuvakaappaus) + How to clean git untracked files (screenshot)
            - Kuinka puhdistaa git jäljittämättömät tiedostot + How to clean git untracked files
            -### Ongelmia API, kirjautuminen, Challenge Submissions, jne. +### Issues with API, Login, Challenge Submissions, etc. -Jos et voi kirjautua sisään, ja sen sijaan näet bannerin, jossa on virheilmoitus, että se ilmoitetaan freeCodeCamp:lle, tarkista, että paikallinen portti `3000` ei ole eri ohjelman käytössä. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**Linux / macOS / WSL Windowsissa - päätelaitteesta:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console -netstat -ab - grep "3000" +netstat -ab | grep "3000" -tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**Windows - Kohteesta PowerShell:** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab - Select-String "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Ongelmia riippuvuuksien asentamisessa +### Issues installing dependencies -Jos saat virheitä asennettaessa riippuvuuksia, varmista, että et ole rajoitetussa verkossa tai palomuurisi asetukset eivät estä sinua käyttämästä resursseja. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -Ensimmäisen kerran asennus voi kestää jonkin aikaa riippuen verkon kaistanleveydestä. Ole kärsivällinen, ja jos olet edelleen jumissa me uudelleen käyttäen GitPod sijasta offline asetukset. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Haetaan Apua +## Getting Help -Jos olet jumissa ja tarvitset apua, kerro meille pyytämällä ['Osallistujat' -kategoriassa foorumillamme](https://forum.freecodecamp.org/c/contributors) tai [Osallistujien chat-huoneessa](https://gitter.im/FreeCodeCamp/Contributors) Gitterissä. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Voi olla virhe konsolissa selaimen tai Bash / Terminal / Command Line joka auttaa tunnistamaan ongelman. Anna tämä virheviesti ongelmankuvauksessasi, jotta muut voivat helpommin tunnistaa ongelman ja auttaa sinua löytämään ratkaisun. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Finnish/how-to-setup-wsl.md b/docs/i18n/Finnish/how-to-setup-wsl.md index c1680401f0..68bce6dde6 100644 --- a/docs/i18n/Finnish/how-to-setup-wsl.md +++ b/docs/i18n/Finnish/how-to-setup-wsl.md @@ -1,26 +1,26 @@ -# Määritä freeCodeCamp Windows-alajärjestelmässä Linuxille (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!HUOM] Ennen kuin noudatat näitä ohjeita, varmista, että järjestelmäsi täyttää vaatimukset +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (Versio 2004, Rakenna 19041 tai uudempi) - saatavilla kaikille jakeluille kuten Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop Windowsille**: Katso vastaavat vaatimukset [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) ja [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Tämä opas kattaa joitakin yhteisiä vaiheita kanssa asennus WSL2. Kun joitakin yhteisiä kysymyksiä WSL2 on käsitelty, sinun pitäisi pystyä seuraamaan paikallisia setup opas työskennellä freeCodeCamp Windows käynnissä WSL distro kuten Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Ota Wsl Käyttöön +## Enable WSL -Noudata ohjeita [virallisessa dokumentaatiossa](https://docs.microsoft.com/en-us/windows/wsl/install-win10) asentaa WSL1 ja sen jälkeen päivittää WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Suosittelemme käyttämään Ubuntu-18.04 tai yli WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!HUOM] + > [!NOTE] > - > Vaikka voit käyttää muita ei-debialaisia distrooleja, ne kaikki tulevat oman gotchas ja ovat tämän oppaan soveltamisalan ulkopuolella. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Päivitä käyttöjärjestelmän riippuvuudet +2. Update the dependencies for the OS ```console sudo apt update @@ -30,68 +30,68 @@ Noudata ohjeita [virallisessa dokumentaatiossa](https://docs.microsoft.com/en-us sudo apt autoremove -y ``` -## Määritä Git +## Set up Git -Git on valmiiksi asennettu Ubuntu 18.04 , tarkista että Git versio `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ -¶ git --version +❯ git --version git version 2.25.1 ``` -(Valinnainen, mutta suositeltava) Voit nyt siirtyä [perustamaan ssh avaimesi](https://help.github.com/articles/generating-an-ssh-key) GitHubilla. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Koodinmuokkaimen asentaminen +## Installing a Code Editor -Suosittelemme asentamaan [Visual Studio Code](https://code.visualstudio.com) Windows 10:ssä. Se on suuri tuki WSL ja asentaa automaattisesti kaikki tarvittavat laajennukset WSL distro. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -Pohjimmiltaan voit muokata ja tallentaa koodisi Ubuntu-18.04 VS Code asennettuna Windowsiin. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Dockerin Työpöydän Asentaminen +## Installing Docker Desktop -**Docker Desktop Windowsille** voit asentaa ja suorittaa tietokannan ja palvelut, kuten MongoDB, NGINX jne. Tämä on hyödyllistä välttää yhteisiä sudenkuoppia asentamalla MongoDB tai muita palveluja suoraan Windowsissa tai WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Seuraa ohjeita [virallisella dokumentaatiolla](https://docs.docker.com/docker-for-windows/install) ja asenna Docker Desktop Windows-jakelua varten. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -On olemassa joitakin vähimmäisvaatimuksia laitteiston parhaan kokemuksen. +There are some minimum hardware requirements for the best experience. -## Määritä WSL:n Docker-työpöytä +## Configure Docker Desktop for WSL -Kun Docker Desktop on asennettu, [noudata näitä ohjeita](https://docs.docker.com/docker-for-windows/wsl) ja määritä se käyttämään Ubuntu-18.04 asennusta taustalaitteena. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Tämä tekee siitä niin, että kontit kulkevat WSL puolella sen sijaan, että juoksevat Windowsissa. Voit käyttää palveluita `http://localhost` sekä Windowsissa että Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Asenna MongoDB Docker Hubista +## Install MongoDB from Docker Hub -Kun olet konfiguroinut Docker Desktop toimimaan WSL2, noudata näitä ohjeita aloittaa MongoDB palvelu: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Avaa uusi Ubuntu-18.04 pääte +1. Launch a new Ubuntu-18.04 terminal -2. Vedä `MongoDB 3.6` telakoilta +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Käynnistä MongoDB palvelu portilla `27017`, ja määritä se automaattisesti järjestelmän uudelleenkäynnistykseen +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console - telakka ajaa -it \ + docker run -it \ -v mongodata:/data/db \ -p 27017:27017 \ --name mongodb \ - --uudelleenkäynnistys ilman vähennystä \ + --restart unless-stopped \ -d mongo:3 ``` -4. Voit nyt käyttää palvelua sekä Windows-tai Ubuntu `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Node.js- ja npm:n asentaminen +## Installing Node.js and npm -Suosittelemme asentamaan LTS version Node.js kanssa node version Manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Kun olet asentanut nämä komennot asentaaksesi ja käyttääksesi Node.js-versiota tarpeen mukaan +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts @@ -101,29 +101,29 @@ nvm install --lts nvm install 14 -# Käyttö +# Usage # nvm use nvm use 12 ``` -Node.js mukana tulee `npm`, voit päivittää uusimpiin `npm` versioihin kanssa: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console -npm asentaa -g npm@latest +npm install -g npm@latest ``` -## Määritä freeCodeCamp paikallisesti +## Set up freeCodeCamp locally -Nyt kun olet asentanut vaaditut tiedot, seuraa [paikallista asennusopastamme](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) kloonaamaan, asentamaan ja asettamaan freeCodeCamp paikallisesti koneeseesi. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!VAROITUS] +> [!WARNING] > -> Huomaathan, että tällä hetkellä on perustettu Cypressin testejä varten (ja niihin liittyviä käyttöliittymän tarpeita). Sinun pitäisi silti pystyä työskentelemään suurimman osan codebase. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Hyödyllisiä Linkkejä +## Useful Links -- [WSL2 Dev asennus Ubuntu 20.04, Node.js, MongoDB, VS Code ja Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - artikkeli Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) -- Usein kysytyt kysymykset: - - [Windows-alijärjestelmä Linuxille](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Telakointityöpöytä Windowsille](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Finnish/how-to-use-docker-on-windows-home.md b/docs/i18n/Finnish/how-to-use-docker-on-windows-home.md index 0f09721388..85ac65a3e3 100644 --- a/docs/i18n/Finnish/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Finnish/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Miten Dockeria käytetään Windows Home -käyttöjärjestelmässä +# How to use Docker on Windows Home -On olemassa muutamia sudenkuoppia on vältettävä, kun perustetaan telakka Windows Home. Ensinnäkin sinun täytyy käyttää [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) järjestelmänvalvojana. Valitettavasti Windows Home ei tue Dockeria Windows-työpöydälle, joten sen sijaan on käytettävä työkalupakkia. Se on ajettava järjestelmänvalvojana, koska asennus käyttää symlinkkejä, joita ei voi luoda toisin. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Kun olet asentanut työkalulaatikon, suorita Docker Quickstart Terminal järjestelmänvalvojaksi. Tämä luo `oletuksen` virtuaalisen koneen, jos sitä ei ole jo olemassa. Kun se on tapahtunut, sulje terminaali ja avaa VirtualBox (jälleen järjestelmänvalvoja). Sinun pitäisi pystyä näkemään `oletus` kone. Sivusto on varsin resurssiintensiivinen, joten lopeta virtuaalinen kone ja nostaa asetuksia niin paljon kuin voit - muistia erityisesti. Se on vahvistettu, että työskentely 4 Gt ram. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Kun olet iloinen, että Docker toimii, kloonaa freeCodeCamp repo kansioon sisällä `C:\Käyttäjät`. Nämä hakemistot jaetaan, jolloin Docker pääsee paikallisiin hakemistoihin, joita se tarvitsee asennuksen aikana. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Jos näet tällaisia viestejä +If you see messages like ```shell -bash: change_volumes_owner.sh: Ei tällaista tiedostoa tai kansiota +bash: change_volumes_owner.sh: No such file or directory ``` -kun olet `npm ajaa telakka:init` tämä on todennäköisesti syyllinen. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Finnish/how-to-work-on-coding-challenges.md b/docs/i18n/Finnish/how-to-work-on-coding-challenges.md index faab4b4092..2b95545e91 100644 --- a/docs/i18n/Finnish/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Finnish/how-to-work-on-coding-challenges.md @@ -1,108 +1,112 @@ -# Miten koodaukseen liittyviä haasteita voidaan käsitellä +# How to work on coding challenges -Tavoitteenamme on kehittää hauska ja selkeä vuorovaikutteinen oppimiskokemus. +Our goal is to develop a fun and clear interactive learning experience. -Vuorovaikutteisten koodaushaasteiden suunnittelu on vaikeaa. Olisi paljon helpompi kirjoittaa pitkä selitys tai luoda video opetusohjelma, ja siellä on paikka niille Medium ja YouTube. Kuitenkin, meidän ydinopetussuunnitelma, olemme kiinni mikä toimii parhaiten useimmat ihmiset - täysin interaktiivinen, videopeli kaltainen kokemus. +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. -Haluamme, että leiriläiset saavuttavat virtaustilan. Haluamme, että ne rakentavat vauhtia ja räjähtävät opetussuunnitelmamme läpi mahdollisimman harvalla välipalalla. Haluamme, että ne käsittelevät hankkeita luottavaisin mielin ja että ne altistuvat laajasti ohjelmasuunnittelukonsepteille. +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. -Näiden haasteiden luominen edellyttää valtavaa luovuutta ja yksityiskohtien huomiointia. Saatavilla on paljon apua. Sinulla on tukea koko joukko osallistujia, joille voit pomppia ideoita pois ja demo haasteitasi. Pysy aktiivisena [osallistujien huoneessa](https://gitter.im/freecodecamp/contributors) ja kysy paljon kysymyksiä. +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/). -Autuksesi avulla voimme suunnitella interaktiivisen koodausopetussuunnitelman, joka auttaa miljoonia ihmisiä oppimaan koodaamaan tulevina vuosina. +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. -Kunkin haasteen sisältö on tallennettu omaan markdown tiedostoon. Tämä markdown tiedosto on myöhemmin muunnettu HTML käyttäen työkaluja luoda interaktiivisia verkkosivuja. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Löydät kaikki freeCodeCamp.orgin opetussuunnitelman sisällön [`/opetussuunnitelma/haasteita`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) hakemistosta. +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. -## Määritä opetussuunnitelman työkalun asetukset +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Ennen kuin työskentelet opetussuunnitelman, sinun pitäisi perustaa joitakin työkaluja, joiden avulla voit testata muutoksia. Voit käyttää mitä tahansa alla olevaa vaihtoehtoa: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- Voit [määrittää freeCodeCamp paikallisesti](how-to-setup-freecodecamp-locally.md). Tämä on **erittäin suositeltavaa** säännöllisille/toistuville maksuille. Tämä asetus sallii sinun työskennellä ja testata muutoksiasi. -- Käytä Gitpodia, ilmainen online dev ympäristö. Alla olevan painikkeen napsauttaminen käynnistää käyttövalmiuden koodin dev ympäristön freeCodeCamp selaimessasi. Se kestää vain muutaman minuutin. +## Set up the tooling for the curriculum - [![Avaa Gitpodissa](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Muokkaa tiedostoja GitHubin käyttöliittymässä klikkaamalla kynä kuvaketta vastaavaa tiedostoa. Vaikka tämä on nopein tapa, sitä ei suositella ****, koska et pysty testaamaan muutoksia GitHubissa. Jos ylläpitäjämme päättelevät, että tekemäsi muutokset on testattava paikallisesti, sinun on noudatettava yllä olevia menetelmiä sen sijaan uudelleen. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Haasteen Malli + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Alla on malli siitä, miltä haasteen markdown tiedostot näyttävät tällä hetkellä. Jos haluat nähdä virtaviivaistetun mallin , hyväksymme sen [alla](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: Yksilöllinen tunniste (aakkosnumeerinen, MongoDB_id) -otsikko: Challenge Title +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 0 videoUrl: 'url of video explanation' --- -## Kuvaus +## Description
            -A Kuvaus haasteesta ja siitä, mitä tarvitaan +A Description of the challenge and what is required to pass
            -## Ohjeet +## Instructions
            -Ohjeet siitä, mitä tarkalleen pitää tehdä. +Instructions about what exactly needs to be done.
            -## Testit +## Tests
            ```yml -testit: - - teksti: Tulisiko palauttaa "foo" - testiMerkkijono: 'Kieltäytynyt funktio mahdollisesti käyttäen Chai asetuksia' +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
            -## Haasteen Siemenet +## Challenge Seed
            ```{ext} -Koodi näytetään oletusarvoisesti editorissa. +Code displayed in the editor by default. -Tämä on vaadittu osa haasteen. +This is a required section for the challenge. ```
            -### Ennen Testejä +### Before Test
            ```{ext} -Valinnainen testiasetusten koodi. +Optional Test setup code. ```
            -### Testin Jälkeen +### After Test
            ```{ext} -Valinnainen Testaa alas -koodi. +Optional Test tear down code. ```
            -## Ratkaisu +## Solution
            ```{ext} -// ratkaisu tarvitaan +// solution required ```
            @@ -111,312 +115,389 @@ Valinnainen Testaa alas -koodi. > [!NOTE] > -> 1. Edellä olevissa jaksoissa esimerkkejä `{ext}` ovat: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Yllä olevan `Tests`-osion `text`- ja `testString`-osion tulee olla kelvollinen YAML-merkkijono. `testString` voi olla stringified funktio tai lauseke, joka voi käyttää Chai-asetuksia. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Numerointihaasteet +## Numbering Challenges -Jokainen haaste tarvitsee `id`. Jos et määritä yksi, MongoDB luo uuden satunnaisen kun se tallentaa tiedot; kuitenkin, emme halua sen tekevän sitä, koska haluamme haasteen olevan johdonmukainen eri ympäristöissä (lavastus, tuotanto, paljon erilaisia kehittäjiä, jne.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -Luo uusi kuori (olettaen MongoDB on käynnissä erikseen): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Suorita `mongo`-komento. -2. Suorita `ObjectId()` komento. +1. Run `mongo` command. +2. Run `ObjectId()` command. -Esimerkiksi: +For example: ```bash $ mongo MongoDB shell version v3.6.1 connecting to: mongodb://127.0.0.1:27017 -MongoDB serveri: 3.4.10 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Tulos on uusi id, esimerkiksi `5a474d78df58bafeb35d34` edellä. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -Kun sinulla on id, laita se merkkikansioon `id` -kenttään yläreunassa, esim. +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- id: 5a474d78df58bafeb3535d34 -otsikko: Haaste otsikko +title: Challenge Title ``` -## Haasteiden nimeäminen +## Naming challenges -Asioiden nimeäminen on vaikeaa. Olemme helpottaneet sitä asettamalla joitakin rajoituksia. +Naming things is hard. We've made it easier by imposing some constraints. -Kaikkien haasteen otsikoiden tulee olla täsmällisiä, ja niiden tulee noudattaa tätä kaavaa: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[objektin lauseke\] +\[verb\]\[object clause\] -Tässä muutamia esimerkkejä haasteen nimiä: +Here are some example challenge names: -- Määritä elementin täyttö napsauttamalla komentoa -- Tiivistetty matriisi kanssa .reduce -- Käytä kiinnike Notation löytää ensimmäinen merkki merkkijonossa +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Haasteen kuvaukset/ohjeet +## Challenge descriptions/instructions -Lausekkeiden on oltava selkeitä ja ytimekkäitä ja niissä on oltava mahdollisimman vähän ammattikieltä. Jos käytetään kielenkäyttö on välittömästi määriteltävä tavallisena englanninkielisenä. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Säilytä kohdat lyhennettyinä (noin 1-4 lausetta). Ihmiset ovat todennäköisemmin lukea useita lyhyitä kappaleita kuin seinän tekstiä. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Haastetekstin pitäisi käyttää toista henkilöä ("sinua") auttaakseen antamaan sille keskusteluäänen. Näin teksti ja ohjeet näyttävät puhuvan suoraan kamppailijan kanssa haasteen läpi. Yritä välttää käyttämästä ensimmäistä henkilöä ("I", "me", "Let's" ja "me"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Älä käytä lähteviä linkkejä. Nämä keskeyttävät virtauksen. Leirintäalueiden ei pitäisi koskaan olla google mitään näiden haasteiden aikana. Jos on resursseja, luulet, että leiriläiset hyötyisivät niistä, lisää ne haasteeseen liittyvään artikkeliin. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -Voit lisätä kaavioita, jos ehdottoman välttämätöntä. +You can add diagrams if absolutely necessary. -Älä käytä emojeja tai hymiöitä haasteissa. freeCodeCamp on globaali yhteisö, ja emojin tai emotiikan kulttuurinen merkitys voi olla erilainen eri puolilla maailmaa. Myös emojit voivat tehdä eri järjestelmiä. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Oikea substantiivi pitäisi käyttää oikeaa iskunvaimennusta kun mahdollista. Alla on luettelo sanoista, kuten niiden pitäisi näkyä haasteissa. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (suuraakkosin "J" ja "S" eikä lyhenteitä) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Edessä-end kehitys (adjective form with a dash) on, kun työskentelet etupäässä (substantiivi lomake ilman dash). Sama pätee "takaisin loppuun", "täysi pino", ja moniin muihin yhdistettyihin termeihin. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### 2 minuutin sääntö +### The 2-minute rule -Jokaisen haasteen pitäisi olla ratkaistavissa 120 sekunnin kuluessa syntyperäisen englantilaisen puhujan, joka on suorittanut siihen liittyvät haasteet. Tähän sisältyy aika, jonka kuluu ohjeiden lukemiseen, ymmärrä kylvetty koodi, kirjoittaa oma koodinsa ja saada kaikki testit hyväksyttäväksi. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Jos haasteen loppuun saattaminen kestää yli kaksi minuuttia, sinulla on kaksi vaihtoehtoa: +If it takes longer than two minutes to complete the challenge, you have two options: -- Yksinkertaista haastetta, tai -- Jaa haaste kahteen haasteeseen. +- Simplify the challenge, or +- Split the challenge into two challenges. -2 minuutin sääntö pakottaa sinut, haastesuunnittelija, tekemään ohjeistasi ytimekkäät, seed code -koodisi selväksi ja testit suoraan. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Seuraamme, kuinka kauan leiriläisten on ratkaistava muutoksia ja käytettävä näitä tietoja löytääkseen haasteita, joita on yksinkertaistettava tai jaettava. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modulaarisuus +### Modularity -Jokaisen haasteen pitäisi opettaa täsmälleen yksi käsite, ja käsitteen pitäisi näkyä haasteen nimestä. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Aiemmin käsiteltyjä käsitteitä voidaan vahvistaa toistolla ja variaatioilla esimerkiksi ottaa käyttöön h1 elementtejä yhdessä haasteessa, sitten h3 elementtejä muutamia haasteita myöhemmin. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Tavoitteenamme on vastata tuhansiin 2 minuutin haasteisiin. Ne voivat virrata yhteen ja toistaa aiemmin katettuja käsitteitä. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Haastetekstin muotoilu +### Formatting challenge text -Tässä on erityisiä muotoilu ohjeita haasteen tekstiä ja esimerkkejä: +Here are specific formatting guidelines for challenge text and examples: -- Kielen avainsanat menevät `` -tageissa. Esimerkiksi HTML-tagien nimet tai CSS-ominaisuuksien nimet -- Hakusanan ensimmäinen ilmentymä kun se on määritelty, tai yleiset avainsanat (esim. "objekti" tai "muuttumattomat") menevät `` -tageissa -- Viittaukset koodin osiin (eli funktioon, menetelmään tai muuttujan nimiin) olisi käärittävä `` -tageihin. Katso alla oleva esimerkki: -- Käytä parseInt muuntaaksesi muuttujan realNumber kokonaislukuksi. -- Monirivisiä koodilohkoja **edeltää tyhjä rivi**. Seuraava rivi on aloitettava kolmella reitillä, joita seuraa välittömästi yksi [tuetuista kielistä](https://prismjs.com/#supported-languages). Täydentääksesi koodilohkon sinun on aloitettava uusi rivi, jossa on vain kolme backtickia ja **toinen tyhjä rivi**. **Huomautus:** Jos aiot käyttää esimerkkikoodia YAML, käytä `yaml` sen sijaan, että `yml` kieliä selausmerkkien oikealle puolelle. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Katso alla oleva esimerkki: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Seuraava esimerkki koodista: +The following is an example of code: ```{language} -[SINUN KOODI TÄSTÄ] +[YOUR CODE HERE] ```` ```` -- Lisätietoja huomautuksen muodossa tulisi muotoilla `Huomautus: Loput huomautustekstiä... -- Jos tarvitaan useita muistiinpanoja luetella kaikki huomautukset erillisissä lauseissa käyttäen muotoa `Huomautuksia: Ensimmäisen huomautuksen tekstiä. Toinen huomautusteksti.`. -- Käytä kaksinkertaisia lainauksia soveltuvin osin +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Kirjoittaminen testit +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Haasteita pitäisi olla mahdollisimman vähän testejä tarpeen tarkistaa, että camper ymmärtää konseptin. +## Writing tests -Tavoitteenamme on kommunikoida se yksittäinen piste, että haaste yrittää opettaa, ja testata, että he ovat ymmärtäneet tämän pisteen. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Haastetestit voivat hyödyntää Node.js ja Chai.js väitöskirjakirjastoja. Tarvittaessa käyttäjän luomaa koodia voi myös käyttää muuttujassa. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## seed code Formatting +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Tässä on erityiset muotoiluohjeet haasteen seed codeille: +## Formatting seed code -- Käytä kahta välilyöntiä sisennykseen -- Javascript-lausunnot päättyvät puolipisteeseen -- Käytä kaksinkertaisia lainausmerkkejä tarvittaessa -- Kommenttimerkkien ja kommentin välillä tulisi olla välilyönti itse +Here are specific formatting guidelines for the challenge seed code: - `// Korjaa tämä rivi` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Vinkkejä ja ratkaisuja +### Seed code comments -Jokaisella haasteella on `Hanki Hint`-painike, jotta käyttäjä voi käyttää mitä tahansa haastetta varten luotuja vihjejä/ratkaisuja. Opetussuunnitelman vihjeet/ratkaisut aiheet sijaitsevat [foorumissamme](https://forum.freecodecamp.org/c/guide) `Guide`-kategorian alla. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Jos löydät ongelman olemassa olevan haasteen vihjeiden/ratkaisujen aiheen kanssa, voit tehdä ehdotuksia foorumilla [osallistujien kategoriassa](https://forum.freecodecamp.org/c/contributors). Moderaattorit ja käyttäjät, joilla on luotettavuustaso 3, tarkastelevat kommentteja ja päättävät, sisällyttävätkö ne muutokset vastaavaan vihje-/ratkaisuaiheeseen vai eivät. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Uusien Haastevihjeiden/ratkaisujen lisääminen Aiheet +Example of valid single line JavaScript comment: -Ota seuraavat vaiheet lisätessään uusi haasteen vihjeitä tai ratkaisuja koskeva aihe. +```js +// Only change code below this line +```` -1. Aloita seuraamalla samoja vaiheita uuden aiheen luomiseksi, mutta tarkista seuraava jotta voit luoda otsikko. -2. Aiheen otsikon tulisi alkaa otsikolla `freeCodeCamp Challenge Guide: `, joka on mukana opetussuunnitelman haasteen otsikossa. Esimerkiksi, jos haaste on nimeltään "`Chunky Monkey`", aiheen otsikko olisi "`freeCodeCamp Challenge Guide: Chunky Monkey`". -3. `camperbot` pitäisi olla näiden aiheiden tai viestien omistaja, joten sinun täytyy pyytää admin muuttaa omistusoikeus tärkein viesti `camperbotin `. -4. Kun uusi aihe on luotu, foorumi aiheen tunnus on luotu. Se sijaitsee foorumin aiheen URL-osoitteen lopussa. Tämä tunnus on lisättävä opetussuunnitelman haasteen etuosaan, joka tapahtuu tavanomaisen `Get a Hint`-painikkeen vetämisprosessin kautta, jotta se voidaan linkittää aiheeseen. +Example of a valid CSS comment: -### Ohjeet vihjeiden ja ratkaisujen sisällölle +```js +/* Only change code above this line */ +``` -Kun ehdotetaan ratkaisua opetussuunnitelman haasteeseen liittyvään oppaaseen liittyvään aiheeseen, koko koodi on lisättävä. Tämä sisältää kaikki alkuperäisen seed code plus kaikki muutokset, joita tarvitaan kaikkien haastetestien suorittamiseen. Seuraavaa mallia tulisi käyttää luotaessa uusia vihjejä/ratkaisuja aiheita: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
            + { /* Change code below this line */ } + + { /* Change code above this line */ } +

            {this.state.text}

            +
            + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: ````md -# Haasteen nimi Goes Here +# Challenge Name Goes Here --- -## Ongelmanselitys +## Problem Explanation -Tämä tiivistää mitä on tehtävä ilman, että vain toistetaan haasteen kuvausta ja/tai ohjeita. Tämä on valinnainen osio +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section -#### Relevant Linkit +#### Relevant Links - [Link Text](link_url_goes_here) - [Link Text](link_url_goes_here) --- -## Vinkkejä +## Hints -### Vihje 1 +### Hint 1 -Vihje menee tänne +Hint goes here -### Vihje 2 +### Hint 2 -Vihje menee tänne +Hint goes here --- -## Ratkaisut +## Solutions -
            Ratkaisu 1 (Click to Show/Hide) +
            Solution 1 (Click to Show/Hide) -``js -funktio myFunc() { - konsoli. og('Hei maailma!'); +```js +function myFunc() { + console.log('Hello World!'); } ```` -#### Koodin Selitys +#### Code Explanation -- Koodin selitys menee tähän -- Koodin selitys menee tähän +- Code explanation goes here +- Code explanation goes here -#### Asiaankuuluvat Linkit +#### Relevant Links -- [Linkin Teksti](link_url_goes_here) -- [Linkin Teksti](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
            ```` ## Testing Challenges -Ennen kuin [luo pull-pyyntö](how-to-open-a-pull-request. d) sinun on vahvistettava, että tekemäsi muutokset eivät aiheuta tahattomasti ongelmia haasteen kanssa. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Voit testata kaikkia haasteita suorita alla oleva komento juurihakemistosta +1. To test all challenges run the below command from the root directory ```` -npm run testi:opetussuunnitelma +npm run test:curriculum ``` -2. Voit myös testata lohkoa tai haasteiden ylälohkoa näillä komennoilla +2. You can also test a block or a superblock of challenges with these commands ``` -npm run test:curriculum --block='Basic HTML ja HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` npm run test:curriculum --superblock=responsive-web-design ``` -Voit myös testata yhtä haastetta erikseen suorittamalla seuraavat vaiheet: +You are also able to test one challenge individually by performing the following steps: -1. Vaihda `curriculum`-kansioon: +1. Switch to the `curriculum` directory: ``` - cd opetussuunnitelma + cd curriculum ``` -2. Suorita seuraava jokaiselle haastetiedostolle, jota varten olet muuttunut: +2. Run the following for each challenge file for which you have changed: ``` - npm run test -- -g 'haasteen koko englanninkielinen otsikko' + npm run test -- -g 'the full English title of the challenge' ``` -Kun olet varmistanut, että jokainen haaste olet työskennellyt läpäisee testit, [luo pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> Voit asettaa `LOCALE` ympäristömuuttujan `.env` sen haasteen (haasteiden) kieleen, jota sinun täytyy testata. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> Tällä hetkellä hyväksytyt arvot ovat `english` ja `chinese`, ja `english` on oletusarvoisesti asetettu. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Tuleva Haastemalli +## Upcoming Challenge Template -Haastemalli päivitetään puhtaampaan ja vähemmän sisäkkäiseen rakenteeseen. Tätä ei ole täysin viimeistelty, mutta lopullisen rakenteen tulisi olla lähellä: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: ````mdx --- -id: Yksilöllinen tunniste (aakkosnumeerinen, MongoDB_id) -otsikko: 'Challenge Title' -challengeType: Integer, määritelty `client/utils/challengeTypes. s` +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` videoUrl: 'url of video explanation' forumTopicId: 12345 --- -import Script from './script. dx'; +import Script from './script.mdx'; ## --step-description-- -Kuvaus teksti, merkitty +Description text, in markdown ```html
            - esimerkki koodi + example code
            ``` -## --step-vihjeet-- +## --step-hints-- ![test-id-1] -On sattumanvarainen määrä kolminkertaisia ids, ohjeet (merkit) ja koodilohkoja. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Testin yksi koodi +Code for test one ``` ![test-id-2] -Lisää ohjeita markdown syntaksi +More instructions in markdown syntax ```js -Lisää koodi +More code ``` ## --step-seed-- -### --ennen-käyttäjäkoodi-- +### --before-user-code-- ```lang -Koodi arvioitu ennen käyttäjän +Code evaluated before the user’s ``` ### --after-user-code-- ```lang -Koodi arvioidaan käyttäjän jälkeen ja juuri ennen testejä +Code evaluated after the user’s, and just before the tests ``` ### --seed-content-- @@ -424,15 +505,15 @@ Koodi arvioidaan käyttäjän jälkeen ja juuri ennen testejä ![index-html] ```html -Jotkut html +Some html ``` ```css -Joitakin css +Some css ``` ```js -Jotkut js +Some js ``` ![index-js] @@ -441,63 +522,63 @@ Jotkut js

            - --ratkaisu-merkki-- + --solution-marker--

            - Täsmälleen sama kuin siemenlohko + Exactly the same as the seeds section

            - --next-solution-merkki + --next-solution-marker

            - Sama uudelleen + Same again

            - --question-merkki-- + --question-marker--

            - --text-markker-- + --text-marker--

            - Kysymys menisi tähän (käytetään vain videon haasteet) + The question would go here (only used for video challenges)

            - --vastausmerkki-- + --answers-marker--

            - Vastaa 1 + Answer 1


            - Vastaa 2 + Answer 2


            - Vastaa 2 + More answers

            - --ratkaisu-merkki-- + --solution-marker--

            @@ -513,13 +594,13 @@ Jotkut js

            - Hyödyllisiä Linkkejä + Useful Links

            - Haasteiden luominen ja muokkaaminen: + Creating and Editing Challenges:

            @@ -527,14 +608,14 @@ Jotkut js
            1. - Haastetyypit - mitä numeerinen haaste tarkoittaa (enum). + Challenge types - what the numeric challenge type values mean (enum).

            2. - Osallistuminen FreeCodeCamp - Kirjoittaminen ES6 Challenge Testit - video jälkeen Ethan Arrowood hän osallistuu vanhan version opetussuunnitelman. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

            3. diff --git a/docs/i18n/Finnish/how-to-work-on-the-docs-theme.md b/docs/i18n/Finnish/how-to-work-on-the-docs-theme.md index aee22287e8..bf8bf8f6c9 100644 --- a/docs/i18n/Finnish/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Finnish/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Miten työskennellä docs teema +# How to work on the docs theme -> [!HUOM] Nopea muistutus siitä, että sinun ei tarvitse asettaa mitään sisällön työstämiseen dokumentaatiosivustolle. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Voit muokata tai lisätä tiedostoja `docs` -hakemistoon [jotka ovat saatavilla tästä](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Kun muutoksesi on yhdistetty, se asetetaan saataville automaattisesti dokumentaatiosivustolla. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Dokumenttien verkkosivuston rakenne +## Structure of the docs website -Sivusto luodaan käyttäen [`docsify`](https://docsify.js.org), ja se tarjoillaan GitHub sivuilla. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Tyypillisesti sinun ei tarvitse muuttaa mitään konfiguraatiota tai rakentaa sivuston paikallisesti. Jos olet kiinnostunut, tässä on miten se toimii: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- Kotisivun lähde tälle sivustolle on saatavilla [`docs/index.html`](index.html). -- Palvelemme tätä tiedostoa SPA:na käyttäen `docsify` ja GitHub sivuja. -- The `docsify` skripti generoi `markdown` tiedoston sisällön `docs` hakemistoon pyynnöstä. -- Kotisivu on luotu [`_coverpage.md`](_coverpage.md). -- sivupalkin navigointi on luotu [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Asiakirjojen tarjoaminen paikallisesti +## Serving the documentation site locally -Monista freeCodeCamp: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -Asenna `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -ja palvella `/docs` hakemistoa +and serve the `/docs` directory -```sh -docsify palvele dokumentteja +```console +docsify serve docs ``` -Vaihtoehtoisesti, jos olet asentanut freeCodeCamp paikallisesti (katso paikallinen asennusohje), me niputamme CLI kanssa kehitystyökaluja, jotta voit ajaa `npm ajaa docs:serve` juuresta repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Finnish/how-to-work-on-the-news-theme.md b/docs/i18n/Finnish/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Finnish/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Finnish/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Finnish/index.md b/docs/i18n/Finnish/index.md index 371de6daca..1c4add4ab3 100644 --- a/docs/i18n/Finnish/index.md +++ b/docs/i18n/Finnish/index.md @@ -1,45 +1,43 @@ -The [freeCodeCamp.org](https://freecodecamp.org) yhteisö on mahdollista ansiosta tuhansia vapaaehtoisia kuten sinä. Suhtaudumme myönteisesti kaikkiin yhteisön toimintaan ja olemme innoissamme voidessamme toivottaa teidät tervetulleeksi. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!HUOM] Ennen kuin jatkat, ole hyvä ja ota nopeasti 2 minuuttia lukea [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). Noudatamme sitä tiukasti kaikkialla yhteisössämme. Haluamme edistää freeCodeCamp.orgin käyttöä turvallisena ja osallisena kokemuksena kaikille. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Onnellinen osallistuminen. +Happy contributing. -Olet tervetullut: +You are welcome to: -- Luo, päivitä ja korjaa vikoja [koodaushaasteisiimme](#coding-challenges). -- Auta meitä korjaamaan bugeja freeCodeCamp.orgin [oppimisalustalla](#learning-platform). -- _(Tulossa pian)_ Auta meitä kääntämään freeCodeCamp.org maailman kielille. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Onko kysyttävää? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Koodaus Haasteet +## Curriculum -Kaikki koodaushaasteemme kuratoivat yhteisö ja tuovat asiantuntevaa tietoa kaltaisistasi vapaaehtoisista. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Voit auttaa laajentamaan niitä ja parantamaan niiden sanamuotoa. Voit myös päivittää käyttäjän tarinoita selittää käsite paremmin tai poistaa tarpeettomia ja parantaa haasteen testejä, jotta ne paremmin testata ihmisten koodia. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Jos olet kiinnostunut parantamaan näitä koodauksen haasteita, tässä [miten koodauksen haasteita käsitellään.](how-to-work-on-coding-challenges.md)** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Oppimisfoorumi +## Learning Platform -Meidän oppimisalusta toimii moderni JavaScript pino. Siinä on erilaisia komponentteja, työkaluja ja kirjastoja, mukaan lukien mutta ei rajoittuen, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, ja enemmän. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Laajasti +Broadly, we use -- Meillä on Node.js pohjainen API-palvelin. -- Joukko React-pohjaisia asiakassovelluksia. -- Käsikirjoitus, jota käytämme arvioimaan etupään projektejamme. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Tämän edistäminen vaatii jonkin verran ymmärrystä API:ista, ES6-syntaksista ja paljon uteliaisuutta. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Pohjimmiltaan odotamme perustietoisuutta joistakin edellä mainituista teknologioista, välineistä ja kirjastoista. Näin ollen teidän ei tarvitse olla heidän asiantuntijansa, jotta voisitte antaa panoksensa. +If you want to help us improve our codebase... -**Jos haluat auttaa meitä parantamaan codebase, voit joko käyttää Gitpod, ilmainen online dev ympäristö** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Avaa Gitpodissa](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts valmis koodi dev ympäristö freeCodeCamp selaimessasi.) +Or you can... -TAI - -**voit [määrittää freeCodeCamp paikallisesti](how-to-setup-freecodecamp-locally.md) koneellasi.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Finnish/moderator-handbook.md b/docs/i18n/Finnish/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Finnish/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
              + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/French/FAQ.md b/docs/i18n/French/FAQ.md index 6bc89b8721..e6ef4fed0d 100644 --- a/docs/i18n/French/FAQ.md +++ b/docs/i18n/French/FAQ.md @@ -1,95 +1,76 @@ -### Je suis nouveau sur GitHub et Open Source, où dois-je commencer ? +### I am new to GitHub and Open Source. Where should I start? -Lisez notre ["Comment contribuer au Guide Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). C'est une ressource compressive des premiers projets de minuterie et des lignes directrices. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Puis-je traduire le curriculum de freeCodeCamp ? +### Can I translate freeCodeCamp's curriculum? -Nous lancerons les efforts de localisation sur freeCodeCamp en commençant par le **chinois** en premier. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Nous avons l'intention de rendre le programme disponible dans plus de langues, mais nous ne pouvons nous engager à respecter aucune date limite. Plusieurs limites opérationnelles telles que le personnel, les contributeurs actifs et les coûts des serveurs jouent un rôle dans la conduite des efforts d'internationalisation (i18n). +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Nous avons l'intention de commencer les efforts d'i18n dans ces langues: l'arabe, le portugais Russe et Espagnol (dans aucun ordre particulier) après que nous ayons publié le programme en chinois. +### How can I report a new bug? -**Pourquoi vous concentrez-vous d'abord sur le programme d'études chinois?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -La Chine est la plus grande région démographique de notre public anglophone non autochtone. Actuellement, nous avons des centaines de milliers d'utilisateurs qui utilisent une ancienne version de la plate-forme. L’accent mis sur le programme de la Chine nous donnera une estimation de la logistique impliquée dans l’i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Nous nous concentrerons sur l'Amérique latine en tant que région démographique pour les Portugais et les Espagnols. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -Nous n'avons pas de plans pour i18n pour d'autres langues que ce qui précède dans un avenir proche. +### How can I report a security issue? -Nous ne vous encourageons pas à travailler sur i18n sur les langues ci-dessus. Nous pouvons accepter les demandes de tirage, sans aucune attente d'aucun calendrier pour les déploiements. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Comment puis-je signaler un nouveau bogue ? +### I am a student. Can I work on a feature for academic credits? -Si vous pensez avoir trouvé un bogue, lisez d'abord l'article ["Aide J'ai trouvé un bogue"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) et suivez ses instructions. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Si vous êtes sûr que c'est un nouveau bug, allez de l'avant et créez un nouveau problème GitHub. Assurez-vous d'inclure autant d'informations que possible afin que nous puissions reproduire le bogue. Nous avons un modèle de fiche prédéfini pour vous aider dans cette tâche. +We request you to plan ahead and work on code contributions with this in mind. -Veuillez noter que tous les problèmes qui demandent de l'aide pour le codage sur un défi seront clos. Le système de suivi de problèmes est strictement destiné aux problèmes et discussions liés à la base de code. En cas de doute, vous devriez [demander de l'aide sur le forum](https://forum.freecodecamp.org) avant de faire un rapport. +### What do these different labels that are tagged on issues mean? -### Comment puis-je signaler un problème de sécurité? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Veuillez ne pas créer de problèmes GitHub pour les problèmes de sécurité. Au lieu de cela, veuillez envoyer un e-mail à `security@freecodecamp.org` et nous nous pencherons dessus immédiatement. +### Where do I start if I want to work on an issue? -### Je suis étudiant, puis-je travailler avec notre équipe sur une fonctionnalité de crédits académiques? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Oui, sûr. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -Alors que nous sommes ouverts à toutes les contributions, Veuillez noter que nous ne sommes pas en mesure de respecter les échéanciers qui pourraient être exigés dans votre collège ou votre université. Nous recevons de nombreuses pull-requests et contributions de code par des développeurs bénévoles, et nous respectons leur temps et leurs efforts. Nous ne serons pas en mesure d'accorder une attention particulière aux relations publiques pour être juste à tous. +### I found a typo. Should I report an issue before I can make a pull request? -Nous vous demandons de planifier à l'avance et de travailler sur une fonctionnalité en gardant cela à l'esprit. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Que signifient ces différentes étiquettes étiquetées sur les problèmes? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -Les responsables de code [trient les problèmes](https://en.wikipedia.org/wiki/Software_bug#Bug_management) et les demandes de fusion en fonction de leur priorité, de leur sévérité et d'autres facteurs. Vous pouvez [trouver un glossaire complet de leurs significations ici](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Où dois-je commencer si je veux travailler sur une question ? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Vous devriez passer par [**`aide recherchée`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) ou [**`premiers minuteurs seulement`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) problèmes pour un aperçu rapide de ce qui est disponible pour vous. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`help wanted`** issues are up to grabs, and you do not need to seek permission before work on them. Cependant, les problèmes avec le label **`premiers minuteurs seulement`** sont réservés aux personnes qui n'ont pas contribué à la base de code de freeCodeCamp auparavant. Si ces questions manquent de clarté sur ce qui doit être fait, n'hésitez pas à poser des questions dans les commentaires. +### I am stuck on something that is not included in this documentation. -### J'ai trouvé une faute de frappe, devrais-je signaler un problème avant de pouvoir faire une demande d'ajout ? - -Pour les fautes de frappe et autres modifications de libellé, vous pouvez ouvrir directement des demandes de fusion sans créer de ticket d'abord. Les questions sont plus destinées à discuter de problèmes plus importants liés au code ou aux aspects structurels du curriculum. - -Cependant, veuillez mentionner les détails, le contexte etc. dans la zone de description de la pull request pour nous aider à comprendre et à examiner votre contribution, même pour des changements mineurs. - -### Comment puis-je obtenir une demande qui me soit attribuée? - -En général, nous n'assignons pas de tickets à quelqu'un d'autre que des contributeurs de longue date pour éviter des non-shows ambigus. Au lieu de cela, nous suivons la politique ci-dessous pour être justes à l'égard de tous: - -1. La première demande d'ajout pour n'importe quel problème est préférée être fusionnée. -2. Dans le cas de plusieurs pull requests pour le même problème, nous donnons la priorité à la qualité du code dans les pull requests. - - Avez-vous inclus des tests ? - - Avez-vous attrapé toutes les usecases? - - Avez-vous vérifié la réussite de tous les tests et vous avez confirmé que tout fonctionne localement ? -3. Enfin, nous favorisons les demandes de tirage qui suivent nos recommandations de conduite. - - Avez-vous suivi la liste de contrôle des demandes d'ajout ? - - Avez-vous nommé votre titre de pull request de manière significative ? - -Vous n'avez pas besoin de permission pour les tickets qui sont marqués `aide recherchée` ou `premiers minuteurs seulement` comme expliqué plus tôt. - -Suivez attentivement les directives et ouvrez une demande de tirage. - -### Je suis coincé sur quelque chose qui n'est pas inclus dans cette documentation. - -**N'hésitez pas à demander de l'aide dans :** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Nous sommes heureux de vous aider à contribuer à l'un des sujets sur lesquels vous aimeriez travailler. N'hésitez pas à nous poser des questions sur les sujets connexes et nous serons heureux de vous éclaircir. Assurez-vous de rechercher votre requête avant d'en poster une nouvelle. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Soyez poli et patient. Notre communauté de bénévoles et de modérateurs est toujours là pour vous guider dans vos requêtes. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Assistance supplémentaire:** +**Additional Assistance:** -Si vous avez des questions sur la pile, l'architecture de la base de code, n'hésitez pas à contacter notre équipe de développement du personnel : +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Employé | Envoyer un message sur le forum | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | | Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | @@ -98,4 +79,4 @@ Si vous avez des questions sur la pile, l'architecture de la base de code, n'hé | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | | Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Vous pouvez envoyer un courriel à notre équipe de développeurs à: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/French/_sidebar.md b/docs/i18n/French/_sidebar.md index 1f889380a0..1b5bda2bdc 100644 --- a/docs/i18n/French/_sidebar.md +++ b/docs/i18n/French/_sidebar.md @@ -1,36 +1,39 @@ -- **Commencer** - - [Introduction](index 'Contribuer à la communauté freeCodeCamp.org') - - [Foire aux questions](FAQ.md) -- **Contribution au code** -- - [Mettre en place freeCodeCamp localement](how-to-setup-freecodecamp-locally.md) - - [Ouvrir une pull request](how-to-open-a-pull-request.md) - - [Travailler sur les défis de codage](how-to-work-on-coding-challenges.md) - - [Travailler sur les défis vidéo](how-to-help-with-video-challenges.md) - - [Travailler sur le thème des nouvelles](how-to-work-on-the-news-theme.md) - - [Travailler sur le thème docs](how-to-work-on-the-docs-theme.md) -- **Tutoriels optionnels** - - [Attrape les e-mails sortants localement](how-to-catch-outgoing-emails-locally.md) - - [Configurer freeCodeCamp sur WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Manuels de vol** (pour le personnel & Mods) - - [Manuel de Modérateur](flight-manuals/moderator-handbook.md) - - [Modèles de réponse](flight-manuals/using-reply-templates.md) - - [Vue d'ensemble de DevOps](devops.md) - - [Travailler sur les serveurs](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Notre communauté** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Forum de discussion**](https://freecodecamp.org/forum/c/contributors) - - [**Chat Gitter**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/French/devops.md b/docs/i18n/French/devops.md index 7f3fa3de34..46fb8b5382 100644 --- a/docs/i18n/French/devops.md +++ b/docs/i18n/French/devops.md @@ -1,75 +1,75 @@ -# Opérations des développeurs sur freeCodeCamp.org +# DevOps Handbook -Ce guide vous aidera à comprendre notre pile d'infrastructures et comment nous maintenons nos plates-formes. Bien que ce guide n'ait pas de détails exhaustifs pour toutes les opérations, il pourrait être utilisé comme référence pour votre compréhension des systèmes. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Faites-nous savoir si vous avez des commentaires ou des questions, et nous serons heureux de les clarifier. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Comment construire, tester et déployer la base de code? +# Flight Manual - Code deployments -Ce dépôt est continuellement construit, testé et déployé sur **des ensembles d'infrastructures séparés (serveurs, bases de données, CDNs, etc.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Cela implique trois étapes à suivre dans l'ordre : +This involves three steps to be followed in sequence: -1. De nouveaux changements (correctifs et fonctionnalités) sont fusionnés dans notre branche de développement primaire (`master`) via des demandes de fusion. -2. Ces changements sont exécutés par une série de tests automatisés. -3. Une fois les tests passés, nous publions les changements (ou les mettre à jour si nécessaire) vers les déploiements de notre infrastructure. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Construction de la base de code - Mapping Git Branches to Deployments. +#### Building the codebase - Mapping Git Branches to Deployments. -Généralement, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (la branche de développement par défaut) est fusionnée dans la branche [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) une fois par jour et est libérée dans une infrastructure isolée. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Il s'agit d'une version intermédiaire pour nos développeurs et nos contributeurs bénévoles. Il est également connu sous le nom de notre version « stagiaire » ou « bêta ». +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Il est identique à notre environnement de production en direct sur `freeCodeCamp.org`, en utilisant un ensemble séparé de bases de données, de serveurs, de proxys Web, etc. Cette isolation nous permet de tester le développement et les fonctionnalités en cours dans une "production" comme le scénario, sans affecter les utilisateurs réguliers des plates-formes principales de freeCodeCamp.org. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Une fois que l'équipe de développeurs [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) est satisfaite des changements sur la plate-forme de mise en scène, ces changements sont déplacés tous les quelques jours vers la branche [`en cours de production`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current). +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -C'est la version finale qui déplace les changements sur nos plateformes de production sur freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Changements de test - Essais d'intégration et d'acceptation de l'utilisateur. +#### Testing changes - Integration and User Acceptance Testing. -Nous employons différents niveaux d’intégration et d’acceptation pour vérifier la qualité du code. Tous nos tests sont effectués par le biais de logiciels tels que [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) et [Pipelines Azure](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Nous avons des tests unitaires pour tester nos solutions de défi, les API serveur et les interfaces utilisateur client. Celles-ci nous aident à tester l'intégration entre les différents composants. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!NOTE] Nous sommes également en train d'écrire des tests utilisateur final qui aideront à reproduire des scénarios de monde réel comme la mise à jour d'un e-mail ou un appel à l'API ou aux services tiers. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Ensemble, ces tests aident à empêcher les problèmes de se répéter et à s'assurer que nous n'introduisons pas de bogue lorsque nous travaillons sur un autre bogue ou une fonctionnalité. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Déploiement des modifications - Envoi des modifications aux serveurs. +#### Deploying Changes - Pushing changes to servers. -Nous avons configuré des logiciels de livraison continue pour pousser les changements à nos serveurs de développement et de production. +We have configured continuous delivery software to push changes to our development and production servers. -Une fois que les modifications sont poussées vers les branches de version protégées, un pipeline de construction est automatiquement déclenché pour la branche. Les pipelines de construction sont chargés de construire des artefacts et de les garder dans un entrepôt froid pour une utilisation ultérieure. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -Le pipeline de construction continue à déclencher un pipeline de sortie correspondant s'il termine une exécution réussie. Les pipelines de version sont responsables de la collecte des artefacts de compilation, de leur déplacement vers les serveurs et de leur mise en ligne. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Le statut des versions et des versions sont [disponibles ici](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Déclenchement d'une construction, d'un test et d'un déploiement. +## Trigger a build, test and deploy -Actuellement, seuls les membres de l'équipe de développement peuvent pousser vers les branches de production. Les modifications apportées aux branches `production-*` ne peuvent atterrir que via une fusion rapide vers le [`amont`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!NOTE] Dans les jours à venir, nous améliorerions ce flux à faire via pull-requests, pour une meilleure gestion de l'accès et de la transparence. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Envoi des modifications vers les applications de pré-production. +### Pushing changes to Staging Applications. -1. Configurez vos télécommandes correctement. +1. Configure your remotes correctly. ```sh git remote -v ``` - **Résultats :** + **Results:** ``` - origine git@github.com:raisedadead/freeCodeCamp.git (fetch) - origine git@github.com:raisedadead/freeCodeCamp.git (push) - amont git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) - amont git@github.com:freeCodeCamp/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Assurez-vous que votre branche `master` est intacte et synchronisée avec le flux amont. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master @@ -77,51 +77,51 @@ Actuellement, seuls les membres de l'équipe de développement peuvent pousser v git reset --hard upstream/master ``` -3. Vérifiez que le CI Travis passe la branche `master` pour amont. +3. Check that the Travis CI is passing on the `master` branch for upstream. - Les [tests d'intégration continue](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) doivent être verts et PASSING pour la branche `maître`. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
              Vérification de l'état sur Travis CI (capture d'écran) +
              Checking status on Travis CI (screenshot)
              - ![Vérifier l'état de la construction sur Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
              - Si cela échoue, vous devriez vous arrêter et enquêter sur les erreurs. + If this is failing you should stop and investigate the errors. -4. Confirmez que vous êtes en mesure de construire le dépôt localement. +4. Confirm that you are able to build the repository locally. ``` - npm run cleanan-and-develop + npm run clean-and-develop ``` -5. Déplacer les modifications de `master` vers `production-staging` via une fusion rapide +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` git checkout production-staging git merge master - git push amont + git push upstream ``` - > [!NOTE] Vous ne serez pas en mesure de forcer le push et si vous avez réécrit l'historique de toute façon, ces commandes seront erronées. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > S'ils le font, vous avez peut-être fait quelque chose d'incorrectement et vous devriez juste recommencer. + > If they do, you may have done something incorrectly and you should just start over. -Les étapes ci-dessus déclencheront automatiquement un lancement sur le pipeline de construction pour la branche `en pré-production`. Une fois la compilation terminée, les artefacts sont enregistrés en tant que fichiers `.zip` dans un stockage froid à récupérer et à utiliser plus tard. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -Le pipeline de publication est déclenché automatiquement lorsqu'un nouvel artefact est disponible à partir du pipeline de construction connecté. Pour les plates-formes de pré-diffusion, ce processus ne nécessite pas d'approbation manuelle et les artefacts sont poussés vers le CDN client et les serveurs API. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP|label:Estimes] Typiquement, le build run prend environ 20-25 minutes pour être terminé suivi de la release run qui prend environ 15-20 minutes pour le client, et ~5-10 minutes pour que l'API soit disponible en direct. Du push de code à la mise en ligne sur les plates-formes de pré-production, tout le processus prend **~35-45 minutes** au total. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Envoi des modifications aux applications de production. +### Pushing changes to Production Applications. -Le processus est essentiellement le même que les plates-formes de pré-diffusion, avec quelques vérifications supplémentaires en place. C'est juste pour s'assurer que nous ne brisons rien sur freeCodeCamp.org qui peut voir des centaines d'utilisateurs l'utilisant à tout moment. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| N'exécutez PAS ces commandes à moins que vous n'ayez vérifié que tout fonctionne sur la plate-forme de pré-production. Vous ne devriez pas contourner ou ignorer les tests lors de la mise en scène avant de poursuivre. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Assurez-vous que votre branche `production-staging` est intacte et synchronisée avec le flux amont. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh git checkout production-staging @@ -129,99 +129,580 @@ Le processus est essentiellement le même que les plates-formes de pré-diffusio git reset --hard upstream/production-staging ``` -2. Déplacer les modifications de `production-staging` vers `production-current` via une fusion rapide +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` git checkout production-current git merge production-staging - git push amont + git push upstream ``` - > [!NOTE] Vous ne serez pas en mesure de forcer le push et si vous avez réécrit l'historique de toute façon, ces commandes seront erronées. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > S'ils le font, vous avez peut-être fait quelque chose d'incorrectement et vous devriez juste recommencer. + > If they do, you may have done something incorrectly and you should just start over. -Les étapes ci-dessus déclencheront automatiquement un lancement sur le pipeline de construction pour la branche `en cours de production`. Une fois qu'un artefact de construction est prêt, il déclenchera un run sur le pipeline de publication. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP|label:Estimes] Généralement, la compilation prend entre 20 et 25 minutes pour être terminée. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Étapes supplémentaires pour l'action du personnel** +**Additional Steps for Staff Action** -Une fois la version déclenchée, les membres du personnel du développeur recevront un courriel d’intervention manuelle automatisé. Ils peuvent soit _approuver_ ou _rejeter_ la release run. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Si les changements fonctionnent bien et ont été testés sur la plate-forme de mise en scène, alors ils peuvent être approuvés. L'approbation doit être donnée dans les 4 heures suivant le déclenchement de la publication avant d'être rejetée automatiquement. Une équipe peut relancer manuellement l'exécution de la version pour les exécutions rejetées, ou attendre le prochain cycle de publication. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Pour l'utilisation du personnel : +For staff use: -| Vérifiez votre email pour un lien direct ou [allez dans le tableau de bord de la version](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) une fois que la version est terminée. | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Une fois que l'un des membres du personnel aura approuvé une publication, le pipeline poussera les changements en direct vers les serveurs CDN de production et API de freeCodeCamp.org. Ils prennent généralement ~15-20 minutes pour le client, et ~5 minutes pour que les serveurs API soient disponibles en direct. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP|label:Estimes] Le lancement de la version prend généralement entre 15 et 20 minutes pour chaque instance du client, et entre 5 et 10 minutes pour chaque instance de l'API qui sera disponible en direct. Du push de code au live sur les plates-formes de production, tout le processus prend **~90-120 minutes** au total (sans compter le temps d'attente pour l'approbation du personnel). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Construire, tester et déployer le statut +## Build, Test and Deployment Status -Voici l'état actuel du test, de la construction et du déploiement du codebase. +Here is the current test, build and deployment status of the codebase. -| Type de texte | Branche | Statut | Tableau de bord | -|:---------------------- |:--------------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------- | -| Tests de CI | [`maître`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Statut de la construction de Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Aller au tableau de bord des statuts](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Tests de CI | [`production-pré-production`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Statut de la construction de Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Aller au tableau de bord des statuts](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Construire un pipeline | [`production-pré-production`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Statut de la compilation](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Aller au tableau de bord des statuts](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Relâcher le Pipeline | [`production-pré-production`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Aller au tableau de bord des statuts](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| Tests de CI | [`production-actuelle`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Statut de la construction de Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Aller au tableau de bord des statuts](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Construire un pipeline | [`production-actuelle`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Statut de la compilation](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Aller au tableau de bord des statuts](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Relâcher le Pipeline | [`production-actuelle`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Aller au tableau de bord des statuts](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Accès anticipé et test bêta +## Early access and beta testing -Nous vous souhaitons la bienvenue pour tester ces versions en mode **« bêta test publique »** et obtenir un accès rapide aux fonctionnalités à venir sur les plates-formes. Parfois, ces fonctionnalités/modifications sont appelées **suivantes, bêta, stagnation,** etc. de manière interchangeable. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Vos contributions par le biais de commentaires et de rapports de problèmes nous aideront à faire des plates-formes de production sur `freeCodeCamp. rg` plus **résilient**, **cohérent** et **stable** pour tout le monde. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Nous vous remercions d'avoir signalé les bogues que vous rencontrez et d'aider à améliorer freeCodeCamp.org. Vous piquez! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Identification de la prochaine version des plates-formes +### Identifying the upcoming version of the platforms -Actuellement, une version publique de test bêta est disponible sur : +Currently a public beta testing version is available at:

              freecodecamp.dev

              -> [!NOTE] Le nom de domaine est différent de **`freeCodeCamp.org`**. Ceci est intentionnel pour empêcher l'indexation des moteurs de recherche et éviter la confusion pour les utilisateurs réguliers de la plate-forme. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identification de la version actuelle des plateformes +### Identifying the current version of the platforms -**La version actuelle de la plateforme est toujours disponible sur [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -L'équipe du développeur fusionne les changements de la branche `pré-production` à la branche `production-current` quand ils publient des changements. Le meilleur commit devrait être ce que vous voyez en direct sur le site. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Vous pouvez identifier la version exacte déployée en visitant les journaux de construction et de déploiement disponibles dans la section d'état. Vous pouvez également nous envoyer un message dans le salon de discussion [contributeurs](https://gitter.im/FreeCodeCamp/Contributors) pour une confirmation. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Limitations connues +### Known Limitations -Il y a des limitations et des compromis connus lors de l'utilisation de la version bêta de la plate-forme. +There are some known limitations and tradeoffs when using the beta version of the platform. - #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Les utilisateurs de la version bêta auront un compte séparé de la production.** La version bêta utilise une base de données physiquement séparée de la production. Cela nous permet de prévenir toute perte accidentelle de données ou de modifications. L'équipe de développement peut purger la base de données sur cette version bêta si nécessaire. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Il n'y a aucune garantie quant à la disponibilité et à la fiabilité des plates-formes bêta. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Le déploiement devrait être fréquent et en itérations rapides, parfois plusieurs fois par jour. En conséquence, il y aura des temps d'arrêt inattendus ou des fonctionnalités cassées sur la version bêta. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### N'envoyez pas des utilisateurs réguliers sur ce site pour confirmer un correctif +- #### Do not send regular users to this site as a measure of confirming a fix - Le site bêta est et a toujours été d'augmenter le développement local et de tester, rien d'autre. Ce n’est pas une promesse de ce qui va se passer, mais un aperçu de ce sur quoi on travaille. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### La page des signes peut sembler différente de la production +- #### Sign page may look different than production - Nous utilisons un locataire de test pour freecodecamp.dev sur Auth0, et donc nous n'avons pas la possibilité de définir un domaine personnalisé. Cela fait que tous les callbacks de redirection et la page de connexion apparaissent dans un domaine par défaut comme : `https://freecodecamp-dev.auth0.com/`. Cela n'affecte pas la fonctionnalité est aussi proche de la production que nous pouvons obtenir. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Signaler des problèmes et laisser un commentaire +## Reporting issues and leaving feedback -Veuillez ouvrir de nouveaux tickets pour les discussions et rapporter des bogues. Vous pouvez les étiqueter comme **[`version : next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** pour le triage. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Vous pouvez envoyer un email à `dev[at]freecodecamp.org` si vous avez des questions. Comme toujours, toutes les vulnérabilités de sécurité doivent être signalées à `sécurité[at]freecodecamp.org` au lieu du tracker public et du forum. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

              https://amplify.nginx.com

              +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/French/flight-manuals/moderator-handbook.md b/docs/i18n/French/flight-manuals/moderator-handbook.md deleted file mode 100644 index e826b5335d..0000000000 --- a/docs/i18n/French/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,325 +0,0 @@ -# Le manuel officiel du modérateur de freeCodeCamp. - -Cela vous aidera à modérer différents endroits dans notre communauté, y compris : - -- Problèmes GitHub & demandes de fusion -- Le forum, les salons de chat, les groupes Facebook et d'autres lieux de rencontre en ligne -- Événements en personne comme les groupes d'étude, les hackathons et les conférences - -**Tous les modérateurs de freeCodeCamp sont des modérateurs à l'échelle de la communauté. Cela signifie que nous avons confiance en vous pour superviser l'un de ces endroits.** - -Ceci dit, vous pouvez être modérateur dans tous les endroits qui vous intéressent le plus. Certains modérateurs aident simplement sur GitHub. D'autres aident simplement sur le forum. Certains modérateurs sont actifs partout. - -En fin de compte, nous voulons que vous aimiez être modérateur, et investissez votre peu de temps dans des endroits qui vous intéressent. - -> [!NOTE] « Avec une grande puissance, il y a une grande responsabilité. » - Oncle Ben - -En tant que modérateur, le tempérament est plus important que la compétence technique. - -« Écoutez. » Soyez utile. N'abusez pas de votre pouvoir. - -freeCodeCamp est une communauté inclusive, et nous devons le garder ainsi. - -Nous avons un code de conduite unique qui régit toute notre communauté. Moins il y a de règles, plus il est facile de s'en souvenir. Vous pouvez lire ces règles et les valider dans la mémoire [ici](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Les modérateurs ont la possibilité de fermer les tickets et d'accepter ou de fermer les pull requests. - -Les modérateurs ont deux responsabilités principales vis-à-vis de GitHub : - -1. QA et fusion des demandes de fusion -2. Évaluation et réponse aux problèmes - -## Modération des demandes d'ajout - -Les Pull Requests (PR) sont la façon dont les contributeurs soumettent des modifications au dépôt de freeCodeCamp. Il est important que nous réalisions une assurance qualité (QA) sur les demandes de fusion avant de décider si nous devons les fusionner ou les fermer. - -### Types de demandes d'ajout - -1. **Modifications d'instructions de défi** Ce sont des changements au texte des défis - la description, les instructions ou le texte de test. Vous pouvez également consulter ces droits sur GitHub et décider de les fusionner. Nous devons être un peu plus prudents à cet égard, parce que des millions de personnes rencontreront ce texte au fur et à mesure qu'elles fonctionneront dans le programme de freeCodeCamp. La demande d'ajout rend-elle le texte plus clair sans le rendre beaucoup plus long ? Les modifications sont-elles pertinentes et pas excessivement pédantes ? Rappelez-vous que notre objectif est que les défis soient aussi clairs et aussi courts que possible. Ils ne sont pas l'endroit pour des détails obscurs. En outre, les contributeurs peuvent essayer d'ajouter des liens vers des ressources aux défis. Vous pouvez fermer ces pull requests et y répondre avec ceci: - - > Je vous remercie pour votre pull request. - > - > Je termine cette demande de tirage au sort. Veuillez ajouter des liens et d'autres détails à l'article correspondant au challenge à la place. - > - > Si vous pensez que je me trompe en fermant ce problème, veuillez le rouvrir et ajouter des précisions supplémentaires. Je vous remercie et je suis heureux de coder. - -2. **Défiez des modifications de Code** Ce sont des modifications au code dans un défi - la graine de défi, la solution de défi et les chaînes de test. Ces demandes de fusion doivent être retirées de GitHub et testées sur votre ordinateur local pour s'assurer que les tests de challenge peuvent toujours être passés avec la solution actuelle, et le nouveau code n'introduit aucune erreur. Certains contributeurs peuvent essayer d'ajouter des tests supplémentaires pour couvrir les angles pédantiques. Nous devons veiller à ne pas compliquer le défi. Ces défis et leurs tests devraient être aussi simples et intuitifs que possible. Outre les défis liés à l'algorithme et la section de préparation aux entretiens, les apprenants devraient être en mesure de résoudre chaque défi en environ 2 minutes. - -3. **Changements de Codebase** Ces modifications de code modifient la fonctionnalité de la plate-forme freeCodeCamp elle-même. Parfois, les contributeurs essaient de faire des changements sans grande explication, mais pour les changements de code, nous devons nous assurer qu'il y a un véritable besoin de changement. Ainsi, ces pull requests devraient faire référence à un problème GitHub existant où les raisons du changement sont discutées. Ensuite, vous pouvez ouvrir la demande de tirage sur votre ordinateur et les tester localement. Une fois que vous avez fait cela, si les changements sont bons, ne les fusionnez pas encore. Vous pouvez commenter la pull request en disant "LGTM", puis mentionner @raisedadead pour qu'il puisse y jeter un coup d'œil. - -### Comment fusionner ou fermer les demandes de fusion - -Tout d'abord, lorsque vous choisissez une demande d'ajout à QA, vous devez vous y assigner. Vous pouvez le faire en cliquant sur le lien "assigner vous-même" sous la partie "assignés" dans la colonne de droite de l'interface de GitHub. - -Selon le type de pull request il est, suivez les règles correspondantes énumérées ci-dessus. - -Avant de fusionner toute demande de pull, assurez-vous que GitHub a des coches vertes pour tout. S'il y a des X's, étudiez-les d'abord et voyez comment les faire passer en coches vertes. - -Parfois, il y aura un conflit de fusion. Cela signifie qu'une autre demande d'ajout a modifié exactement la même partie du même fichier. GitHub a un outil pour résoudre ces conflits de fusion sur GitHub. Vous pouvez essayer de résoudre ces conflits. Utilisez simplement votre meilleur jugement. Les changements de la demande de tirage seront en haut et les changements de la branche principale seront en bas. Parfois, il y aura des informations redondantes qui pourront être supprimées. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. - -Si la pull request semble prête à fusionner (et ne nécessite pas l'approbation de @raisedadead), vous pouvez aller de l'avant et la fusionner. Assurez-vous d'utiliser la fonctionnalité par défaut "Squash and Merge" sur GitHub. Cela va écraser toutes les livraisons de requêtes de fusion en une seule livraison, ce qui rend l'histoire de Git beaucoup plus facile à lire. - -Vous devriez ensuite commenter la pull request, en remerciant le contributeur de votre manière personnelle. - -Si l'auteur de la pull request est un « contributeur pour la première fois », vous devriez également les féliciter pour leur première pull request fusionnée au dépôt. Vous pouvez regarder le coin supérieur droit du corps du RP pour déterminer un contributeur pour la première fois. Il affichera `Premier contributeur` comme indiqué ci-dessous: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -Si la demande d'ajout ne semble pas prête à fusionner, vous pouvez poliment répondre à l'auteur en disant ce qu'il doit faire pour qu'elle soit prête. Espérons qu'ils répondront et se rapprocheront de leur demande de tirage pour être prêts. - -Souvent, une pull request sera évidemment un effort faible. Vous pouvez souvent le dire immédiatement lorsque le contributeur n'a pas pris la peine de vérifier les cases à cocher dans le modèle de Pull Request, ou a utilisé un titre générique de demande d'ajout comme « made changes » ou « Update index. - -Il y a également des situations où le contributeur essaie d'ajouter un lien vers son propre site web, ou inclure une bibliothèque qu'ils ont eux-mêmes créée, ou a un montage frivole qui ne sert à personne d'autre que lui-même. - -Dans ces deux situations, vous devriez aller de l'avant et fermer leur pull request et répondre avec ce message standard : - -> Merci d'avoir ouvert cette pull request. -> -> Ceci est un message standard vous informant que nous avons vérifié votre pull request et que nous avons décidé de ne pas la fusionner. Nous serions heureux de recevoir de votre part de futures demandes de tirage au sort. -> -> Je vous remercie et je suis heureux de coder. - -Si vous avez besoin d'un deuxième avis sur une pull request, allez-y et laissez vos commentaires sur la pull request, puis ajoutez l'étiquette "discussing" à la pull request. - -## Modération des tickets GitHub - -freeCodeCamp est un projet open source actif. Nous recevons chaque jour de nouvelles questions, qui doivent toutes être triées et étiquetées. - -### Types de problèmes GitHub - -1. **Demande d'aide de code**, pour laquelle les gens ont créé des problèmes GitHub. Si quelqu'un demande de l'aide, collez le message suivant, puis fermez le problème. - - > Merci d'avoir signalé ce problème. - > - > Ceci est un message standard vous informant que ce problème semble être une demande d'aide. Au lieu de demander de l'aide ici, veuillez cliquer sur le bouton \*\*"Aide"\*\* sur le défi sur freeCodeCamp, qui vous aidera à créer une question dans la bonne partie du forum. Les bénévoles sur le forum répondent généralement aux questions en quelques heures et peuvent aider à déterminer s'il y a un problème avec votre code ou les tests du défi. - > - > Si les membres du forum déterminent qu'il n'y a rien de mal avec votre code, vous pouvez demander que ce problème soit réouvert. - > - > Je vous remercie et je suis heureux de coder. - -2. **Problèmes de bogue ou de clarification** Essayez de reproduire le bogue vous-même si vous le pouvez. Sinon, demandez-leur les étapes pour reproduire le bogue, et s'ils ont des captures d'écran, des vidéos ou des détails supplémentaires qui peuvent vous aider à reproduire le problème. Une fois que vous pouvez reproduire le problème - ou au moins confirmer qu'il s'agit d'un problème légal - étiquez-le `confirmé`. Alors: - -- S'il s'agit d'un simple changement par rapport à un défi existant, étiqueter comme `premiers minuteurs seulement`, sinon étiqueter comme `aide voulait`. Utilisez d'autres étiquettes comme il se doit. -- Si le problème est plus significatif, marquer comme `bogue`.   S'il y a une ambiguïté quant à la bonne façon d'agir sur une question, N'hésitez pas à taguer @raisedadead sur le problème obtenez son avis, puis ajoutez l'étiquette `Discussing`. - -3. **Problèmes dupliqués** Si un problème est le même qu'un autre problème signalé, le problème signalé précédemment doit avoir la priorité. Marquer comme `Dupliquer`, coller le message suivant en remplaçant `#XXXXX` par le numéro du ticket, puis fermer le ticket. - - > Merci d'avoir signalé ce problème. - > - > Ceci est un message standard vous informant que ce problème semble être très similaire au problème #XXXXX, donc je le ferme comme un doublon. - > - > Si vous pensez que je me trompe en fermant ce problème, veuillez le rouvrir et ajouter des précisions supplémentaires. Je vous remercie et je suis heureux de coder. - -4. **Correction en pré-production** Certains problèmes ont peut-être déjà été résolus dans la mise en scène, mais aucun problème GitHub ne leur est associé. Si c'est le cas, vous pouvez coller le message suivant, fermer le problème et ajouter un label `: résolu/expédition`: - - > Merci d'avoir signalé ce problème. - > - > Ceci est un message standard vous informant que le problème que vous avez mentionné ici est présent en production, mais qu'il a déjà été corrigé dans la mise en scène. Cela signifie que la prochaine fois que nous pousserons notre branche de production vers la production, ce problème devrait être résolu. À cause de cela, je clôt cette question. - > - > Si vous pensez que je me trompe en fermant ce problème, veuillez le rouvrir et ajouter des précisions supplémentaires. Je vous remercie et je suis heureux de coder. - -### Étape de clôture, obsolète, problèmes inactifs et demandes de fusion - -- Les problèmes ou PRs sont ceux qui n'ont pas vu d'activité de l'OP depuis 21 jours (3 semaines de la dernière activité), mais seulement après qu'un modérateur a demandé plus d'informations/de modifications. Ils peuvent être fermés dans un script automatisé/bot ou par les modérateurs eux-mêmes. - -- L'activité est définie en tant que : Commentaires demandant une mise à jour sur la PR et les triages comme le statut `: mise à jour de l'étiquette` requise, etc. - -- Si l'OP demande une aide supplémentaire ou même du temps, ce qui précède peut être assoupli et révisé après qu'une réponse ait été donnée. Dans tous les cas, les mods doivent utiliser leur meilleur jugement pour résoudre le statut du PR. - -### Autres directives pour les modérateurs sur GitHub - -Bien que vous ayez accès en écriture au dépôt de freeCodeCamp, **vous ne devriez jamais envoyer de code directement dans les dépôts de freeCodeCamp**. Tout le code doit entrer la base de code de freeCodeCamp sous la forme d'une pull request depuis un fork du dépôt. - -En outre, vous ne devriez jamais accepter vos propres PR. Ils doivent être QA'd par un autre modérateur, comme pour tout autre PR. - -Si vous remarquez quelqu'un qui enfreint le [code de conduite](https://code-of-conduct.freecodecamp.org) sur les problèmes GitHub, ou en ouvrant des demandes d'ajout avec un contenu ou un code malveillant, envoyez un courriel à dev@freecodecamp. rg avec un lien vers la pull request offensante et nous pouvons envisager de les bannir de l'organisation GitHub de freeCodeCamp. - -# Modération du forum - -En tant que modérateur, vous aidez à faire de notre communauté un endroit agréable pour que tout le monde apprenne et obtienne de l'aide. Vous vous occuperez des messages signalés et gérerez le spam, hors sujet et autres conversations inappropriées. - -Notez qu'une fois que vous êtes modérateur sur le forum, vous allez commencer à voir des conseils de modérateur bleu sur les membres du forum, comme "c'est la première fois que [person] a posté - bienvenue à la communauté ! ou"[person] n'a pas posté depuis longtemps - saluons-les à nouveau." - -![Un message texte bleu disant "c'est la première fois que [person] est posté - bienvenue à la communauté !](https://i.imgur.com/mPmVgzK.png) - -Ce sont des occasions pour vous de les accueillir et de les rendre plus spéciaux. Vous ne savez jamais quelle personne est marginalement impliquée peut devenir notre prochain super-aideur, en aidant beaucoup d'autres personnes dans leur voyage de codage. Même la moindre bonté peut déclencher une cascade de bonnes actions. - -### Suppression des messages du forum - -Les modérateurs du forum ont la possibilité de supprimer les messages de l'utilisateur. Vous ne devriez le faire que pour les instances suivantes : - -1. Quelqu'un a posté une image pornographique ou graphiquement violente. -2. Quelqu'un a posté un lien ou un code qui est malveillant dans la nature, et pourrait nuire à d'autres campeurs qui cliquent dessus. -3. Quelqu'un a inondé un fil de discussion avec beaucoup de spam. - -### Traiter avec du spam - -Pour le premier message de spam d'un utilisateur, envoyez-lui un message expliquant le problème et supprimez le lien ou le message si nécessaire. Laissez une note sur le profil de l'utilisateur expliquant l'action que vous avez faite. Si le problème persiste, suivez le processus ci-dessus. Empêcher silencieusement l'utilisateur de poster (en utilisant l'option silence sur le panneau d'administration de l'utilisateur), puis envoyer un avertissement avec le Code de Conduite. Cochez la case dans le message privé indiquant que votre message est un « avertissement officiel ». - -Vous pouvez poser des questions et signaler des incidents dans la section [du forum du personnel](https://forum.freecodecamp.com/c/staff). - -### Traiter des conversations hors-sujet - -Les messages ou les sujets qui semblent être au mauvais endroit peuvent être recatégorisés ou renommés en ce qui serait approprié. - -Dans des circonstances exceptionnelles, il peut être approprié pour un modérateur de créer une discussion sur plusieurs sujets. - -Encore une fois, si vous avez des problèmes ou des questions, écrivez avec vos actions dans la catégorie du personnel, et taguer un autre modérateur si vous voulez qu'ils passent en revue vos actions de modération. - -### Utilisateurs mineurs - -Nos conditions générales de service exigent que les utilisateurs de freeCodeCamp aient au moins 13 ans. Si un utilisateur révèle qu'il a moins de 13 ans, envoyer le message ci-dessous et supprimer leur compte de forum (si la suppression n'est pas disponible, la suspension du compte est suffisante). Ensuite envoyez un e-mail à [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) ou [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) pour supprimer également le compte de l'utilisateur freeCodeCamp. - -```markdown -SUBJET : Les utilisateurs de moins de 13 ans ne sont pas autorisés à utiliser le forum par conditions d'utilisation - -Il nous a été signalé que vous avez moins de 13 ans. Par [conditions d'utilisation du freeCodeCamp](https://www.freecodecamp.org/news/conditions-of-service), vous devez avoir au moins 13 ans pour utiliser le site ou le forum. Nous allons supprimer à la fois votre compte freeCodeCamp et votre compte de forum. Cette restriction nous maintient en conformité avec les lois américaines. - -Veuillez vous inscrire une fois que vous avez atteint l'âge d'au moins 13 ans. - -Je vous remercie de votre compréhension. -``` - -# Modération de Facebook - -Si vous voyez quelque chose qui semble enfreindre notre [Code de Conduite](https://code-of-conduct.freecodecamp.org/), vous devriez le supprimer immédiatement. - -Parfois, les gens publieront des choses qu'ils jugent drôles. Ils ne se rendent pas compte que ce qu'ils ont dit ou ce qu'ils ont partagé pourrait être interprété comme offensant. Dans ces cas, leur publication devrait être supprimée, mais la personne qui l'a postée n'a pas nécessairement besoin d'être interdite. En faisant supprimer leur poste, ils comprendront, espérons-le, que ce qu'ils ont posté est inapproprié. - -Mais s'il s'agit d'une infraction flagrante qui ne peut raisonnablement être attribuée à une différence culturelle ou à un malentendu de la langue anglaise. alors vous devriez fortement envisager de bloquer le membre du groupe Facebook. - -# Modération de Discord - -Voici comment les modérateurs traitent les violations de notre [Code de conduite](https://code-of-conduct.freecodecamp.org/) sur Discord : - -1. **Assurez-vous que l'intention était d'enfreindre le Code de Conduite.** Toutes les violations du CoC n'étaient pas prévues en tant que telles. Un nouveau campeur peut poster une grande quantité de code pour de l'aide, sans savoir que cela peut être considéré comme du spamming. Dans ces cas, vous pouvez simplement leur demander de coller leur code avec des services comme Codepen ou Pastebin. - -2. **Si le campeur viole clairement le Code de Conduite, le modérateur procédera comme suit:** - -- Suspendre le campeur, mais ne pas les avertir ou les menacer. Au lieu de cela, donnez-leur tranquillement le rôle suspendu sur Discord, puis envoyez-leur le message suivant : - -``` -Ceci est un message standard vous informant que j'ai dû vous suspendre temporairement de parler sur le serveur Discord de freeCodeCamp. - -Je suis un modérateur agissant au nom de notre communauté open source. Je peux envisager de supprimer votre suspension, mais j'ai besoin que vous preniez d'abord les 3 étapes suivantes : - -1. Lisez notre Code de Conduite: https://code-of-conduct.freecodecamp.org/ -2. Envoyez-moi un message de retour confirmant que vous avez fini de le lire. 3. Expliquez-moi pourquoi vous pensez que je vous ai suspendu et pourquoi je devrais supprimer votre suspension. -``` - -- Signaler un bref résumé de l'événement et comment ils y ont répondu dans le canal #admin. Voici un exemple de ce à quoi un tel résumé pourrait ressembler : - -``` -Suspendu : _@username_ -Raison(s): _Spamming, trolling_ -Preuvement: _Un ou plusieurs liens vers le(s) message(s) offensant(s)_ -CoC: _Envoyé_ -``` - -- Un rapport pour supprimer une suspension devrait ressembler à : - -``` -J'ai retiré la suspension de `@username `. Je leur ai envoyé le code de conduite. Ils ont tout juste compris aujourd'hui qu'ils avaient été suspendus et se sont excusés pour ce qu'ils ont fait. -``` - -- Selon la réponse des délinquants, le modérateur décidera si la suspension doit être retirée du campeur. S'ils semblent respectueux et excusables, le modérateur peut supprimer la suspension. En matière de politique, les modérateurs seront polis au cours de ce processus, même si le campeur offensant s'est mal comporté. S'ils ne sont pas respectueux ou peu disposés à accepter le CoC, la suspension devrait être suivie avec un ban du serveur Discord. Utilisez le même résumé que ci-dessus, mais remplacez "Suspended:" par "Banni :". - -3. **Comment bannir et/ou débannir** - -- Pour bannir quelqu'un, faites un clic droit sur son nom d'utilisateur/photo de profil et sélectionnez "Bannir ". Vous aurez la possibilité de supprimer leurs messages précédents - sélectionnez "Ne pas supprimer aucun message", car les messages doivent rester présents en tant que documents historiques. -- Si vous décidez d'interdire quelqu'un, cela signifie qu'ils ne sont pas disposés à respecter notre code de conduite. C'est pourquoi il est rare que l'interdiction d'un Camper se produise. Cependant, si le besoin se présente, vous pouvez le faire en cliquant sur le nom du serveur, en choisissant "Paramètres du serveur", en choisissant "Bans", en sélectionnant l'utilisateur que vous souhaitez débannir, et en cliquant sur "Révoquer Ban". - -Les bannissements de Discord sont globaux - vous ne pouvez pas bannir un utilisateur d'un canal spécifique, seulement du serveur entier. - -4. **Suppression des messages** Les modérateurs ont la possibilité de supprimer des messages sur Discord. Ils ne devraient exercer cette capacité que dans quatre situations très spécifiques: - -- Quelqu'un a posté une image pornographique ou graphiquement violente. -- Quelqu'un a posté un lien ou un code qui est malveillant dans la nature, et pourrait nuire à d'autres campeurs qui cliquent dessus. -- Quelqu'un a inondé le chat avec de nombreux messages de spam dans une mesure aussi extrême (généralement impliquant des bots) que pour rendre le chat complètement inutilisable. -- Quelqu'un a publié de la publicité et / ou un message d'auto-promotion / image (médias sociaux). - -Dans toutes les autres situations - même les situations où le code de conduite est violé - les modérateurs ne devraient pas supprimer le message car il s'agit d'un historique important. Lorsque vous supprimez un message, assurez-vous de prendre d'abord une capture d'écran de celui-ci ! La capture d'écran peut être enregistrée dans le canal #mod-log, mais pour le #journal des activités, il est suffisant de dire que la preuve a été "retirée en raison du contenu sensible". Note: Si le message contient du matériel qui serait illégal de prendre une capture d'écran de, copier le lien du message à la place - fournir ce lien de message vers @raisedadead pour transférer à l'équipe de Confiance et Sécurité de Discord. - -5. **N'utilisez pas @everyone ou @here** N'utilisez pas @everyone ou @here dans aucune circonstance ! Chaque personne de ce salon de discussion recevra une notification. Dans certains cas, des dizaines de milliers de personnes. Au lieu de cela, si vous voulez que les gens voient une annonce, vous pouvez l'épingler sur le canal pour permettre à tout le monde de la lire. - -6. **Ne menacez pas d'interdire ou de suspendre** Si un campeur enfreint le code de conduite, ne menacent pas de les interdire ou de les suspendre, et ne les avertissent jamais en public. Au lieu de cela, parlez-leur en privé ou envoyez-leur un DM et émettez une suspension (par le protocole ci-dessus). Personne d'autre dans ce canal n'a besoin de savoir que vous avez banni / suspendu la personne - les campeurs peuvent voir le résumé dans le canal #activity-log s'ils veulent rester au courant de cette information. Si une violation était clairement involontaire et ne justifie pas une suspension ou une conversation privée, informer le campeur offensant de ses actions sans le faire passer pour un avertissement. Par exemple : - -- Le campeur pose un mur de code pour demander de l'aide - - Modérateur : @nom d'utilisateur Veuillez utiliser Codepen ou Pastebin lorsque vous publiez de grandes quantités de code. - -- Ou si vous devez vraiment expliquer pourquoi: - - Modérateur : @nom d'utilisateur Veuillez utiliser Codepen ou Pastebin lorsque vous publiez de grandes quantités de code, parce que cela perturbe le chat pour tout le monde et peut être considéré comme du spamming selon notre Code de Conduite. - -- Pour les violations légères et involontaires du code de conduite - - Modérateur: Ceci est un rappel amical pour tout le monde à suivre le code de conduite : https://code-of-conduct.freecodecamp.org/ - -7. **Ne vous vantez pas d'être modérateur** Ne vous voyez pas au-dessus de la communauté. Vous êtes la communauté. Et la communauté vous a fait confiance pour aider à protéger quelque chose de rare que nous partageons tous - un endroit _accueillant_ pour les nouveaux développeurs. Si vous vous vantez d'être modérateur, les gens peuvent se sentir mal autour de vous, de la même manière que les gens peuvent se sentir mal à l’aise autour d’un policier, même s’ils ne font rien de mal. Ce n'est que de la nature humaine. - -8. **Ne pas contredire les autres modérateurs** Si vous n'êtes pas d'accord avec l'action d'un modérateur, discutez avec eux en privé ou faites-le apparaître dans le canal #mod-chat. Ne jamais outrepasser un ban, et ne jamais contredire publiquement les autres modérateurs. Au lieu de cela, ayez une discussion froide dans le mod-chat et convainquez le modérateur qu'il devrait lui-même inverser son interdiction ou modifier son point de vue. Rappelez-vous : nous sommes tous dans la même équipe. Nous voulons honorer le rôle des modérateurs et présenter un front unifié. - -9. **Parlez avec d'autres modérateurs** Nous avons seulement une place pour les modérateurs. Utilisez-le! Si vous ne vous sentez pas à l'aise avec la façon de gérer une certaine situation, demandez de l'aide à d'autres modérateurs. Si vous pensez que quelque chose devrait être discuté, faites-le. Vous faites partie de l'équipe et nous apprécions la contribution de chaque membre de l'équipe! Même si vous êtes totalement en désaccord avec quelque chose dans ces lignes directrices ou dans le code de conduite! - -10. **Temporairement inactif** Si vous ne serez pas actif en tant que modérateur pendant un certain temps en raison de vacances, maladie ou toute autre raison, assurez-vous de prévenir les autres personnes dans le canal #mod-chat. C'est ainsi que nous savons si nous pouvons compter sur vous pour être régulièrement actif sur le serveur ou non. - -# Comment devenir modérateur - -Si vous aidez les gens de la communauté de façon constante au fil du temps, notre équipe de modérateurs finira par prendre note, et l'un d'eux vous mentionnera en tant que modérateur possible à [notre staff](https://forum.freecodecamp.org/g/Team). Il n'y a pas de raccourcis pour devenir modérateur. - -Si vous êtes approuvé, nous vous ajouterons à nos équipes de modérateurs sur [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTE] > **Pour GitHub :** Après avoir été accepté comme modérateur, vous recevrez une invitation de dépôt Github. Vous devrez vous diriger vers [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) pour pouvoir accepter l'invitation. Ceci est nécessaire pour que nous puissions vous donner un accès en écriture sur certains de nos dépôts. - -# Comment nous retirons les modérateurs inactifs - -Veuillez noter que nous supprimerons fréquemment les mods qui, selon nous, sont inactifs. Lorsque nous le ferons, nous enverrons le message suivant : - -> Ceci est un message standard vous informant de cela, comme vous ne semblez pas avoir été un modérateur actif récemment, nous vous retirons de notre équipe de modérateurs. Nous apprécions grandement votre aide dans le passé. - -> Si vous pensez que nous avons fait cela par erreur, ou une fois que vous êtes prêt à revenir et contribuer plus, répondez simplement à ce message me faisant savoir. - -# Comment fonctionne la salle de nos Contributeurs - -N'importe qui est bienvenu dans la salle des contributeurs [sur notre Discord](https://discord.gg/KVUmVXA). C'est la salle de chat désignée pour les modérateurs et autres campeurs qui contribuent à notre communauté de toutes les manières. y compris par le biais de groupes d'étude. - -Notre hypothèse est que les contributeurs liront tout ce qui se trouve dans cette salle qui les mentionne directement avec un `@username`. Tout le reste est facultatif. Mais n'hésitez pas à lire tout ce que n'importe qui y écrit et à interagir. - -# Traiter avec des avocats - -Vous pouvez être approché par des organisations qui veulent vous associer ou comarquer avec freeCodeCamp d'une manière ou d'une autre. Une fois que vous vous rendez compte que c'est ce qui leur revient, cessez de leur parler et dites-leur d'envoyer un courriel à quincy@freecodecamp.org. Il reçoit des propositions de ce genre tout le temps et est dans la meilleure position pour juger si une telle relation en vaudra la peine pour notre communauté (et elle l'est rarement). - -# Traitement des demandes de renseignements (mentaux) sur la santé - -Il se peut que vous vous rencontriez dans des situations où les utilisateurs demandent des conseils médicaux ou s’occupent de problèmes de santé mentale et où ils cherchent de l’aide. En matière de politique, vous devriez éviter de parler en privé de ces questions. Si la situation à un moment donné revient à la FCC, nous voulons que la ou les conversations soient consignées. Précisez clairement que nous ne sommes pas des professionnels de la santé et que vous encouragez l'utilisateur à trouver de l'aide professionnelle. Aussi difficile que cela puisse être, évitez de donner des conseils ou des conseils autres que de diriger l'utilisateur dans la direction de l'aide professionnelle! - -Si cela se produit sur Discord: Suspendre l'utilisateur. Ce n'est pas pour les punir! Suspendre un utilisateur créera un canal privé qui n'est accessible que par l'utilisateur et l'équipe. Cela profitera à la fois à l'utilisateur et à fCC de plusieurs façons : - -- L'utilisateur a la garantie d'une certaine confidentialité -- Le chat public n'est plus perturbé -- Les autres membres de l'équipe peuvent s'incliner, si vous ne vous sentez pas à l'aise de gérer vous-même la situation - -> [!NOTE] Suspendre automatiquement un utilisateur lui donne un message à propos de la lecture de notre Code de Conduite. Assurez-vous d'informer l'utilisateur que vous les avez suspendus pour leur donner une certaine confidentialité et qu'ils ne sont pas punis. C'est très important! Nous voulons absolument éviter de donner aux utilisateurs l'idée qu'ils sont punis pour avoir atteint le but d'obtenir de l'aide ! - -Si vous pensez que l'utilisateur est capable de rejoindre la communauté, faites un clic droit sur le canal privé et copiez l'ID. Mettre le message suivant dans #mod-log: - -> Avis médical de référence : - -Après cela, vous pouvez supprimer la suspension de l'utilisateur comme vous le faites habituellement. - -URLs utiles : - -http://www.suicide.org/international-suicide-hotlines.html - -# Une note sur la liberté d'expression - -Parfois, les gens défendront quelque chose d'offensant ou d'incendiaire qu'ils ont dit "liberté d'expression". - -Cette bande dessinée XKCD résume parfaitement les pensées de la plupart des communautés sur la liberté d'expression. Donc, si quelqu'un défend quelque chose qu'il dit comme "liberté d'expression", n'hésitez pas à lui envoyer. - -
              - -Merci d'avoir lu ceci, et merci d'aider la communauté des développeurs ! diff --git a/docs/i18n/French/flight-manuals/using-reply-templates.md b/docs/i18n/French/flight-manuals/using-reply-templates.md deleted file mode 100644 index 156b10d35f..0000000000 --- a/docs/i18n/French/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,128 +0,0 @@ -# Utiliser les modèles de réponse - -Voici quelques-uns des modèles de réponse standard que vous pouvez utiliser lors de l'examen des demandes d'ajout et du triage des problèmes. - -> Vous pouvez créer votre propre compte avec la fonctionnalité intégrée de GitHub [**Réponses enregistrées**](https://github.com/settings/replies/) ou utiliser celles ci-dessous. - -### Merci - -```markdown -Merci pour votre contribution à la page! :thumbs_up : -Nous sommes heureux d'accepter ces changements et nous attendons avec impatience les contributions futures. 🎉 -``` - -### Merci et félicitations - -> Pour remercier et encourager les contributeurs pour la première fois. - -```markdown -Bonjour @username. Félicitations pour votre première pull request (PR)! 🎉 - -Merci pour votre contribution à la page ! :thumbs_up : -Nous sommes heureux d'accepter ces changements et nous attendons avec impatience les contributions futures. 📝 -``` - -### Erreur de compilation - -```markdown -Bonjour @username - -Nous aimerions pouvoir fusionner vos modifications, mais il semble qu'il y ait une erreur avec la version CI de Travis. ⚠️ - -Une fois que vous aurez résolu ces problèmes, nous pourrons revoir votre PR et la fusionner. 😊 - ---- - -> N'hésitez pas à faire référence au [Guide de style pour écrire des articles](https://github. om/freeCodeCamp/freeCodeCamp#article-title) pour ce dépôt sur le formatage d'un article correctement pour que votre version Travis CI passe bien. ✅ -> -> De plus, il est préférable d'écrire une brève description de vos changements lors de la création d'une PR. 📝 -``` - -### Synchronisation de la fourche - -> Lorsque la PR n'est pas à jour avec la branche `master`. - -``````markdown -Bonjour @username - -Nous aimerions pouvoir fusionner vos modifications, mais il semble qu'il y ait une erreur avec la version CI de Travis. ⚠️ - -```bash -Erreur: ENOTDIR: pas un répertoire, ouvrez 'src/pages/java/data-abstraction/index.md' -`````` - -Cette erreur particulière n'a pas été causée par votre fichier mais était une ancienne erreur causée par la fusion du code défectueux à la branche `master`. Depuis, il a été résolu. - -Pour passer la compilation, vous devrez synchroniser les dernières modifications depuis la branche `master` du dépôt `freeCodeCamp/freeCodeCamp`. - -En utilisant la ligne de commande, vous pouvez le faire en trois étapes simples : - -```bash -git remote add amont git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch amont - -git pull upstream master -``` - -Si vous utilisez une GUI, vous pouvez simplement `ajouter une nouvelle télécommande...` et utiliser le lien `git://github.com/freeCodeCamp/freeCodeCamp.git` d'en haut. - -Une fois que vous aurez synchronisé votre fork et passé la compilation, nous pourrons revoir votre PR et la fusionner. 😊 - ---- - -> N'hésitez pas à référencer l'article [Synchroniser un fork](https://help.github.com/articles/syncing-a-fork/) sur GitHub pour plus d'informations sur la façon de maintenir votre fork à jour avec le dépôt amont. 🔄 -> -> En outre, il est bon de noter sur GitHub une brève description de vos changements lors de la création d'une PR. 📝 -`````` - -### Fusionner les conflits - -> Quand PR a des conflits de fusion qui doivent être résolus.1 - -```markdown -Hey @username - -Nous aimerions pouvoir fusionner vos modifications, mais il semble que vous ayez des conflits de fusion. - -⚠️ - -Une fois que vous aurez résolu ces conflits, nous pourrons revoir votre PR et la fusionner. 😊 - ---- - -> Si vous n'êtes pas familier avec le processus de conflit de fusion, n'hésitez pas à consulter le guide de GitHub sur ["Résoudre un conflit de fusion"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> De plus, il est préférable d'écrire une brève description de vos changements lors de la création d'une PR. 📝 -`````` -1 Si un contributeur pour la première fois a un conflit de fusion, les responsables résoudront le conflit pour eux. - -### Duplicate - -> Lorsque la PR est répétitive ou un doublon. - -```markdown -Bonjour @username - -Il semble que des modifications similaires aient déjà été acceptées plus tôt pour cet article que vous modifiez, désolé. 😓 - -Si vous avez plus à ajouter, n'hésitez pas à ouvrir une nouvelle PR. - -Merci encore! 😊 - ---- - -> Si vous avez des questions, n'hésitez pas à rejoindre par [Gitter](https://gitter.im/FreeCodeCamp/Contributeurs) ou en commentant ci-dessous. 💬 -``` - -### Fermeture des demandes de fusion non valides - -> Quand la PR est invalide. - -```markdown -Hey @username - -Vous n'avez ajouté aucun contenu, nous allons fermer cette PR et la marquer comme `invalid`. 😓 - -Mais n'hésitez pas à ouvrir une autre PR ! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/French/flight-manuals/working-on-virtual-machines.md b/docs/i18n/French/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 898d41771b..0000000000 --- a/docs/i18n/French/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,482 +0,0 @@ -# Flight Manual for working on Virtual Machines - -En tant que membre du personnel ou de l'équipe de développement vous avez peut-être eu accès à nos fournisseurs de services cloud comme Azure, Océan numérique, etc. - -Voici quelques commandes pratiques que vous pouvez utiliser pour travailler sur les Machines Virtuelles (VM), par exemple en effectuant des mises à jour de maintenance ou en effectuant des opérations de maintenance générales. - -# Get a list of the VMs - -> [!NOTE] Bien que vous ayez peut-être déjà un accès SSH aux VMs, qui à lui seul ne vous laissera pas lister les machines virtuelles à moins que vous ne soyez également autorisé à accéder aux portails du cloud. - -## Azure - -Installez Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Installez Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Changement d'authentification et de contexte : https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. Ceci assurera que la machine virtuelle est corrigée avec les dernières corrections de sécurité. - -> [!WARNING] Before you run these commands: -> -> - Assurez-vous que la VM a été entièrement fournie et qu'il n'y a pas d'étapes de post-installation en cours d'exécution. -> - Si vous mettez à jour des paquets sur une machine virtuelle qui sert déjà une application, assurez-vous que l'application a été arrêtée / sauvegardée. Les mises à jour de paquets provoqueront des pics d'utilisation de la bande passante du réseau, de la mémoire et/ou du CPU qui provoqueront des pannes sur applications en cours d'exécution. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -Nous exécutons des instances équilibrées de charge (Azure Load Balancer) pour nos serveurs Web. Ces serveurs exécutent NGINX qui inverse la totalité du trafic vers freeCodeCamp.org à partir de diverses applications exécutées sur leurs propres infrastructures . - -La configuration NGINX est disponible sur [ce dépôt](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH et apporter les modifications nécessaires pour les instances particulières. - -Si vous n'avez pas utilisé la configuration cloud-init précédemment utilisez la configuration manuelle de NGINX et des pages d'erreur: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Obtenez les certificats d'origine Cloudflare à partir du stockage sécurisé et installez à emplacements requis. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. Vous pouvez également avoir besoin d'ajouter les machines virtuelles pour charger le pool d'arrières d'équilibrage si nécessaire. - -## Mise à jour des instances (maintenance) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

              https://amplify.nginx.com

              -## Updating Instances (Maintenance) - -Les changements de configuration de nos instances NGINX sont maintenus sur GitHub, ils devraient être déployés sur chaque instance comme ceci : - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Testez et rechargez la configuration [avec Signaux](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Mise à jour des instances (maintenance) - -```console -## Journalisation et surveillance - -```console -logs pm2 -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. Il peut s'agir d'une mise à jour roulante ou d'une mise à jour manuelle. Ce dernier est essentiel lors de la modification des dépendances ou de l'ajout de variables d'environnement. - -> [!DANGER] Les pipelines automatisés ne gèrent pas les mises à jour des dépendances à la minute . We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. Vous ne devriez pas avoir besoin d'exécuter ces commandes. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Instances placeholder de démarrage pour le client web, celles-ci seront mises à jour avec artefacts de la pipline Azure. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary. h - pm2 supprimer client-primary - pm2 start . client-start-primary.sh --name client-primary - echo "serve -c . /../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary. h - pm2 supprimer client-secondaire - pm2 start ./client-start-secondy.sh --name client-secondaire -``` - -## Mise à jour des instances (maintenance) - -```console -## Journalisation et surveillance - -```console -logs pm2 -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. Il peut s'agir d'une mise à jour roulante ou d'une mise à jour manuelle. Ce dernier est essentiel lors de la modification des dépendances ou de l'ajout de variables d'environnement. - -> [!DANGER] Les pipelines automatisés ne gèrent pas les mises à jour des dépendances à la minute . We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. Vous ne devriez pas avoir besoin d'exécuter ces commandes. These are here for documentation. diff --git a/docs/i18n/French/how-to-catch-outgoing-emails-locally.md b/docs/i18n/French/how-to-catch-outgoing-emails-locally.md index 195bdf1697..397ea3382a 100644 --- a/docs/i18n/French/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/French/how-to-catch-outgoing-emails-locally.md @@ -1,67 +1,67 @@ -> **Remarque :** Il s'agit d'une étape **facultative** et n'est requis que lorsque vous travaillez avec les workflows de messagerie +> **Note:** This is an **optional** step and is required only when working with email workflows ## Introduction -Certains flux de travail, comme la mise à jour de l'e-mail d'un utilisateur, nécessite le serveur d'api-back-end pour envoyer des courriels sortants. Une alternative à l'utilisation d'un fournisseur de service de messagerie pour envoyer des courriels réels, Mailhog est un outil de test de courrier électronique qui captera les messages électroniques envoyés par votre instance de freeCodeCamp. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Installation de MailHog +## Installing MailHog -MailHog peut être installé sur macOS, Windows et Linux. +MailHog can be installed on macOS, Windows and Linux. - [Introduction](#introduction) -- [Installation de MailHog](#installing-mailhog) - - [Installation de MailHog sur macOS](#installing-mailhog-on-macos) - - [Installation de MailHog sous Windows](#installing-mailhog-on-windows) - - [Installation de MailHog sous Linux](#installing-mailhog-on-linux) -- [Utiliser MailHog](#using-mailhog) -- [Liens utiles](#useful-links) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Installation de MailHog sur macOS +### Installing MailHog on macOS -Installer MailHog sur macOS avec [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash brew install mailhog brew services start mailhog ``` -Les commandes ci-dessus lanceront un service mailhog en arrière-plan. +The above commands will start a mailhog service in the background. -Une fois l'installation terminée, vous pouvez démarrer [en utilisant MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Installation de MailHog sous Windows +### Installing MailHog on Windows -Téléchargez la dernière version de MailHog depuis le dépôt officiel de [MailHog](https://github.com/mailhog/MailHog/releases). Recherchez et cliquez sur le lien correspondant à votre version de Windows (32 ou 64 bits) et un fichier .exe sera téléchargé sur votre ordinateur. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Une fois le téléchargement terminé, cliquez pour ouvrir le fichier. Une notification de pare-feu Windows peut apparaître, demandant l'autorisation d'accès pour MailHog. Une invite de commande standard de Windows s'ouvrira là où MailHog s'exécutera une fois que l'accès au pare-feu sera accordé. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Fermez MailHog en fermant la fenêtre d'invite de commande. Pour recommencer MailHog, cliquez sur l'exécutable MailHog (. xe) fichier qui a été téléchargé initialement - il n'est pas nécessaire de télécharger un nouveau fichier d'installation de MailHog. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Commencez [en utilisant MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Installation de MailHog sous Linux +### Installing MailHog on Linux -Tout d'abord, installez [Go](https://golang.org). +First, install [Go](https://golang.org). -Exécutez les commandes suivantes pour installer GO sur des systèmes basés sur Debian comme Ubuntu et Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Exécutez les commandes suivantes pour installer GO sur des systèmes basés sur RPM tels que CentOS, Fedora, Red Hat Linux, etc. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Sinon, exécutez les commandes suivantes pour installer GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Maintenant, définissez le chemin pour Go avec les commandes suivantes. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile @@ -69,7 +69,7 @@ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile source ~/.profile ``` -Enfin, entrez les commandes ci-dessous pour installer et exécuter MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Commencez [en utilisant MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Utiliser MailHog +## Using MailHog -Ouvrez un nouvel onglet ou une nouvelle fenêtre du navigateur et accédez à [http://localhost:8025](http://localhost:8025) pour ouvrir votre boîte de réception MailHog lorsque l'installation de MailHog est terminée et que MailHog est en cours d'exécution. La boîte de réception apparaîtra comme la capture d'écran ci-dessous. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![Capture d'écran MailHog 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -Les e-mails envoyés par votre installation de freeCodeCamp apparaîtront comme ci-dessous +Emails sent by your freeCodeCamp installation will appear as below -![Capture d'écran MailHog 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -Deux onglets qui vous permettent d'afficher soit du texte brut, soit du contenu source seront disponibles lorsque vous ouvrez un e-mail donné. Assurez-vous que l'onglet texte brut est sélectionné comme ci-dessous. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![Capture d'écran MailHog 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Tous les liens dans le courriel doivent être cliquables et résolus à leur URL. +All links in the email should be clickable and resolve to their URL. -## Liens utiles +## Useful Links -- Consultez le dépôt [MailHog](https://github.com/mailhog/MailHog) pour plus d'informations concernant MailHog. Des informations supplémentaires sont également disponibles concernant les configurations MailHog personnalisées. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/French/how-to-help-with-video-challenges.md b/docs/i18n/French/how-to-help-with-video-challenges.md index d90a3af7bf..0724aaef02 100644 --- a/docs/i18n/French/how-to-help-with-video-challenges.md +++ b/docs/i18n/French/how-to-help-with-video-challenges.md @@ -1,21 +1,21 @@ -# Comment aider à relever les défis vidéo +# How to help with video challenges -Les défis vidéo sont un nouveau type de défi dans le programme d'études de FreeCodeCamp. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -Un défi vidéo est une petite section d'un cours vidéo complet sur un sujet particulier. Une page de défi vidéo embarque une vidéo YouTube. Chaque page de défi a une seule question à choix multiples liée à la vidéo. Un utilisateur doit répondre correctement à la question avant de passer au prochain défi vidéo dans le cours. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -Les pages de défi vidéo sont créées par les membres de l'équipe de freeCodeCamp. Les vidéos YouTube sont également téléchargées par les membres de l'équipe de freeCodeCamp. Beaucoup de défis vidéo n'ont pas encore de questions associées à eux. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Vous pouvez aider en créant des questions à choix multiples liées aux sections vidéo et en ajoutant les questions aux fichiers markdown pour les défis vidéo. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Modèle de défi +## Challenge Template -Ci-dessous se trouve un modèle de ce à quoi ressemblent les fichiers markdown du défi. +Below is a template of what the challenge markdown files look like. ````md --- -id : Identifiant unique (alphanumérique, MongoDB_id) +id: Unique identifier (alphanumerical, MongoDB_id) title: Challenge Title challengeType: 11 videoId: 'YouTube videoId for video challenge' @@ -24,7 +24,7 @@ videoId: 'YouTube videoId for video challenge' ## Description
              -Une description facultative avec des informations utiles liées à la vidéo. +An optional description with helpful information related to the video.
              ## Tests @@ -32,165 +32,168 @@ Une description facultative avec des informations utiles liées à la vidéo.
              ```yml -question : - texte : 'Question' - réponses : - - 'Répondre un' - - 'Répondre deux' - - 'Répondre trois' - solution : 3 +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
              ```` -## Créer des questions pour les défis vidéo +## Creating questions for video challenges -### Accédez aux fichiers de markdown vidéo +### Access the video challenge markdown files -Vous pouvez trouver les fichiers markdown pour les défis vidéo aux endroits suivants dans le curriculum: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Analyse des données avec le cours Python](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) -- [Cours TensorFlow 2.0 ](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) - [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) - [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -Choisissez un fichier markdown parmi les options ci-dessus. +Pick a challenge markdown file from the options above. ### Skim through the video associated with the challenge and create a mutiple choice question First, find the videoId. -Par exemple, dans le code suivant de l'en-tête d'un fichier de marquage de challenge vidéo, le videoId est "nVAaxZ34khk". Sur GitHub, les informations doivent être mises en page dans un format de table. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id : 5e9a093a74c4063ca6f7c14d titre : Analyse de données Exemple A challengeType : 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -Ensuite, accédez à la vidéo YouTube avec cet identifiant vidéo. L'url de la vidéo sera : -https://www.youtube. om/watch?v=[videoId] (ajouter videoId à l'URL sans crochets) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -Dans l'exemple ci-dessus, l'url est https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim la vidéo YouTube avec ce videoId et pensez à une question à choix multiple basée sur le contenu de la vidéo. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Ajoute la question au fichier markdown +### Add the question to the markdown file -Vous pouvez ajouter la question localement ou directement via l'interface GitHub. Pour ajouter la question localement, vous devez [configurer freeCodeCamp localement](how-to-setup-freecodecamp-locally.md). Vous pouvez également trouver le fichier sur GitHub et cliquer sur le bouton d'édition pour ajouter la question directement dans votre navigateur. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Si une question n'a pas encore été ajoutée à un défi vidéo particulier, il aura la question par défaut suivante: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -question : - texte : | +question: + text: | Question - réponses : + answers: - | - un + one - | - deux + two - | - trois - solution : 3 + three + solution: 3 ``` -Mettez à jour le mot « Question » avec votre question. Mettez à jour le « un », « deux » et « trois » avec les réponses possibles. Assurez-vous de mettre à jour le numéro de la solution avec laquelle la réponse est correcte. Vous pouvez ajouter plus de réponses possibles en utilisant le même format. La question et les réponses peuvent être entourées de guillemets. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### Utilisez markdown pour formater votre question +#### Use markdown to format your question -Le texte de la question est analysé comme markdown. La façon la plus simple de s'assurer qu'il est formaté correctement est de commencer la question avec du texte `: |`, comme ceci : +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -Question : - texte : | +question: + text: | Question ``` -Ensuite, vous devez vous assurer que votre question est sur une nouvelle ligne et a indenté un niveau de plus de `texte : |`. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -La même approche peut être utilisée pour les réponses, donc toute la question devient +The same approach can be used for the answers, so the entire question becomes ```yml -Question : - texte : | +question: + text: | Question - réponses : + answers: - | - Première réponse + First answer - | - Seconde + Second - | - Troisième - solution : 2 + Third + solution: 2 ``` -Assurez-vous que chaque réponse est plausible, mais il n'y a qu'une seule réponse correcte. +Make sure each answer is plausible but there is only one correct answer. -#### Utilisation du HTML +#### Use of HTML -Les questions et réponses peuvent contenir certaines balises HTML comme `
              ` pour une nouvelle ligne. Les balises HTML doivent être utilisées avec parcimonie lorsque les questions ne peuvent pas être exprimées sans elles. +Questions and answers can contain certain HTML tags like `
              ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Exemples de questions +### Question examples -#### Exemples sans HTML +#### Examples without HTML ````yml -Question : - texte : | - Qu'est-ce que ce code JavaScript log sur la console ? +question: + text: | + What does this JavaScript code log to the console? ```js - console.log('bonjour monde'); + console.log('hello world'); ```` - Sélectionnez une réponse ! - réponses: - - | bonjour *monde* - - | **Bonjour** monde - - | Bonjour le monde solution : 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml question: text: | - Ce qui va s'afficher après avoir exécuté ce code : + What will print out after running this code: ```py width = 15 - height = 12. impression(hauteur/3) + height = 12.0 + print(height/3) ```` - réponses: + answers: - | 39 - | 4 - | 4.0 - | 5.0 - - | 5 solution : 3 + - | 5 solution: 3 ```` -#### Exemple avec HTML +#### Example with HTML ```yml -question : +question: text: | - Qu'est-ce qui va imprimer après avoir exécuté ce code : -
              width = 15
              height = 12.
              print(height/3)
              - réponses: + What will print out after running this code: +
              width = 15
              height = 12.0
              print(height/3)
              + answers: - | 39 - | 4 - | - 4. - | - 5. - | + 4.0 + - | + 5.0 + - | 5 solution: 3 ```` -L'exemple final montre que le HTML peut être utilisé, mais qu'il n'est pas aussi lisible que la version sans lui. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Pour plus d'exemples, vous pouvez consulter les fichiers markdown pour le cours vidéo suivant. Tous les défis ont déjà des questions : [Python pour tout le monde cours](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Ouvrir une pull request +## Open a pull request -Après avoir créé une ou plusieurs questions, vous pouvez valider les modifications sur une nouvelle branche et [ouvrir une pull request](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/French/how-to-open-a-pull-request.md b/docs/i18n/French/how-to-open-a-pull-request.md index 919a976a74..2729cd6237 100644 --- a/docs/i18n/French/how-to-open-a-pull-request.md +++ b/docs/i18n/French/how-to-open-a-pull-request.md @@ -1,121 +1,121 @@ -# Comment ouvrir une Pull Request (PR) +# How to open a Pull Request (PR) -Une pull request vous permet d'envoyer des changements depuis votre fork sur GitHub vers le dépôt principal de freeCodeCamp.org. Une fois que vous avez fait des modifications au code, ou des défis de codage, vous devriez suivre ces directives pour envoyer une PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Préparer un bon titre PR +## Prepare a good PR title -Nous recommandons d'utiliser [titre et messages conventionnels](https://www.conventionalcommits.org/) pour les commits et les pull requests. La convention a le format suivant : +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([téles(s) optionnelle(s)) : ` +> `([optional scope(s)]): ` > -> Par exemple : +> For example: > -> `fix(learn): tests pour le défi de boucle...while` +> `fix(learn): tests for the do...while loop challenge` -Lorsque vous ouvrez une Pull Request(PR), vous pouvez utiliser ce qui suit pour déterminer le type, la portée (optionnelle) et la description. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**Type :** +**Type:** -| Type de texte | Quand sélectionner | -|:------------- |:------------------------------------------------------------------------------------------ | -| réparer | Modifié ou mis à jour/amélioré la fonctionnalité, les tests, le verbiage d'une leçon, etc. | -| don | Seulement si vous ajoutez une nouvelle fonctionnalité, des tests, etc. | -| corniche | Les changements qui ne sont pas liés au code, aux tests ou au verbiage d'une leçon. | -| docs | Modifie le répertoire `/docs` ou les lignes directrices de contribution, etc. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Portée :** +**Scope:** -Vous pouvez sélectionner une portée dans [cette liste d'étiquettes](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Description :** +**Description:** -Gardez-le court (moins de 30 caractères) et simple, vous pouvez ajouter plus d'informations dans la zone de description des relations publiques et les commentaires. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Quelques exemples de bons titres de PRs seraient : +Some examples of good PRs titles would be: -- `fix(a11y): contraste amélioré de la barre de recherche` -- `feat: ajouter plus de tests aux défis html et css` -- `fix(api,client): Empêcher les erreurs CORS lors de l'envoi du formulaire` -- `docs(i18n): Traduction en chinois de la configuration locale` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Proposer une demande d'ajout +## Proposing a Pull Request -1. Une fois les modifications validées, vous serez invité à créer une pull request sur la page GitHub de votre fork. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Image - Comparer l'invite de demande de fusion sur GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Par défaut, toutes les demandes de fusion devraient être contre le dépôt principal de freeCodeCamp, la branche `master`. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Assurez-vous que votre fork de base est réglé sur freeCodeCamp/freeCodeCamp lors de l'ascension d'une Pull Request. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Image - Comparaison des forks lors d'une demande d'ajout](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Soumettez la demande d'ajout de votre branche à la branche `master` de freeCodeCamp. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. Dans le corps de votre RP, incluez un résumé plus détaillé des modifications que vous avez apportées et pourquoi. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Un modèle de pull request vous sera présenté. Il s'agit d'une liste de contrôle que vous devriez avoir suivie avant d'ouvrir la demande de tirage au sort. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Remplissez les détails comme bon vous semble. Ces renseignements seront examinés et les examinateurs décideront si votre demande d'ajout est acceptée ou non. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Si la PR est destinée à traiter un problème GitHub existant, alors, à la fin de le corps de description de votre PR, utiliser le mot clé _Ferme_ avec le numéro de la fiche à [fermer automatiquement ce problème si la PR est acceptée et fusionnée](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Exemple: `Fermeture #123` fermera le ticket 123 + > Example: `Closes #123` will close issue 123 -5. Indiquez si vous avez testé ou non sur une copie locale du site. +5. Indicate if you have tested on a local copy of the site or not. - Ceci est très important lorsque vous effectuez des modifications qui ne sont pas seulement des modifications de contenu texte comme la documentation ou une description de défi. Des exemples de changements nécessitant des tests locaux incluent JavaScript, CSS, ou HTML qui pourraient modifier la fonctionnalité ou la disposition d'une page. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Commentaires sur les demandes de Pull +## Feedback on pull requests -> Félicitations ! :tada: pour avoir fait une PR et merci beaucoup d'avoir pris le temps de contribuer. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Nos modérateurs vont maintenant jeter un coup d'œil et vous laisser des commentaires. S'il vous plaît, soyez patient avec les autres modérateurs et respectez leur temps. Toutes les demandes d'ajout sont examinées en temps voulu. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Si vous avez besoin d'aide, veuillez discuter dans le salon de discussion [contributeurs](https://gitter.im/FreeCodeCamp/Contributors), nous sommes ravis de vous aider. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Si vous voulez contribuer plus de pull requests, nous vous recommandons de lire les directives [en faisant des modifications et en synchronisant](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) pour éviter d'avoir à supprimer votre fork. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Conflit sur une pull request +## Conflicts on a pull request -Des conflits peuvent survenir parce que de nombreux contributeurs travaillent sur le référentiel, et les changements peuvent casser votre PR qui est en attente de révision et de fusion. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Le plus souvent vous n'aurez peut-être pas besoin d'une rebase, car nous écrasons tous les engagements, Cependant, si une rebase est demandée ici, c'est ce que vous devriez faire. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Pour les corrections de bugs et les fonctionnalités habituelles +### For usual bug fixes and features -Lorsque vous travaillez sur des bugs et des fonctionnalités réguliers sur notre branche de développement `master`, vous êtes en mesure de faire une simple rebase : +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Rebaser votre copie locale: +1. Rebase your local copy: ```console git checkout - git pull --rebase amont master + git pull --rebase upstream master ``` -2. Résoudre les conflits et ajouter/modifier les commits +2. Resolve any conflicts and add / edit commits ```console - # Soit + # Either git add . git commit -m "chore: resolve conflicts" - # Ou + # Or git add . - Git commit --amende --no-edit + git commit --amend --no-edit ``` -3. Repousser vos modifications à la PR +3. Push back your changes to the PR ```console - git push --force origine + git push --force origin ``` -### Pour le programme et les fonctionnalités à venir +### For upcoming curriculum and features -Lorsque vous travaillez sur les fonctionnalités de notre prochain programme `next-*` succursales, vous avez fait une sélection de cerises: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Assurez-vous que votre amont est synchronisé avec votre local: +1. Make sure your upstream comes in sync with your local: ```console git checkout master @@ -124,56 +124,56 @@ Lorsque vous travaillez sur les fonctionnalités de notre prochain programme `ne git reset --hard upstream/next-python-projects ``` -2. Prendre une sauvegarde +2. Take backup - a. Supprimez votre branche locale après avoir pris une sauvegarde (si vous l'avez toujours localement) : + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout - # exemple : + # example: # git checkout feat/add-numpy-video-question git checkout -b - # exemple : - # git checkout -b backup-feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - b. Ou juste une sauvegarde de votre branche pr (si vous ne l'avez pas localement) : + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # exemple : - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Commencez par un ardoise propre : +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Résoudre tous les conflits, et nettoyer, installer les tests d'exécution +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean npm ci - npm exécuter test:curriculum --superblock= + npm run test:curriculum --superblock= - # exemple : + # example: - # npm exécuter test:curriculum --superblock=python-for-everyone + # npm run test:curriculum --superblock=python-for-everybody ``` -6. Si tout semble bien repoussé vers la PR +6. If everything looks good push back to the PR ```console - git push --force origine + git push --force origin ``` diff --git a/docs/i18n/French/how-to-setup-freecodecamp-locally.md b/docs/i18n/French/how-to-setup-freecodecamp-locally.md index a04886752c..619db733cf 100644 --- a/docs/i18n/French/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/French/how-to-setup-freecodecamp-locally.md @@ -1,326 +1,326 @@ -Suivez ces directives pour configurer freeCodeCamp localement sur votre système. Ceci est fortement recommandé si vous voulez contribuer régulièrement. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Pour certains des flux de travail de contributions, vous devez faire fonctionner freeCodeCamp localement. Par exemple, la prévisualisation des défis de codage ou le débogage et la correction des bogues dans le codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] Si vous n'êtes pas intéressé par la configuration locale de freeCodeCamp envisagez d'utiliser Gitpod, un environnement de développement gratuit en ligne. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Ouvrir dans Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Démarre un environnement de développement prêt à être codé pour freeCodeCamp dans votre navigateur.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Préparez votre machine locale +### How to prepare your local machine -Commencez par installer le logiciel requis pour votre système d'exploitation. +Start by installing the prerequisite software for your operating system. -Nous supportons principalement le développement sur les systèmes **\*nix**. Notre personnel et nos contributeurs communautaires travaillent régulièrement avec la base de code en utilisant des outils installés sur Ubuntu et macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Nous prenons également en charge Windows 10 via WSL2, que vous pouvez préparer en [lisant ce guide](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Certains membres de la communauté développent également sous Windows 10 nativement avec Git for Windows (Git Bash), et d'autres outils installés sous Windows. Nous n'avons pas de support officiel pour une telle configuration pour le moment, nous vous recommandons d'utiliser WSL2 à la place. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Pré-requis :** +**Prerequisites:** -| Pré-requis | Version | Notes | -| -------------------------------------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12.x` | [Planification LTS](https://github.com/nodejs/Release#release-schedule) | -| npm (livré avec un nœud) | `6.x` | N'a pas de versions LTS, nous utilisons la version fournie avec Node LTS | -| [Serveur Communautaire MongoDB](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Notes de publication](https://docs.mongodb.com/manual/release-notes/), Note : Nous sommes actuellement sur `3.6`, une mise à jour [est prévue](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Si vous avez une version différente, veuillez installer la version recommandée. Nous ne pouvons supporter les problèmes d'installation que pour les versions recommandées. Voir [dépannage](#troubleshooting) pour plus de détails. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Si Node.js est déjà installé sur votre machine, exécutez les commandes suivantes pour valider les versions: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console -noeud -v +node -v npm -v ``` -> [!TIP] Nous vous recommandons fortement de mettre à jour vers les dernières versions stables des logiciels énumérés ci-dessus, également connues sous le nom de versions de support à long terme (LTS). +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Une fois les conditions préalables installées, vous devez préparer votre environnement de développement. Ceci est courant pour de nombreux flux de développement, et vous n'aurez besoin de le faire qu'une seule fois. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Suivez ces étapes pour préparer votre environnement de développement :** +**Follow these steps to get your development environment ready:** -1. Installez [Git](https://git-scm.com/) ou votre client Git favori, si vous ne l'avez pas déjà fait. Mise à jour vers la dernière version ; la version qui est livrée avec votre OS peut être obsolète. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Optionnel mais recommandé) [Configurer une clé SSH](https://help.github.com/articles/generating-an-ssh-key/) pour GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Installez un éditeur de code de votre choix. +3. Install a code editor of your choice. - Nous vous recommandons fortement d'utiliser [Visual Studio Code](https://code.visualstudio.com/) ou [Atom](https://atom.io/). Ce sont de grands éditeurs de code gratuit et open source. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Configurez le linting pour votre éditeur de code. +4. Set up linting for your code editor. - Vous devriez avoir [ESLint en cours d'exécution dans votre éditeur](http://eslint.org/docs/user-guide/integrations.html), et il mettra en évidence tout ce qui n'est pas conforme au [Guide de style JavaScript de freeCodeCamp](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!TIP] Veuillez ne pas ignorer les erreurs de linting. Ils sont destinés à **vous aider** et à assurer une base de code simple et propre. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Fork le dépôt sur GitHub +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) est une étape où vous obtenez votre propre copie du dépôt principal de freeCodeCamp (a.k.a _repo_) sur GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -C'est essentiel, car cela vous permet de travailler sur votre propre copie de freeCodeCamp sur GitHub, ou pour télécharger (cloner) votre référentiel pour travailler localement. Plus tard, vous serez en mesure de demander que des modifications soient introduites dans le dépôt principal à partir de votre fork via une pull request (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] Le dépôt principal sur `https://github.com/freeCodeCamp/freeCodeCamp` est souvent appelé le dépôt `amont`. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Votre fork sur `https://github.com/YOUR_USER_NAME/freeCodeCamp` est souvent appelé le dépôt `origine`. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Suivez ces étapes pour fork le dépôt `https://github.com/freeCodeCamp/freeCodeCamp`:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Allez dans le dépôt freeCodeCamp sur GitHub : +1. Go to the freeCodeCamp repository on GitHub: -2. Cliquez sur le bouton "Fork" dans le coin supérieur droit de l'interface ([Plus de détails ici](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Une fois que le dépôt a été créé, vous serez redirigé vers votre copie du dépôt freeCodeCamp à `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
              - Comment fork freeCodeCamp sur GitHub (capture d'écran) + How to fork freeCodeCamp on GitHub (screenshot)
              - Comment fork freeCodeCamp sur GitHub + How to fork freeCodeCamp on GitHub
              -## Cloner votre fork depuis GitHub +## Clone your fork from GitHub -[Cloner](https://help.github.com/articles/cloning-a-repository/) est l'endroit où vous **téléchargez** une copie d'un dépôt à partir d'un emplacement `distant` qui est soit la propriété de vous soit de quelqu'un d'autre. Dans votre cas, cet emplacement distant est votre `fork` du dépôt de freeCodeCamp qui devrait être disponible sur `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Exécutez ces commandes sur votre machine locale: +Run these commands on your local machine: -1. Ouvrir un Terminal / Invite de Commandes / Shell dans le répertoire de vos projets +1. Open a Terminal / Command Prompt / Shell in your projects directory _i.e.: `/yourprojectsdirectory/`_ -2. Clonez votre fork de freeCodeCamp, remplaçant `VOTRE_USER_NOM` par votre nom d'utilisateur GitHub +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Ceci va télécharger l'intégralité du dépôt freeCodeCamp dans votre répertoire de projets. +This will download the entire freeCodeCamp repository to your projects directory. -Remarque : `--depth=1` crée un clone peu profond de votre fork, avec seulement l'historique/livraison la plus récente. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Configurer la synchronisation à partir du parent +## Set up syncing from parent -Maintenant que vous avez téléchargé une copie de votre fork, vous devrez configurer une télécommande `amont` dans le dépôt parent. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Comme mentionné précédemment](#fork-the-repository-on-github), le dépôt principal est référé `au dépôt amont`. Votre fork est le dépôt `origine`. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Vous avez besoin d'une référence de votre clone local vers le dépôt `amont` en plus du dépôt `origine`. C'est pour que vous puissiez synchroniser les changements depuis le référentiel principal sans avoir besoin de forking et de clonage à plusieurs reprises. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Changer de répertoire vers le nouveau répertoire de freeCodeCamp : +1. Change directory to the new freeCodeCamp directory: ```console cd freeCodeCamp ``` -2. Ajouter une référence distante au dépôt principal de freeCodeCamp : +2. Add a remote reference to the main freeCodeCamp repository: ```console - git remote add amont https://github.com/freeCodeCamp/freeCodeCamp.git + git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Assurez-vous que la configuration semble correcte : +3. Ensure the configuration looks correct: ```console git remote -v ``` - La sortie devrait ressembler à quelque chose comme ci-dessous: + The output should look something like below: ```console - origine https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - origine https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - amont https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - amont https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Exécution locale de freeCodeCamp +## Running freeCodeCamp locally -Maintenant que vous avez une copie locale de freeCodeCamp, vous pouvez suivre ces instructions pour l'exécuter localement. Cela vous permettra de : +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Aperçu des modifications des pages telles qu'elles apparaîtraient sur la plateforme d'apprentissage. -- Travailler sur les problèmes et améliorations liés à l'interface utilisateur. -- Déboguer et corriger les problèmes avec les serveurs d'application et les applications clients. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Si vous rencontrez des problèmes, effectuez d'abord une recherche sur le Web pour trouver votre problème et vérifiez s'il a déjà été répondu. Si vous ne trouvez pas de solution, veuillez rechercher une solution dans notre page des [problèmes GitHub](https://github.com/freeCodeCamp/freeCodeCamp/issues) et signaler le problème s'il n'a pas encore été signalé. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -Et comme toujours, n'hésitez pas à vous rendre sur notre salon de discussion [Contributeurs sur Gitter](https://gitter.im/FreeCodeCamp/Contributors) ou [notre serveur Discord](https://discord.gg/pFspAhS), pour des requêtes rapides. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Vous pouvez ignorer l'exécution de freeCodeCamp localement si vous éditez simplement des fichiers. Par exemple, effectuer un `rebase`, ou résoudre `fusion` conflits. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Vous pouvez toujours revenir à cette partie des instructions plus tard. Vous devriez **seulement** sauter cette étape si vous n'avez pas besoin d'exécuter les applications sur votre machine. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Passez à apporter des modifications](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Configuration des dépendances +### Configuring dependencies -#### Étape 1 : Configurez le fichier de variable d'environnement +#### Step 1: Set up the environment variable file -Les clés API par défaut et les variables d'environnement sont stockées dans le fichier `sample.env`. Ce fichier doit être copié dans un nouveau fichier nommé `.env` qui est accédé dynamiquement à l'étape d'installation. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Créez une copie du fichier "sample.env" et nommez-le ".env". -# Remplissez-le avec les clés API nécessaires et les secrets : +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp échantillon. nv .env +cp sample.env .env # Windows -copier sample.env .env .env +copy sample.env .env ``` -Les clés du fichier `.env` sont _pas_ nécessaires pour exécuter l'application localement. Vous pouvez laisser les valeurs par défaut copiées depuis `sample.env` tel quel. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!TIP] Gardez à l'esprit si vous voulez utiliser des services comme Auth0 ou Algolia, vous devrez acquérir vos propres clés API pour ces services et modifier les entrées en conséquence dans le `. fichier nv`. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Étape 2 : Installer les dépendances +#### Step 2: Install dependencies -Cette étape va installer les dépendances nécessaires à l'exécution de l'application : +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Étape 3: Démarrer MongoDB et semer la base de données +#### Step 3: Start MongoDB and seed the database -Avant de pouvoir exécuter l'application localement, vous devrez démarrer le service MongoDB. +Before you can run the application locally, you will need to start the MongoDB service. -> [!NOTE] Sauf si vous avez MongoDB en cours d'exécution dans une configuration différente de celle par défaut, l'URL stockée comme la valeur `MONGOHQ_URL` dans le `. le fichier nv` devrait fonctionner correctement. Si vous utilisez une configuration personnalisée, modifiez cette valeur si nécessaire. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Lancer le serveur MongoDB dans un terminal séparé : +Start the MongoDB server in a separate terminal: -- Sur macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- Sous Windows, vous devez spécifier le chemin complet vers le binaire `mondieu` +- On Windows, you must specify the full path to the `mongod` binary ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Assurez-vous de remplacer `3.6` par la version que vous avez installée + Make sure to replace `3.6` with the version you have installed -> [!TIP] Vous pouvez éviter d'avoir à démarrer MongoDB à chaque fois en l'installant en tant que service d'arrière-plan. Vous pouvez [en apprendre plus à ce sujet dans leur documentation pour votre OS](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Ensuite, nous allons semer la base de données. Dans cette étape, nous exécutons la commande ci-dessous qui remplit le serveur MongoDB avec des jeux de données initiaux qui sont requis par les services. Il s'agit notamment de quelques schémas. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -graine npm run +npm run seed ``` -#### Étape 4 : Démarrez l'application client et le serveur API de FreeCodeCamp +#### Step 4: Start the freeCodeCamp client application and API server -Vous pouvez maintenant démarrer le serveur API et les applications client. +You can now start up the API server and the client applications. ```console -Développement de npm run +npm run develop ``` -Cette commande unique lancera tous les services, y compris le serveur API et les applications client sur lesquelles vous pouvez travailler. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!NOTE] Une fois prêt, ouvrez un navigateur web et **visitez **. Si l'application se charge, félicitations, vous êtes prêt ! Vous avez maintenant une copie de la totalité de la plate-forme d'apprentissage de FreeCodeCamp fonctionnant sur votre machine locale. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] Le serveur API sert les API à `http://localhost:3000`. L'application Gatsby sert l'application client à `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Si vous visitez vous devriez voir les API disponibles. +> If you visit you should see the available APIs. -## Se connecter avec un utilisateur local +## Sign in with a local user -Votre configuration locale remplit automatiquement un utilisateur local dans la base de données. En cliquant sur le bouton `Se connecter` vous authentifiera automatiquement dans l'application locale. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Cependant, accéder à la page du portfolio de l'utilisateur est un peu délicat. En cours de développement, Gatsby prend en charge les pages côté client et vous obtiendrez donc une page `404` pour le portefeuille utilisateur lorsque vous travaillez localement. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Cliquez simplement sur le bouton **"Aperçu de la page personnalisée 404 page"** vous dirigera vers la bonne page. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
              - Comment se connecter lorsque vous travaillez localement (capture d'écran) + How to sign in when working locally (screenshot)
              - Comment se connecter lorsque vous travaillez localement + How to sign in when working locally
              -## Effectuer des modifications localement +## Making changes locally -Vous pouvez maintenant apporter des modifications aux fichiers et valider vos modifications à votre clone local de votre fork. +You can now make changes to files and commit your changes to your local clone of your fork. -Suivez ces étapes: +Follow these steps: -1. Validez que vous êtes sur la branche `master`: +1. Validate that you are on the `master` branch: ```console git status ``` - Vous devriez obtenir une sortie comme ceci : + You should get an output like this: ```console - Sur le maître de la branche - Votre branche est à jour avec 'origin/master'. + On branch master + Your branch is up-to-date with 'origin/master'. - rien à valider, le dossier de travail est nettoyé + nothing to commit, working directory clean ``` - Si vous n'êtes pas sur master ou que votre répertoire de travail n'est pas propre, résolvez tous les fichiers/commits en suspens et vérifiez `master`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - Git checkout master + git checkout master ``` -2. Synchronisez les derniers changements depuis la branche principale `master` de freeCodeCamp vers votre branche locale principale : +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!AVERTISSEMENT] Si vous avez une demande de pull en suspens que vous avez faite à partir de la branche `master` de votre fork, vous les perdrez à la fin de cette étape. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Vous devez vous assurer que votre pull request est fusionné par un modérateur avant d'effectuer cette étape. Pour éviter ce scénario, vous devriez **toujours** travailler sur une branche autre que le `maître`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Cette étape **synchronisera les derniers changements** depuis le dépôt principal de freeCodeCamp. Il est important que vous refondiez votre branche au dessus de la dernière `amont / maître` aussi souvent que possible pour éviter les conflits plus tard. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Mettez à jour votre copie locale du dépôt amont de freeCodeCamp : + Update your local copy of the freeCodeCamp upstream repository: ```console - git récupère en amont + git fetch upstream ``` - Réinitialisation dure de votre branche principale avec le maître de freeCodeCamp : + Hard reset your master branch with the freeCodeCamp master: ```console git reset --hard upstream/master ``` - Poussez votre branche principale vers votre origine pour avoir un historique propre sur votre fork sur GitHub : + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console git push origin master --force ``` - Vous pouvez valider votre maître actuel correspond à l'amont / maître en effectuant un diff : + You can validate your current master matches the upstream/master by performing a diff: ```console - Git diff amont / maître + git diff upstream/master ``` - La sortie résultante doit être vide. + The resulting output should be empty. -3. Créer une nouvelle branche: +3. Create a fresh new branch: - Travailler sur une branche distincte pour chaque problème vous aide à garder votre copie de travail locale propre. Vous ne devriez jamais travailler sur le `maître`. Cela permettra de salir votre copie de freeCodeCamp et vous devrez peut-être recommencer avec un nouveau clone ou une nouvelle fourchette. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Vérifiez que vous êtes sur `master` comme expliqué précédemment, et la branche à partir de là : + Check that you are on `master` as explained previously, and branch off from there: ```console - git checkout -b fixe/update-guide-for-xyz + git checkout -b fix/update-guide-for-xyz ``` - Le nom de votre branche doit commencer par un `fix/`, `feat/`, `docs/`, etc. Évitez d'utiliser les numéros de fiches dans les branches. Gardez-les courtes, significatives et uniques. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Quelques exemples de bons noms de branches sont : + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,156 +330,156 @@ Suivez ces étapes: translate/add-spanish-basic-html ``` -4. Modifiez les pages et travaillez sur le code dans votre éditeur de texte favori. +4. Edit pages and work on code in your favorite text editor. -5. Une fois que vous êtes satisfait des modifications, vous devriez éventuellement exécuter freeCodeCamp localement pour prévisualiser les modifications. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Assurez-vous de corriger toutes les erreurs et vérifiez le formatage de vos modifications. +6. Make sure you fix any errors and check the formatting of your changes. -7. Vérifiez et confirmez les fichiers que vous mettez à jour : +7. Check and confirm the files you are updating: ```console git status ``` - Ceci devrait afficher une liste de `fichiers non staged` que vous avez modifiés. + This should show a list of `unstaged` files that you have edited. ```console - Sur le feat/documentation de la branche - Votre branche est à jour avec 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Changements non staged pour commit: - (utilisez "git add/rm ... pour mettre à jour ce qui sera livré) - (utilisez "git checkout -- . ." pour ignorer les changements dans le répertoire de travail) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - modifié : CONTRIBUTING. d - modifié : docs/README.md - modifié : docs/how-to-setup-freecodecamp-locally. d - modifié: docs/how-to-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Étapez les modifications et validez: +8. Stage the changes and make a commit: - Dans cette étape, vous ne devriez marquer que les fichiers que vous avez modifiés ou ajoutés vous-même. Vous pouvez effectuer une réinitialisation et résoudre les fichiers que vous n'aviez pas l'intention de modifier si nécessaire. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console git add path/to/my/changed/file.ext ``` - Ou vous pouvez ajouter tous les fichiers `non staged` à la zone de staging : + Or you can add all the `unstaged` files to the staging area: ```console git add . ``` - Seuls les fichiers qui ont été déplacés dans la zone de pré-production seront ajoutés lorsque vous effectuerez une livraison. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Sortie : + Output: ```console - Sur le feat/documentation de la branche - Votre branche est à jour avec 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Changements à valider : - (utiliser "git reset HEAD ..." pour unstage) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - modifié : CONTRIBUTING.md - modifié : docs/README.md - modifié : docs/how-to-setup-freecodecamp-locally.md - modifié : docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Maintenant, vous pouvez valider vos changements avec un message court comme ceci: + Now, you can commit your changes with a short message like so: ```console - git commit -m "fix: mon message de commit court" + git commit -m "fix: my short commit message" ``` - Quelques exemples: + Some examples: ```md - Correction : mise à jour de l'article de guide pour Java - don pour la boucle - : ajout d'un article de guide pour les compétences alexa + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - Optionnel: + Optional: - Nous vous recommandons vivement de faire un message d'engagement conventionnel. C'est une bonne pratique que vous verrez sur certains des dépôts populaires Open Source. En tant que développeur, cela vous encourage à suivre les pratiques standard. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Quelques exemples de messages de commit conventionnels sont : + Some examples of conventional commit messages are: ```md - Correction : mise à jour de l'article du guide HTML - : mise à jour des scripts de construction pour Travis-CI - feat: ajout d'un article pour le hachage JavaScript - docs : mise à jour des lignes directrices de contribution + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - Conservez ces caractères courts, pas plus de 50 caractères. Vous pouvez toujours ajouter des informations supplémentaires dans la description du message de livraison. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Cela ne prend pas de temps supplémentaire qu'un message non conventionnel comme 'fichier de mise à jour' ou 'ajouter index.md' + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Vous pouvez en savoir plus sur pourquoi vous devriez utiliser des commits conventionnels [ici](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Si vous vous rendez compte que vous devez éditer un fichier ou mettre à jour le message de commit après avoir fait une livraison, vous pouvez le faire après avoir édité les fichiers avec: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - Git commit --amender + git commit --amend ``` - Cela ouvrira un éditeur de texte par défaut comme `nano` ou `vi` où vous pourrez modifier le titre du message de commit et ajouter/modifier la description. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Ensuite, vous pouvez envoyer vos modifications à votre fork: +10. Next, you can push your changes to your fork: ```console - Git pousser la branche/le nom de l'origine ici + git push origin branch/name-here ``` -## Proposer une Pull Request (PR) +## Proposing a Pull Request (PR) -Après avoir validé vos modifications, vérifiez ici : [comment ouvrir une Pull Request](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Référence des commandes rapides +## Quick commands reference -Une référence rapide aux commandes dont vous aurez besoin lorsque vous travaillerez localement. +A quick reference to the commands that you will need when working locally. -| commande | Libellé | -| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `npm ci` | Installe / réinstalle toutes les dépendances et amorce les différents services. | -| `graine npm run` | Analyse tous les fichiers markdown du challenge et les insère dans MongoDB. | -| `Développement de npm run` | Démarre le serveur API et les applications client de freeCodeCamp. | -| `Test npm` | Exécutez tous les tests JS du système, y compris le client, le serveur, lint et les tests de défi. | -| `npm exécuter test:client` | Exécutez la suite de tests client. | -| `npm exécuter test:curriculum` | Exécutez la suite de tests du programme. | -| `npm exécuter test:curriculum --block='HTML de base et HTML5'` | Teste un bloc spécifique. | -| `npm exécuter test:curriculum --superblock='responsive-web-design'` | Teste un SuperBlock spécifique. | -| `npm run testest-curriculum-full-output` | Exécuter la suite de test du curriculum vitae sans se détourner après la première erreur | -| `npm exécuter test:server` | Exécutez la suite de tests du serveur. | -| `npm run e2e` | Exécutez la fin de Cypress pour terminer les tests. | -| `npm run clean` | Désinstalle toutes les dépendances et nettoie les caches. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Dépannage +## Troubleshooting -### Problèmes avec l'installation des conditions préalables recommandées +### Issues with installing the recommended prerequisites -Nous développons régulièrement sur les systèmes d'exploitation les plus récents ou les plus populaires comme macOS 10.15 ou supérieurs, Ubuntu 18.04 ou plus récent et Windows 10 (avec WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Il est recommandé d'étudier votre problème spécifique sur des ressources telles que Google, Stack Overflow et Stack Exchange. Il y a de bonnes chances que quelqu'un ait été confronté au même problème et il y a déjà une réponse à votre question spécifique. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Si vous êtes sur un système d'exploitation différent et/ou que vous rencontrez toujours des problèmes, consultez [obtenir de l'aide](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!ATTENTION] +> [!WARNING] > -> Veuillez éviter de créer des tickets GitHub pour les problèmes préalables. Ils sont hors du champ d'application de ce projet. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Problèmes avec l'interface utilisateur, les polices, les erreurs de construction, etc. +### Issues with the UI, Fonts, build errors etc. -Si vous rencontrez des problèmes avec l'interface utilisateur, les polices ou les erreurs de compilation, un nettoyage peut être utile : +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean @@ -488,17 +488,17 @@ npm run seed npm run develop ``` -OU +OR -Utiliser le raccourci +Use the shortcut ``` -npm run cleanan-and-develop +npm run clean-and-develop ``` -Si vous continuez à rencontrer des problèmes avec la compilation, le nettoyage de l'espace de travail est recommandé. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Utilisez `git clean` en mode interatif: +Use `git clean` in interative mode: ``` git clean -ifdX @@ -506,41 +506,41 @@ git clean -ifdX
              - Comment nettoyer les fichiers non suivis git (capture d'écran) + How to clean git untracked files (screenshot)
              - Comment nettoyer les fichiers git non suivis + How to clean git untracked files
              -### Problèmes avec API, Login, Soumissions de défi, etc. +### Issues with API, Login, Challenge Submissions, etc. -Si vous ne pouvez pas vous connecter, et à la place vous voyez une bannière avec un message d'erreur qu'il sera signalé à freeCodeCamp, veuillez vérifier que votre port local `3000` n'est pas utilisé par un autre programme. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**Sous Linux / macOS / WSL sous Windows - Depuis le Terminal :** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console netstat -ab | grep "3000" -tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**Sous Windows - À partir de PowerShell élevé :** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab | Chaîne de sélection "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Problèmes d'installation des dépendances +### Issues installing dependencies -Si vous obtenez des erreurs lors de l'installation des dépendances, assurez-vous que vous n'êtes pas dans un réseau restreint ou que vos paramètres de pare-feu ne vous empêchent pas d'accéder aux ressources. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -La première configuration peut prendre un certain temps selon la bande passante de votre réseau. Soyez patient, et si vous êtes toujours coincés, nous vous recommandons d'utiliser GitPod au lieu d'une installation hors ligne. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Obtenir de l'aide +## Getting Help -Si vous êtes coincé et avez besoin d'aide, faites-le nous savoir en demandant dans la catégorie ['Contributeurs' sur notre forum](https://forum.freecodecamp.org/c/contributors) ou dans la salle de discussion [Contributeurs](https://gitter.im/FreeCodeCamp/Contributors) sur Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Il peut y avoir une erreur dans la console de votre navigateur ou dans Bash / Terminal / Ligne de commande qui aidera à identifier le problème. Fournissez ce message d'erreur dans votre description de problème afin que les autres puissent plus facilement identifier le problème et vous aider à trouver une solution. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/French/how-to-setup-wsl.md b/docs/i18n/French/how-to-setup-wsl.md index 5038a4acc4..68bce6dde6 100644 --- a/docs/i18n/French/how-to-setup-wsl.md +++ b/docs/i18n/French/how-to-setup-wsl.md @@ -1,26 +1,26 @@ -# Configurer freeCodeCamp sur le sous-système Windows pour Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!NOTE] Avant de suivre ces instructions, assurez-vous que votre système répond aux exigences +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64 bits (Version 2004, Build 19041 ou supérieure) - disponible pour toutes les distributions, y compris Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop pour Windows**: Voir les exigences respectives pour [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) et [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Ce guide couvre certaines étapes courantes avec la configuration de WSL2. Une fois que certains des problèmes courants avec WSL2 sont résolus, vous devriez être en mesure de suivre notre guide de configuration locale pour travailler avec freeCodeCamp sur Windows en exécutant une distribution WSL comme Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Activer le WSL +## Enable WSL -Suivez les instructions sur la [documentation officielle](https://docs.microsoft.com/en-us/windows/wsl/install-win10) pour installer WSL1 et ensuite la mise à niveau vers WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Nous vous recommandons d'utiliser Ubuntu-18.04 ou plus avec WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. > [!NOTE] > - > Bien que vous puissiez utiliser d'autres distributions basées sur non-Debian, elles sont toutes livrées avec leurs propres gotchas et sont hors de portée de ce guide. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Mettre à jour les dépendances de l'OS +2. Update the dependencies for the OS ```console sudo apt update @@ -30,51 +30,51 @@ Suivez les instructions sur la [documentation officielle](https://docs.microsoft sudo apt autoremove -y ``` -## Configurer Git +## Set up Git -Git est livré pré-installé avec Ubuntu 18.04, vérifiez que votre version Git avec `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ - git --version +❯ git --version git version 2.25.1 ``` -(Optionnel mais recommandé) Vous pouvez maintenant procéder à [la configuration de vos clés ssh](https://help.github.com/articles/generating-an-ssh-key) avec GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Installation d'un éditeur de code +## Installing a Code Editor -Nous vous recommandons fortement d'installer [Visual Studio Code](https://code.visualstudio.com) sur Windows 10. Il a un grand support pour WSL et installe automatiquement toutes les extensions nécessaires sur votre distribution WSL. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -Essentiellement, vous allez éditer et stocker votre code sur Ubuntu-18.04 avec VS Code installé sur Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Installation de Docker Desktop +## Installing Docker Desktop -**Docker Desktop for Windows** vous permet d'installer et d'exécuter une base de données et des services tels que MongoDB, NGINX, etc. Ceci est utile pour éviter les pièges courants avec l'installation de MongoDB ou d'autres services directement sur Windows ou WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Suivez les instructions sur la [documentation officielle](https://docs.docker.com/docker-for-windows/install) et installez Docker Desktop pour votre distribution Windows. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Il y a quelques exigences minimales pour la meilleure expérience. +There are some minimum hardware requirements for the best experience. -## Configurer Docker Desktop pour WSL +## Configure Docker Desktop for WSL -Une fois Docker Desktop installé, [suivez ces instructions](https://docs.docker.com/docker-for-windows/wsl) et configurez-le pour utiliser l'installation d'Ubuntu-18.04 comme backend. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Cela fait que les conteneurs fonctionnent sur le côté WSL au lieu de fonctionner sous Windows. Vous pourrez accéder aux services via `http://localhost` sur Windows et Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Installer MongoDB depuis Docker Hub +## Install MongoDB from Docker Hub -Une fois que vous avez configuré Docker Desktop pour qu'il fonctionne avec WSL2, suivez ces étapes pour démarrer un service MongoDB : +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Lancez un nouveau terminal Ubuntu-18.04 +1. Launch a new Ubuntu-18.04 terminal -2. Tirez `MongoDB 3.6` de dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Démarrez le service MongoDB au port `27017`, et configurez-le automatiquement au redémarrage du système +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console docker run -it \ @@ -85,18 +85,18 @@ Une fois que vous avez configuré Docker Desktop pour qu'il fonctionne avec WSL2 -d mongo:3 ``` -4. Vous pouvez maintenant accéder au service depuis Windows ou Ubuntu à `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Installation de Node.js et npm +## Installing Node.js and npm -Nous vous recommandons d'installer la version LTS pour Node.js avec un gestionnaire de versions de nœuds - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Une fois installé, utilisez ces commandes pour installer et utiliser la version de Node.js si nécessaire +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts -# OU +# OR # nvm install nvm install 14 @@ -107,23 +107,23 @@ nvm install 14 nvm use 12 ``` -Node.js est livré avec `npm`, vous pouvez mettre à jour vers les dernières versions de `npm` avec: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console npm install -g npm@latest ``` -## Configurez freeCodeCamp localement +## Set up freeCodeCamp locally -Maintenant que vous avez installé les pré-requis, suivez [notre guide de configuration local](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) pour cloner, installer et installer freeCodeCamp localement sur votre machine. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!ATTENTION] +> [!WARNING] > -> Veuillez noter qu'en ce moment, la mise en place des tests Cypress (et des besoins liés à l'interface graphique) est en cours. Vous devriez quand même pouvoir travailler sur la plupart des codes. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Liens utiles +## Useful Links -- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - un article de Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) -- Foire aux questions sur: - - [Sous-système Windows pour Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Docker Desktop pour Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/French/how-to-use-docker-on-windows-home.md b/docs/i18n/French/how-to-use-docker-on-windows-home.md index fee9f53edd..85ac65a3e3 100644 --- a/docs/i18n/French/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/French/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Comment utiliser Docker sur Windows Home +# How to use Docker on Windows Home -Il y a quelques pièges à éviter lors de l'installation de docker sur Windows Home. Tout d'abord, vous devez utiliser [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) en tant qu'administrateur. Malheureusement, Windows Home ne prend pas en charge Docker pour Windows Desktop, donc Toolbox doit être utilisé à la place. Il doit être exécuté en tant qu'administrateur car l'installation utilise des liens symboliques, qui ne peuvent pas être créés autrement. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Une fois la boîte à outils installée, exécutez Docker Quickstart Terminal en tant qu'administrateur. Cela créera une machine virtuelle `par défaut` si elle n'existe pas déjà. Une fois que cela s'est produit, fermez le terminal et ouvrez VirtualBox (encore en tant qu'administrateur). Vous devriez pouvoir voir la machine `par défaut`. Le site est assez intensif de ressources, donc arrêtez la machine virtuelle et augmentez les paramètres autant que vous pouvez - la mémoire en particulier. Il a été confirmé de fonctionner avec 4Go de bélier. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Une fois que vous êtes heureux que Docker fonctionne, clonez le dépôt freeCodeCamp dans un répertoire dans `C:\Users`. Ces répertoires sont partagés en donnant à Docker l'accès aux répertoires locaux, dont il a besoin pendant l'installation. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Si vous voyez des messages comme +If you see messages like ```shell -bash : change_volumes_owner.sh: Aucun fichier ou répertoire de ce type +bash: change_volumes_owner.sh: No such file or directory ``` -lorsque vous `npm exécutez docker:init` c'est probablement le coupable. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/French/how-to-work-on-coding-challenges.md b/docs/i18n/French/how-to-work-on-coding-challenges.md index 3a4e3ddb9e..2b95545e91 100644 --- a/docs/i18n/French/how-to-work-on-coding-challenges.md +++ b/docs/i18n/French/how-to-work-on-coding-challenges.md @@ -1,91 +1,95 @@ -# Comment travailler sur les défis de codage +# How to work on coding challenges -Notre objectif est de développer une expérience d'apprentissage interactif amusante et claire. +Our goal is to develop a fun and clear interactive learning experience. -Il est difficile de concevoir des défis de codage interactifs. Il serait beaucoup plus facile d'écrire une longue explication ou de créer un tutoriel vidéo, et il y a une place pour ceux sur Medium et YouTube. Cependant, pour notre programme de base, nous restons fidèles à ce qui fonctionne le mieux pour la plupart des gens - une expérience totalement interactive, comme le jeu vidéo. +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. -Nous voulons que les campeurs atteignent un état de débit. Nous voulons qu'ils prennent de l'élan et qu'ils fassent preuve de dynamisme à travers notre programme d'études avec le moins d'accrochages possible. Nous voulons qu'ils entrent dans les projets en toute confiance et qu'ils soient largement exposés aux concepts de programmation. +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. -La création de ces défis exige une immense créativité et une grande attention aux détails. Il y a beaucoup d'aide disponible. Vous aurez le soutien d'une équipe entière de contributeurs à qui vous pouvez rebondir vos idées et faire une démonstration de vos défis. Restez actif dans la [salle des contributeurs](https://gitter.im/freecodecamp/contributors) et posez de nombreuses questions. +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/). -Avec votre aide, nous pouvons concevoir un programme de codage interactif qui aidera des millions de personnes à apprendre à coder pour les années à venir. +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. -Le contenu de chaque challenge est stocké dans son propre fichier markdown. Ce fichier markdown est ensuite converti en HTML à l'aide de nos outils pour créer des pages Web interactives. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Vous pouvez trouver tout le contenu du programme de freeCodeCamp.org dans le répertoire [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges). +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. -## Mettre en place les outils pour le programme +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Avant de travailler sur le curriculum, vous devrez mettre en place des outils pour vous aider à tester vos changements. Vous pouvez utiliser n'importe quelle option à partir de ce qui suit: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- Vous pouvez [configurer freeCodeCamp localement](how-to-setup-freecodecamp-locally.md). Ceci est **fortement recommandé** pour les contributions régulières/répétées. Cette configuration vous permet de travailler et de tester vos modifications. -- Utilisez Gitpod, un environnement de développement en ligne gratuit. En cliquant sur le bouton ci-dessous, vous démarrerez un environnement de développement prêt à coder pour freeCodeCamp dans votre navigateur. Cela ne prend que quelques minutes. +## Set up the tooling for the curriculum - [![Ouvrir dans Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Modifiez les fichiers sur l'interface de GitHub en cliquant sur l'icône crayon du fichier correspondant. Bien que c'est la façon la plus rapide, il n'est pas recommandé ****, car vous ne pouvez pas tester vos modifications sur GitHub. Si nos responsables concluent que les modifications que vous avez apportées doivent être testées localement, vous devrez suivre à nouveau les méthodes ci-dessus. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Modèle de défi + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Ci-dessous est un modèle de ce à quoi ressemblent les fichiers de markdown de challenge actuellement. Pour voir le modèle simplifié, nous allons adopter voir [ci-dessous](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id : Identifiant unique (alphanumérique, MongoDB_id) +id: Unique identifier (alphanumerical, MongoDB_id) title: Challenge Title challengeType: 0 -videoUrl: 'url de l'explication vidéo' +videoUrl: 'url of video explanation' --- ## Description
              -Une description du challenge et ce qui est requis pour passer +A Description of the challenge and what is required to pass
              ## Instructions
              -Instructions sur ce qu'il faut faire. +Instructions about what exactly needs to be done.
              ## Tests
              -tests ```yml -: - - texte : Devrait retourner "foo" - chaîne de test: 'Une fonction stringifiée utilisant éventuellement des asserts Chai' +```yml +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
              -## Graine de Défi +## Challenge Seed
              ```{ext} -Code affiché dans l'éditeur par défaut. +Code displayed in the editor by default. -Il s'agit d'une section requise pour relever le défi. +This is a required section for the challenge. ```
              -### Avant le test +### Before Test
              ```{ext} -Code de configuration de test optionnel. +Optional Test setup code. ```
              -### Après le test +### After Test
              @@ -101,8 +105,8 @@ Optional Test tear down code.
              -La solution ```{ext} -// est requise +```{ext} +// solution required ```
              @@ -111,286 +115,356 @@ La solution ```{ext} > [!NOTE] > -> 1. Dans les sections ci-dessus, les exemples de `{ext}` sont: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Pour la section `Tests` ci-dessus, `text` et `testString` doivent être des chaînes YAML valides. `testString` peut être une fonction ou une expression stringifiée en utilisant les assertions Chai. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -Chaque défi a besoin d'un id. Si vous ne le spécifiez pas, MongoDB en créera un nouveau au hasard lorsqu'il enregistrera les données; cependant, nous ne voulons pas qu'il le fasse, car nous voulons que les identifiants de défis soient cohérents entre les différents environnements (mise en scène, production, beaucoup de développeurs différents, etc.). +## Numbering Challenges -Pour générer un nouveau dans un shell (en supposant que MongoDB tourne séparément) : +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -1. Exécutez la commande `mongo`. -2. Exécutez la commande `ObjectId()`. +To generate a new one in a shell (assuming MongoDB is running separately): +1. Run `mongo` command. +2. Run `ObjectId()` command. + +For example: + +```bash $ mongo -version du shell MongoDB v3.6.1 -connexion à: mongodb://127.0.0.1:27017 -Version du serveur MongoDB : 3.4.10 +MongoDB shell version v3.6.1 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -. Si vous ne le spécifiez pas, MongoDB en créera un nouveau au hasard lorsqu'il enregistrera les données; cependant, nous ne voulons pas qu'il le fasse, car nous voulons que les identifiants de défis soient cohérents entre les différents environnements (mise en scène, production, beaucoup de développeurs différents, etc.). -Pour générer un nouveau dans un shell (en supposant que MongoDB tourne séparément) : +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -1. Exécutez la commande `mongo`. -2. Exécutez la commande `ObjectId()`. - -$ mongo -version du shell MongoDB v3.6.1 -connexion à: mongodb://127.0.0.1:27017 -Version du serveur MongoDB : 3.4.10 -... -$ ObjectId() -ObjectId("5a474d78df58bafeb3535d34") -
              - -Le résultat est un nouvel identifiant, par exemple `5a474d78df58bafeb3535d34` ci-dessus. - -La solution ```{ext} // est requise +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- id: 5a474d78df58bafeb3535d34 -titre : Titre du défi +title: Challenge Title ``` -## Défi de numérotation +## Naming challenges -Nommer les choses est difficile. Nous avons facilité la tâche en imposant des contraintes. +Naming things is hard. We've made it easier by imposing some constraints. -Pour générer un nouveau dans un shell (en supposant que MongoDB tourne séparément) : +All challenge titles should be explicit and should follow this pattern: -Par exemple : +\[verb\]\[object clause\] -Le résultat est un nouvel identifiant, par exemple `5a474d78df58bafeb3535d34` ci-dessus. +Here are some example challenge names: -- Utiliser la note dans le sens horaire pour spécifier le rembourrage d'un élément -- Tableaux condensés avec .reduce -- Utiliser la note de crochet pour trouver le premier caractère dans une chaîne de caractères +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Défis de nommage +## Challenge descriptions/instructions -Les phrases doivent être claires et concises avec un jargon minimal. S'il est utilisé, le jargon devrait être immédiatement défini en anglais clair. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Garder les paragraphes courts (environ 1-4 phrases). Les gens sont plus susceptibles de lire plusieurs paragraphes courts qu'un mur de texte. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Le texte de défi devrait utiliser la deuxième personne (« vous ») pour lui donner un ton de conversation. De cette façon, le texte et les instructions semblent parler directement au campeur travaillant dans le cadre du défi. Essayez d'éviter d'utiliser la première personne ("I", "nous", "let's", et "nous"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Ne pas utiliser de liens sortants. Celles-ci interrompent le flux. Les campeurs ne devraient jamais avoir à Google quoi que ce soit pendant ces défis. S'il y a des ressources dont vous pensez que les campeurs pourraient bénéficier, ajoutez-les à l'article du Guide du défi. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -Voici quelques exemples de noms de défis : +You can add diagrams if absolutely necessary. -N'utilisez pas d'émoticônes ou d'émoticônes dans les défis. freeCodeCamp a une communauté mondiale, et la signification culturelle d'un emoji ou d'une émoticône peut être différente dans le monde. En outre, les émoticônes peuvent se rendre différemment sur différents systèmes. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Les bons noms devraient utiliser la majuscule correcte lorsque possible. Vous trouverez ci-dessous une liste de mots tels qu'ils devraient apparaître dans les défis. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (lettres majuscules dans "J" et "S" et sans abréviations) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Le développement du front-end (formulaire adjectif avec un tireur) est quand vous travaillez sur le front-end (formulaire de nom sans tireur). Il en va de même pour les termes "back end", "full stack" et beaucoup d'autres termes composés. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### La règle de 2 minutes +### The 2-minute rule -Chaque défi doit être résolu en 120 secondes par un anglophone natif qui a relevé les défis qui l'attendent. Cela inclut le temps nécessaire pour lire les directions/instructions comprendre le code source écrire leur propre code et faire passer tous les tests. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Si cela prend plus de deux minutes pour compléter le défi, vous avez deux options : +If it takes longer than two minutes to complete the challenge, you have two options: -- Simplifiez le défi, ou -- Divisez le défi en deux défis. +- Simplify the challenge, or +- Split the challenge into two challenges. -Vous pouvez ajouter des diagrammes si nécessaire. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Nous vérifions combien de temps il faut aux campeurs pour résoudre les changements et utiliser cette information pour identifier les défis qui doivent être simplifiés ou fractionnés. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modularité +### Modularity -Chaque défi devrait enseigner exactement un concept, et ce concept devrait apparaître dans le nom du défi. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Nous pouvons renforcer les concepts précédemment couverts par la répétition et les variations - par exemple, introduire les éléments h1 dans un défi, puis h3 éléments quelques défis plus tard. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Notre objectif est d'avoir des milliers de défis de 2 minutes. Ils peuvent se regrouper et réitérer des concepts déjà couverts. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Mise en forme du texte du défi +### Formatting challenge text -La règle de 2 minutes oblige vous, le concepteur de défi, à rendre vos instructions concises, votre code de graine clair et vos tests directement. +Here are specific formatting guidelines for challenge text and examples: -- Les mots-clés de la langue vont dans les balises ``. Par exemple, les noms de balises HTML ou les noms de propriétés CSS -- La première instance d'un mot clé lorsqu'il est défini, ou des mots-clés généraux (c'est-à-dire "objet" ou "immuable") va dans les balises `` -- Les références aux parties de code (c'est-à-dire les noms de fonction, de méthode ou de variable) doivent être enveloppées dans les balises ``. Voir l'exemple ci-dessous: -- Utilisez parseInt pour convertir la variable realNumber en un entier. -- Les blocs de code multi-lignes **doivent être précédés d'une ligne vide**. La ligne suivante doit commencer par trois backticks suivis immédiatement par une des langues [prises en charge](https://prismjs.com/#supported-languages). Pour compléter le bloc de code, tu dois commencer une nouvelle ligne qui n'a que trois ticks et **une autre ligne vide**. **Remarque :** Si vous allez utiliser un exemple de code dans YAML, utiliser `yaml` au lieu de `yml` pour la langue à droite des backticks. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Nous vérifions combien de temps il faut aux campeurs pour résoudre les changements et utiliser cette information pour identifier les défis qui doivent être simplifiés ou fractionnés. +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md ---- -id: 5a474d78df58bafeb3535d34 -titre : Titre du défi +The following is an example of code: + +```{language} + +[YOUR CODE HERE] ```` ```` -- Des informations supplémentaires sous la forme d'une note doivent être formatées `Note : Reste du texte de la note ... - Si plusieurs notes sont nécessaires, puis listez toutes les notes en phrases séparées en utilisant le format `Informations : First note text. Texte de la deuxième note.`. -- Utilisez des guillemets doubles le cas échéant +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Écrire des tests +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Les défis doivent avoir le nombre minimum de tests nécessaires pour vérifier qu'un campeur comprend un concept. +## Writing tests -Notre objectif est de communiquer le seul point que le défi essaie d'enseigner, et de tester qu'ils ont compris ce point. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Les tests de défi peuvent utiliser les bibliothèques d'assertion Node.js et Chai.js. En outre, si nécessaire, le code généré par l'utilisateur peut être accédé dans la variable `code`. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Formatage du code de la seed +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Voici des directives de mise en forme spécifiques pour le code de la seed de challenge : +## Formatting seed code -- Utilisez deux espaces pour indenter -- Les déclarations JavaScript se terminent par un point-virgule -- Utilisez des guillemets doubles le cas échéant -- Les commentaires faits devraient avoir un espace entre les caractères de commentaire et le commentaire eux-mêmes +Here are specific formatting guidelines for the challenge seed code: - `// Réparez cette ligne` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Indices et solutions +### Seed code comments -Chaque défi a un bouton `Obtenir un indice`, afin qu'un utilisateur puisse accéder aux astuces ou solutions qui ont été créées pour le défi. Les sujets des hints/solutions du programme se trouvent sur [notre forum](https://forum.freecodecamp.org/c/guide) dans la catégorie `Guide`. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Si vous trouvez un problème avec le sujet des hints/solutions d'un défi existant, vous pouvez faire des suggestions dans la [catégorie des contributeurs](https://forum.freecodecamp.org/c/contributeurs) sur le forum. Les modérateurs et les utilisateurs ayant le niveau de confiance 3 examineront les commentaires et décideront si oui ou non inclure les changements dans le sujet des astuces et des solutions correspondantes. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Ajout de nouveaux sujets sur les astuces du défi/solutions +Example of valid single line JavaScript comment: -Faites les étapes suivantes en ajoutant un nouveau sujet lié aux astuces et solutions de défi. +```js +// Only change code below this line +```` -1. Commencez par suivre les mêmes étapes pour créer un nouveau sujet, mais passez en revue le suivant pour créer le titre. -2. Le titre du sujet devrait commencer par `freeCodeCamp Challenge Guide: ` concaténé avec le titre réel du défi du programme. Par exemple, si le défi est nommé "`Chunky Monkey`", le titre du sujet serait "`freeCodeCamp Challenge Guide: Chunky Monkey`". -3. `camperbot` devrait être le propriétaire de ces sujets/posts, vous devrez donc demander à un administrateur de changer la propriété du message principal à `camperbot`. -4. Une fois le nouveau sujet créé, un identifiant de sujet de forum est créé. Il se trouve à la fin de l'URL du sujet du forum. Cet identifiant doit être ajouté à la première question du fichier de défi du programme d'études via le processus normal de pull request pour le bouton `Obtenir un indice` pour le lien vers le sujet. +Example of a valid CSS comment: -### Lignes directrices pour le contenu des astuces et des sujets sur les solutions +```js +/* Only change code above this line */ +``` -Lorsque vous proposez une solution pour un sujet lié au programme d'étude, le code complet doit être ajouté. Ceci inclut tout le code original de la graine ainsi que toutes les modifications nécessaires pour passer tous les tests de défi. Le modèle suivant devrait être utilisé lors de la création de nouveaux sujets de hints/solutions : +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. -``md +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
              + { /* Change code below this line */ } + + { /* Change code above this line */ } +

              {this.state.text}

              +
              + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md # Challenge Name Goes Here --- -## Problème d'explication +## Problem Explanation -Ceci résume ce qui doit être fait sans simplement redéfinir la description et/ou les instructions du défi. Il s'agit d'une section optionnelle +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section -#### Liens pertinents +#### Relevant Links -- [Texte de lien](link_url_goes_here) -- [Texte de lien](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here) --- -## Indices +## Hints -### Indice 1 +### Hint 1 -Indice va ici +Hint goes here -### Indice 2 +### Hint 2 -Indice va ici +Hint goes here --- ## Solutions -
              Solution 1 (Cliquez pour afficher/cacher) +
              Solution 1 (Click to Show/Hide) ```js function myFunc() { - console. og('Bonjour le monde !'); + console.log('Hello World!'); } ```` -#### Explication de code +#### Code Explanation -- Explication de code ici -- Explication de code ici +- Code explanation goes here +- Code explanation goes here -#### Liens pertinents +#### Relevant Links -- [Texte du lien](link_url_goes_here) -- [Texte du lien](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
              ```` ## Testing Challenges -Avant de [créer une pull request](how-to-open-a-pull-request. d) pour vos modifications, vous devez valider que les modifications que vous avez apportées ne causent pas de problèmes avec le défi. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Pour tester tous les challenges exécutez la commande ci-dessous depuis le répertoire racine +1. To test all challenges run the below command from the root directory ```` -Nous pouvons renforcer les concepts précédemment couverts par la répétition et les variations - par exemple, introduire les éléments h1 dans un défi, puis h3 éléments quelques défis plus tard. +npm run test:curriculum ``` -2. Vous pouvez également tester un bloc ou un superbloc de défis avec ces commandes +2. You can also test a block or a superblock of challenges with these commands ``` -npm exécuter test:curriculum --superblock=responsive-web-design +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` -Voici des directives de mise en forme spécifiques pour le texte du challenge et des exemples: +npm run test:curriculum --superblock=responsive-web-design ``` -Vous pouvez également tester un défi individuellement en effectuant les étapes suivantes : +You are also able to test one challenge individually by performing the following steps: -1. Basculer vers le répertoire `curriculum`: +1. Switch to the `curriculum` directory: ``` - Programme de Cd + cd curriculum ``` -2. Exécutez ce qui suit pour chaque fichier de challenge pour lequel vous avez changé : +2. Run the following for each challenge file for which you have changed: ``` - test de course npm -- -g 'le titre anglais complet du défi' + npm run test -- -g 'the full English title of the challenge' ``` -Une fois que vous avez vérifié que chaque défi sur lequel vous avez travaillé passe les tests, [veuillez créer une pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> Vous pouvez définir la variable d'environnement `LOCALE` dans le `.env` dans la langue du (des) challenge(s) que vous devez tester. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> Les valeurs actuellement acceptées sont `english` et `chinese`, avec `english` étant défini par défaut. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Modèle de défi à venir +## Upcoming Challenge Template -Le modèle de challenge en cours de mise à jour vers une structure plus propre et moins imbriquée. Cela n'a pas été entièrement finalisé, mais les éléments suivants devraient être proches de la structure finale : +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: -``mdx +````mdx --- -id : Identifiant unique (alphanumérique, MongoDB_id) +id: Unique identifier (alphanumerical, MongoDB_id) title: 'Challenge Title' -challengeType: Integer, defined in `client/utils/challengeTypes. s` -videoUrl: 'url d'explication vidéo' +challengeType: Integer, defined in `client/utils/challengeTypes.js` +videoUrl: 'url of video explanation' forumTopicId: 12345 --- -import Script de './script. dx'; +import Script from './script.mdx'; ## --step-description-- -Texte de description dans markdown +Description text, in markdown ```html
              - exemple de code + example code
              ``` @@ -398,18 +472,18 @@ Texte de description dans markdown ![test-id-1] -npm exécuter test:curriculum --block='HTML de base et HTML5' +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Code pour le test 1 +Code for test one ``` ![test-id-2] -Plus d'instructions dans la syntaxe markdown +More instructions in markdown syntax ```js -Code pour le test 1 +More code ``` ## --step-seed-- @@ -417,13 +491,13 @@ Code pour le test 1 ### --before-user-code-- ```lang -Plus de code +Code evaluated before the user’s ``` ### --after-user-code-- ```lang -Code évalué avant l'utilisateur +Code evaluated after the user’s, and just before the tests ``` ### --seed-content-- @@ -431,15 +505,15 @@ Code évalué avant l'utilisateur ![index-html] ```html -Code évalué après l'utilisateur et juste avant les tests +Some html ``` ```css -Quelques html +Some css ``` ```js -Quelques css +Some js ``` ![index-js] @@ -448,13 +522,13 @@ Quelques css

              - --marqueur-solution- + --solution-marker--

              - Exactement la même chose que la section graines + Exactly the same as the seeds section

              @@ -464,47 +538,47 @@ Quelques css

              - Plus d'instructions dans la syntaxe markdown + Same again

              - --marqueur-question-- + --question-marker--

              - --marqueur-solution- + --text-marker--

              - La question irait ici (uniquement utilisé pour les défis vidéo) + The question would go here (only used for video challenges)

              - --marqueur-texte- + --answers-marker--

              - Réponse 2 + Answer 1


              - Réponse 2 + Answer 2


              - Exactement la même chose que la section graines + More answers

              - --réponses-marqueur-- + --solution-marker--

              @@ -520,13 +594,13 @@ Quelques css

              - Liens utiles + Useful Links

              - Réponse 1 + Creating and Editing Challenges:

              @@ -534,14 +608,14 @@ Quelques css
              1. - Type de défi - ce que les valeurs de type challenge numérique signifient (enum). + Challenge types - what the numeric challenge type values mean (enum).

              2. - Contribuer à FreeCodeCamp - Écrire des tests de défi ES6 - une vidéo suivant Ethan Arrowood car il contribue à l'ancienne version du curriculum. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

              3. diff --git a/docs/i18n/French/how-to-work-on-the-docs-theme.md b/docs/i18n/French/how-to-work-on-the-docs-theme.md index 35c90f5004..bf8bf8f6c9 100644 --- a/docs/i18n/French/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/French/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Comment travailler sur le thème de la documentation +# How to work on the docs theme -> [!NOTE] Un rappel rapide que vous n'avez pas besoin de configurer quoi que ce soit pour travailler sur le contenu du site de documentation. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Pour travailler sur les directives de contribution, vous pouvez modifier ou ajouter des fichiers dans le répertoire `docs` [disponible ici](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Lorsque vos modifications seront fusionnées, elles seront mises à disposition automatiquement sur le site de documentation. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Structure du site web de la documentation +## Structure of the docs website -Le site est généré en utilisant [`docsify`](https://docsify.js.org), et servi en utilisant des pages GitHub. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Généralement, vous n'aurez pas besoin de modifier une configuration ou de construire le site localement. Au cas où vous seriez intéressé, voici comment ça marche : +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- La source de la page d'accueil pour ce site est disponible dans [`docs/index.html`](index.html). -- Nous servons ce fichier comme SPA en utilisant `docsify` et GitHub Pages. -- Le script `docsify` génère le contenu des fichiers `markdown` dans le répertoire `docs` à la demande. -- La page d'accueil est générée à partir de la [`_coverpage.md`](_coverpage.md). -- la navigation dans la barre latérale est générée depuis [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Servir le site de documentation localement +## Serving the documentation site locally -Cloner le camp de code libre: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -Installer `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -et servir le répertoire `/docs` +and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternativement, si vous avez installé freeCodeCamp localement (voir le guide de configuration locale), nous regroupons le CLI avec les outils de développement pour que vous puissiez exécuter `docs:serve` depuis la racine du dépôt. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/French/how-to-work-on-the-news-theme.md b/docs/i18n/French/how-to-work-on-the-news-theme.md index 665b22e5f9..51ad62ccf0 100644 --- a/docs/i18n/French/how-to-work-on-the-news-theme.md +++ b/docs/i18n/French/how-to-work-on-the-news-theme.md @@ -1,8 +1,99 @@ - https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md \ No newline at end of file +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). + +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/French/index.md b/docs/i18n/French/index.md index 69002ee597..1c4add4ab3 100644 --- a/docs/i18n/French/index.md +++ b/docs/i18n/French/index.md @@ -1,45 +1,43 @@ -La communauté [freeCodeCamp.org](https://freecodecamp.org) est possible grâce à des milliers de bénévoles aimables comme vous. Nous accueillons toutes les contributions à la communauté et sommes heureux de vous accueillir à bord. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Avant de continuer, veuillez prendre quelques minutes pour lire notre [Code de Conduite](https://www.freecodecamp.org/code-of-conduct). Nous l'appliquons strictement dans toute notre communauté. Nous voulons contribuer à freeCodeCamp.org pour être une expérience sûre et inclusive pour tout le monde. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Bonne contribution. +Happy contributing. -Vous êtes les bienvenus à : +You are welcome to: -- Créez, mettez à jour et corrigez des bugs dans nos [challenges de codage](#coding-challenges). -- Aidez-nous à corriger les bugs sur la [plateforme d'apprentissage](#learning-platform) de freeCodeCamp.org. -- _(à venir)_ Aidez-nous à traduire freeCodeCamp.org dans les langues du monde. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Vous avez des questions? Rendez-vous sur [ces FAQs](/FAQ.md) où nous répondrons aux questions les plus courantes sur la contribution. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Défis de codage +## Curriculum -Tous nos défis en matière de codage sont organisés par la communauté, en apportant des connaissances expertes de bénévoles comme vous. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Vous pouvez aider à les étendre et à améliorer leur formulation. Vous pouvez également mettre à jour les histoires des utilisateurs pour mieux expliquer le concept ou supprimer les redondants et améliorer les tests de défi pour les rendre plus précis de tester le code des personnes. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Si vous êtes intéressé par l'amélioration de ces défis de codage, voici [comment travailler sur les challenges de codage](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Plateforme d'apprentissage +## Learning Platform -Notre plateforme d'apprentissage fonctionne sur une pile JavaScript moderne. Il a divers composants, outils et bibliothèques, y compris, mais sans s'y limiter, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack et plus. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Globalement, +Broadly, we use -- Nous avons un serveur API basé sur Node.js. -- Un ensemble d'applications client basées sur React. -- Un script que nous utilisons pour évaluer nos projets frontaux. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contribuer à cela nécessite une certaine compréhension des API, de la Syntaxe ES6 et beaucoup de curiosité. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentiellement, nous nous attendons à une familiarité de base avec certaines des technologies, outils et bibliothèques susmentionnées. Cela étant dit, vous ne devez pas être un expert pour y contribuer. +If you want to help us improve our codebase... -**Si vous voulez nous aider à améliorer notre base de code, vous pouvez soit utiliser Gitpod, un environnement de développement en ligne gratuit** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Ouvrir dans Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Démarre un environnement de développement prêt à être codé pour freeCodeCamp dans votre navigateur.) +Or you can... -OU - -**vous pouvez [configurer freeCodeCamp localement](how-to-setup-freecodecamp-locally.md) sur votre machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/French/moderator-handbook.md b/docs/i18n/French/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/French/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
                + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/German/FAQ.md b/docs/i18n/German/FAQ.md index c91e4d3eaf..7e64eec533 100644 --- a/docs/i18n/German/FAQ.md +++ b/docs/i18n/German/FAQ.md @@ -1,101 +1,82 @@ -### Ich bin neu bei GitHub und Open Source, wo soll ich anfangen? +### I am new to GitHub and Open Source. Where should I start? -Lesen Sie unsere ["Wie Sie zu Open Source Anleitung beitragen"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Es ist eine kompressive Ressource von ersten Timer-freundlichen Projekten und Richtlinien. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Kann ich den Lehrplan von FreeCodeCamp übersetzen? +### Can I translate freeCodeCamp's curriculum? -Wir werden die Lokalisierungsbemühungen auf FreeCodeCamp starten, beginnend mit dem **Chinesischen** zuerst. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Wir beabsichtigen, den Lehrplan in mehreren Sprachen zur Verfügung zu stellen, können uns aber noch nicht zu Fristen verpflichten. Mehrere operative Grenzen wie Mitarbeiter, aktive Beitragszahler und Serverkosten spielen eine Rolle bei der Internationalisierung (i18n). +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Wir beabsichtigen, mit i18n Anstrengungen in diesen Sprachen zu beginnen: Arabisch, Portugiesisch, Russisch und Spanisch (in keiner besonderen Reihenfolge) nachdem wir den Lehrplan auf Chinesisch veröffentlicht haben. +### How can I report a new bug? -**Warum konzentrieren Sie sich zuerst auf den chinesischen Lehrplan?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -China ist die größte demographische Region in unserem nichtenglischen Publikum. Zurzeit haben wir Hunderttausende von Benutzern, die eine alte Version der Plattform verwenden. Die Konzentration auf den chinesischen Lehrplan gibt uns eine Schätzung der Logistik in der i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Wir werden uns auf Lateinamerika als demographische Region für Portugiesen und Spanier konzentrieren. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -Wir haben in absehbarer Zeit keine Pläne für i18n in andere Sprachen außer den oben genannten Sprachen. +### How can I report a security issue? -Wir ermuntern Sie nicht, an i18n an den oben genannten Sprachen zu arbeiten. Wir können Pull-Requests ohne Erwartung von irgendwelchen Zeitplänen für den Einsatz akzeptieren. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Wie kann ich einen neuen Fehler melden? +### I am a student. Can I work on a feature for academic credits? -Wenn du denkst, du hast einen Fehler gefunden, lies zuerst den ["Hilfe habe einen Fehler gefunden"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) Artikel und folge den Anweisungen. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Wenn du sicher bist, dass es ein neuer Fehler ist, erstelle ein neues GitHub Problem. Achten Sie darauf, so viele Informationen wie möglich einzufügen, damit wir den Fehler reproduzieren können. Wir haben eine vordefinierte Problemvorlage, die Ihnen dabei helfen kann. +We request you to plan ahead and work on code contributions with this in mind. -Bitte beachten Sie, dass alle Probleme, die bei einer Challenge nach Codierungshilfe suchen, geschlossen werden. Der Issue-Tracker ist ausschließlich für codebase relevante Themen und Diskussionen. Wenn Sie Zweifel haben, sollten Sie [vor einem Bericht im Forum](https://forum.freecodecamp.org) um Hilfe bitten. +### What do these different labels that are tagged on issues mean? -### Wie kann ich ein Sicherheitsproblem melden? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Bitte erstellen Sie keine GitHub Probleme für Sicherheitsprobleme. Stattdessen senden Sie bitte eine E-Mail an `security@freecodecamp.org` und wir werden sie umgehend prüfen. - -### Ich bin Student, kann ich oder unser Team an einer Funktion für akademische Gutschriften arbeiten? - -Ja, sicher. - -Während wir für alle Beiträge offen sind, Bitte beachten Sie, dass wir keine Zeitachsen übernehmen können, die an Ihrer Hochschule oder Universität erforderlich sein könnten. Wir erhalten viele Pull-Requests und Code-Beiträge von freiwilligen Entwicklern und respektieren deren Zeit und Bemühungen. Wir werden in der Lage sein, keinem PR besondere Aufmerksamkeit zu schenken, um allen gerecht zu sein. - -Wir bitten Sie, voraus zu planen und eine Funktion zu erarbeiten. - -### Was bedeuten diese verschiedenen Labels, die auf Themen markiert sind? - -Die Code-Betreuer [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) Probleme und Pull-Requests basierend auf ihrer Priorität, Schwere und anderen Faktoren. Sie können [ein vollständiges Glossar mit seinen Bedeutungen hier finden:](https://github.com/freecodecamp/freecodecamp/labels). - -### Wo beginne ich, wenn ich an einem Thema arbeiten möchte? +### Where do I start if I want to work on an issue? Sie sollten durch [**` Hilfe gesucht, die`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) oder [**`Erster Timer nur`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) Tickets für einen schnellen Überblick über das zur Verfügung steht, an dem Sie arbeiten können. -> [!TIPP] **`Hilfe gesucht`** Probleme sind für Greifen offen und Sie brauchen keine Berechtigung zu suchen, bevor Sie daran arbeiten. Probleme mit dem **`First Timers nur`** Label sind jedoch für Personen reserviert, die nicht zur FreeCodeCamp Codebase beigetragen haben. Wenn diesen Fragen keine Klarheit darüber fehlt, was getan werden muss, können Sie in den Kommentaren Fragen stellen. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### Ich habe einen Tippfehler gefunden, sollte ich ein Problem melden, bevor ich eine Pull-Anfrage stellen kann? +### I found a typo. Should I report an issue before I can make a pull request? -Für Tippfehler und andere Formulierungsänderungen können Sie Pull-Requests direkt öffnen, ohne zuerst ein Problem zu erstellen. Probleme sind eher für die Diskussion größerer Probleme im Zusammenhang mit Code oder strukturellen Aspekten des Lehrplans. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -Bitte erwähnen Sie jedoch im Pull-Request-Beschreibungsbereich Details, Kontext etc. um uns zu helfen, Ihren Beitrag auch auf kleinere Änderungen zu verstehen und zu überprüfen. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### Wie bekomme ich ein Ticket zugewiesen? +### How can I get an issue assigned to me? -Wir weisen normalerweise niemanden außer langjährigen Mitwirkenden Probleme zu, um mehrdeutige No-Shows zu vermeiden. Stattdessen verfolgen wir die folgende Politik, um allen gerecht zu sein: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. Die erste Pull-Anfrage für ein Problem wird bevorzugt zusammengeführt. -2. Im Falle von mehreren Pull-Requests für das gleiche Problem geben wir Priorität auf die Qualität des Codes in den Pull-Requests. - - Haben Sie Tests einbezogen? - - Haben Sie alle usecases gefangen? - - Haben Sie alle Tests durchlaufen und bestätigt, dass alles lokal funktioniert? -3. Schließlich bevorzugen wir Pull-Requests die unseren empfohlenen Richtlinien folgen. - - Haben Sie der Pull-Request-Checkliste gefolgt? - - Haben Sie Ihren Pull-Request-Titel sinnvoll benannt? +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -Sie benötigen keine Berechtigung für Probleme, die als `Hilfe markiert sind, sondern` oder `erste Timer nur` , wie bereits erklärt wurde. +### I am stuck on something that is not included in this documentation. -Folgen Sie den Richtlinien sorgfältig und öffnen Sie eine Pull-Anfrage. +**Feel free to ask for help in:** -### Ich stecke auf etwas, das in dieser Dokumentation nicht enthalten ist. +- Die `Community` Kategorie von [unserem Community-Forum](https://forum.freecodecamp.org/c/contributors). +- Der `#Contributors` Kanal auf [unserem Discord Community Server](https://discord.gg/pFspAhS). -**Bitten Sie um Hilfe in:** +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -- The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). -- The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -Wir freuen uns, Ihnen bei allen Themen, an denen Sie arbeiten möchten, behilflich zu sein. Sie können uns Fragen zu den damit verbundenen Themen stellen und wir werden gerne klären. Stellen Sie sicher, dass Sie nach Ihrer Abfrage suchen, bevor Sie eine neue veröffentlichen. +**Additional Assistance:** -Seien Sie höflich und geduldig. Unsere Gemeinschaft von Freiwilligen und Moderatoren ist immer da, um Sie durch Ihre Fragen zu führen. +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -**Zusätzliche Hilfe:** - -Wenn Sie Fragen zum Stack, zur Architektur der Codebase haben, zögern Sie nicht, sich an unser Team zu wenden: - -| Mitarbeiter | Nachricht im Forum senden | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | -| Mücke Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | +| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | | Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | | Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | | Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Sie können unser Entwicklerteam per E-Mail benachrichtigen: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/German/_sidebar.md b/docs/i18n/German/_sidebar.md index 7f4589d096..1b5bda2bdc 100644 --- a/docs/i18n/German/_sidebar.md +++ b/docs/i18n/German/_sidebar.md @@ -1,36 +1,39 @@ -- **Erste Schritte** - - [Einführung](index 'Zur FreeCodeCamp.org Community beitragen') - - [Häufig gestellte Fragen](FAQ.md) -- **Code-Beitrag** -- - [FreeCodeCamp lokal einrichten](how-to-setup-freecodecamp-locally.md) - - [Pull-Request öffnen](how-to-open-a-pull-request.md) - - [Arbeit an Codierungsaufgaben](how-to-work-on-coding-challenges.md) - - [Arbeiten an Videoherausforderungen](how-to-help-with-video-challenges.md) - - [Arbeiten Sie am News-Thema](how-to-work-on-the-news-theme.md) - - [Arbeiten Sie mit dem Thema Dokumentation](how-to-work-on-the-docs-theme.md) -- **Optionale Anleitungen** - - [Abgehende E-Mails lokal auffangen](how-to-catch-outgoing-emails-locally.md) - - [FreeCodeCamp auf WSL einrichten](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Flughandbücher** (für Personal & Mods) - - [Moderatorhandbuch](flight-manuals/moderator-handbook.md) - - [Antwortvorlagen](flight-manuals/using-reply-templates.md) - - [DevOps Übersicht](devops.md) - - [Arbeiten auf Servern](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Unsere Community** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Diskursforum**](https://freecodecamp.org/forum/c/contributors) - - [**Gitter-Chat**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/German/devops.md b/docs/i18n/German/devops.md index 8ca480a44d..f9141bc4e6 100644 --- a/docs/i18n/German/devops.md +++ b/docs/i18n/German/devops.md @@ -1,227 +1,715 @@ -# Entwickleroperationen auf FreeCodeCamp.org +# DevOps Handbook -Dieser Leitfaden wird Ihnen helfen, unseren Infrastruktur-Stapel zu verstehen und wie wir unsere Plattformen pflegen. Obwohl diese Anleitung nicht über vollständige Details für alle Operationen verfügt, könnte sie als Referenz für Ihr Verständnis der Systeme verwendet werden. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Teilen Sie uns mit, wenn Sie Feedback oder Fragen haben, und wir werden gerne klären. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Wie können wir die Codebase bauen, testen und bereitstellen? +# Flight Manual - Code deployments -Dieses Projektarchiv wird kontinuierlich erstellt, getestet und in **separate Infrastruktur-Sätze (Server, Datenbanken, CDNs, etc.) eingesetzt** bereitgestellt. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Dies beinhaltet drei Schritte, die nacheinander verfolgt werden müssen: +This involves three steps to be followed in sequence: -1. Neue Änderungen (Fixes und Features) werden über Pull-Requests in unserem primären Entwicklungszweig (`Master`) zusammengeführt. -2. Diese Änderungen werden durch eine Reihe automatisierter Tests durchgeführt. -3. Sobald die Tests bestanden, werden die Änderungen freigegeben (oder bei Bedarf aktualisiert). +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Bau der Codebase - Mapping Git Branches to Deployments. +#### Building the codebase - Mapping Git Branches to Deployments. -Normalerweise [`Master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (der Standard-Entwicklungszweig) wird einmal täglich in den [`Produktions-Staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) Branch zusammengeführt und in eine isolierte Infrastruktur freigesetzt. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Dies ist eine Zwischenveröffentlichung für unsere Entwickler und Freiwillige. Es ist auch bekannt als unsere "Inszenierung" oder "Beta" Release. +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Es ist identisch mit unserer Live-Produktionsumgebung unter `freeCodeCamp.org`, außer mit einem separaten Satz von Datenbanken, Servern, Webproxies usw. Diese Isolierung ermöglicht es uns, laufende Entwicklungen und Features in einem "Produktion" wie dem Szenario zu testen, ohne die normalen Benutzer der Hauptplattformen von FreeCodeCamp.org zu beeinträchtigen. Diese Isolierung ermöglicht es uns, laufende Entwicklungen und Features in einem "Produktion" wie dem Szenario zu testen, ohne die normalen Benutzer der Hauptplattformen von FreeCodeCamp.org zu beeinträchtigen. +Es ist identisch mit unserer Live-Produktionsumgebung unter `freeCodeCamp.org`, außer mit einem separaten Satz von Datenbanken, Servern, Webproxies usw. Diese Isolierung ermöglicht es uns, laufende Entwicklungen und Features in einem "Produktion" wie dem Szenario zu testen, ohne die normalen Benutzer der Hauptplattformen von FreeCodeCamp.org zu beeinträchtigen. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. Sobald das Entwicklerteam [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) mit den Änderungen auf der Staging-Plattform zufrieden ist, diese Änderungen werden alle paar Tage in den Produktionszweig [``](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) verschoben. -Dies ist die finale Veröffentlichung, die Änderungen an unseren Produktionsplattformen auf FreeCodeCamp.org verschiebt. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Testing changes - Integration und User Acceptance Testing. +#### Testing changes - Integration and User Acceptance Testing. -Um die Qualität des Codes zu überprüfen, setzen wir verschiedene Integrations- und Akzeptanzstufen ein. Alle unsere Tests werden mit Software wie [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) und [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp) durchgeführt. +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Wir haben Unit-Tests zum Testen unserer Challenge-Lösungen, Server-APIs und Client-Benutzeroberflächen. Diese helfen uns, die Integration zwischen verschiedenen Komponenten zu testen. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. > [!HINWEIS] Wir sind auch dabei, Endanwender-Tests zu schreiben, die dazu beitragen, reale Weltszenarien wie das Aktualisieren einer E-Mail oder einen Aufruf an die API oder die Dienste von Drittanbietern zu replizieren. -Zusammen helfen diese Tests zu verhindern, dass sich Probleme wiederholen und stellen sicher, dass wir keinen Fehler einführen, während wir an einem anderen Fehler oder einer Funktion arbeiten. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Weitergabe von Änderungen - Pushing Änderungen an Server. +#### Deploying Changes - Pushing changes to servers. -Wir haben kontinuierliche Liefersoftware so konfiguriert, dass Änderungen an unseren Entwicklungs- und Produktionsservern beschleunigt werden. +We have configured continuous delivery software to push changes to our development and production servers. -Sobald die Änderungen in die geschützten Versionszweige gedrückt werden, wird automatisch eine Build-Pipeline für den Zweig ausgelöst. Die Pipelines sind dafür verantwortlich, Artefakte zu bauen und sie für einen späteren Gebrauch in einem Kaltlager zu halten. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -Die Build-Pipeline löst eine entsprechende Release-Pipeline aus, wenn sie einen erfolgreichen Lauf abschließt. Die Release-Pipelines sind dafür verantwortlich, die Build-Artefakte zu sammeln, sie auf die Server zu verschieben und live zu gehen. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. Status of builds and releases are [available here](#build-test-and-deployment-status). -## Ein Build, Test und Deployment auslösen. +## Trigger a build, test and deploy -Derzeit können nur Mitglieder des Entwicklerteams in die Produktionsbranchen schieben. Die Änderungen an den `-Produktions-*` Zweigen können nur über Schnellweiterleitung in den [`Upstream`](https://github.com/freeCodeCamp/freeCodeCamp) landen. +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). > [!HINWEIS] In den kommenden Tagen würden wir diesen Fluss verbessern, der über Pull-Requests erfolgen soll, um das Zugangsmanagement und die Transparenz zu verbessern. -### Änderungen an Staging Applikationen schieben. +### Pushing changes to Staging Applications. -1. Konfigurieren Sie Ihre Fernbedienungen richtig. +1. Configure your remotes correctly. ```sh git remote -v ``` - **Ergebnisse:** + **Results:** ``` - origin git@github.com:raisedadead/freeCodeCamp.git (fetch) - origin git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Vergewissern Sie sich, dass Ihr `Master` Branch unverändert und mit dem Upstream synchronisiert ist. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh - git Checkout Master - git retriech --all --prune + git checkout master + git fetch --all --prune git reset --hard upstream/master ``` -3. Überprüfen Sie, ob der Travis CI den `Master` Branch für den Upstream weitergibt. +3. Check that the Travis CI is passing on the `master` branch for upstream. - Die [kontinuierlichen Integrations-](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) Tests sollten grün und PASSING für den `Master` Zweig sein. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
                Überprüfe den Status auf Travis CI (Screenshot) +
                Checking status on Travis CI (screenshot)
                - ![Build-Status auf Travis CI überprüfen](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
                - Wenn dies fehlschlägt, sollten Sie aufhören und die Fehler untersuchen. + If this is failing you should stop and investigate the errors. -4. Bestätigen Sie, dass Sie das Projektarchiv lokal erstellen können. +4. Confirm that you are able to build the repository locally. ``` - npm laufen sauber und entwickeln + npm run clean-and-develop ``` -5. Änderungen von `master` auf `Production-Staging` über eine Schnell-Forware-Merge verschieben +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` - git checkout Production-Staging + git checkout production-staging git merge master git push upstream ``` > [!HINWEIS] Du wirst nicht in der Lage sein, Push zu erzwingen und wenn du den Verlauf auf jeden Fall neu geschrieben hast, werden diese Befehle fehlerhaft sein. > - > Wenn das der Fall ist, haben Sie möglicherweise etwas falsch gemacht, und Sie sollten einfach neu anfangen. + > If they do, you may have done something incorrectly and you should just start over. -The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Sobald die Erstellung abgeschlossen ist, werden die Artefakte als `.zip` Dateien in einem kalten Speicher gespeichert, der später abgerufen und verwendet wird. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -Die Release-Pipeline wird automatisch ausgelöst, wenn ein neues Artefakt über die angeschlossene Build-Pipeline verfügbar ist. Für Staging-Plattformen erfordert dieser Prozess keine manuelle Freigabe und die Artefakte werden auf den Client CDN und API-Server geschoben. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP|label:Estimates] Der Build-Run dauert normalerweise ~20-25 Minuten, um den Release-Run abzuschließen, der ~15-20 Minuten dauert, für den Client und ~5-10 Minuten für die API verfügbar sein. Vom Code-Push bis zum Live Live auf den Staging-Plattformen dauert der gesamte Prozess **~35-45 Minuten** insgesamt. +> [!TIP|label:Estimates] Der Build-Run dauert normalerweise ~20-25 Minuten, um den Release-Run abzuschließen, der ~15-20 Minuten dauert, für den Client und ~5-10 Minuten für die API verfügbar sein. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Pushing von Änderungen an Produktionsanwendungen. +### Pushing changes to Production Applications. -Der Prozess ist meist identisch mit den Staging-Plattformen, wobei einige zusätzliche Kontrollen durchgeführt werden. Dies ist nur, um sicherzustellen, dass wir nichts auf freeCodeCamp.org kaputt machen, das jederzeit hunderte von Benutzern sehen kann, die es verwenden. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| Führen Sie diese Befehle NICHT aus, es sei denn, Sie haben überprüft, dass alles auf der Staging-Plattform funktioniert. Du solltest keine Tests auf Staging umgehen oder überspringen, bevor du weiter fortfährst. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Vergewissern Sie sich, dass Ihr `-Produktions-Staging-` Zweig unberührt und mit dem Upstream synchronisiert ist. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh - git checkout Production-Staging + git checkout production-staging git fetch --all --prune git reset --hard upstream/production-staging ``` -2. Änderungen von `Produktionsphase` auf `Produktionsstrom verschieben` durch Schnell-Forware-Zusammenführung +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` - git checkout produktion-current + git checkout production-current git merge production-staging git push upstream ``` > [!HINWEIS] Du wirst nicht in der Lage sein, Push zu erzwingen und wenn du den Verlauf auf jeden Fall neu geschrieben hast, werden diese Befehle fehlerhaft sein. > - > Wenn das der Fall ist, haben Sie möglicherweise etwas falsch gemacht, und Sie sollten einfach neu anfangen. + > If they do, you may have done something incorrectly and you should just start over. -Die obigen Schritte werden automatisch einen Run auf die Build-Pipeline für den `Produktionsstrom-Branch` auslösen. Sobald ein Build-Artefakt fertig ist, wird es einen Run auf die Release-Pipeline auslösen. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. > [!TIP|label:Estimates] Der Build-Run dauert normalerweise ~20-25 Minuten. -**Zusätzliche Schritte für die Personalaktion** +**Additional Steps for Staff Action** -Ein Release-Run wird ausgelöst, Mitglieder des Entwicklerteams erhalten eine automatisierte manuelle Interventions-E-Mail. They can either _approve_ or _reject_ the release run. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Wenn die Änderungen gut funktionieren und auf der Staging-Plattform getestet wurden, kann sie genehmigt werden. Die Genehmigung muss innerhalb von 4 Stunden nach dem Auslösen der Veröffentlichung erteilt werden, bevor sie automatisch abgelehnt wird. Ein Stab kann die Freigabe manuell für abgelehnte Läufe auslösen oder auf den nächsten Release-Zyklus warten. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Für Personalnutzung: +For staff use: -| Überprüfen Sie Ihre E-Mail für einen direkten Link oder [gehen Sie zum Release-Dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) nachdem der Build-Run abgeschlossen ist. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Sobald einer der Mitarbeiter eine Veröffentlichung genehmigt, wird die Pipeline die Änderungen live auf FreeCodeCamp.orgs Produktions-CDN- und API-Server übertragen. Sie benötigen normalerweise ~15-20 Minuten für den Client, und ~5 Minuten für die Verfügbarkeit der API-Server. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP|label:Estimates] Der Release-Run benötigt normalerweise ~15-20 Minuten für jede Clientinstanz, und ~5-10 Minuten für jede API-Instanz, um live verfügbar zu sein. Vom Code-Push bis zum Live-Betrieb auf den Produktionsplattformen dauert der gesamte Prozess **~90-120 Minuten** (ohne die Wartezeit auf die Genehmigung des Personals zu zählen). +> [!TIP|label:Estimates] Der Release-Run benötigt normalerweise ~15-20 Minuten für jede Clientinstanz, und ~5-10 Minuten für jede API-Instanz, um live verfügbar zu sein. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Bau-, Test- und Einsatzstatus +## Build, Test and Deployment Status -Hier ist der aktuelle Test-, Build-und Bereitstellungsstatus der Codebase. +Here is the current test, build and deployment status of the codebase. -| Typ | Zweig | Status | Dashboard | -|:------------------ |:----------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |:------------------------------------------------------------------------------------------------ | -| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Zum Status Dashboard wechseln](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| CI Tests | [`produktionsphase`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Zum Status Dashboard wechseln](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Pipeline bauen | [`produktionsphase`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Baustatus](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Zum Status Dashboard wechseln](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Pipeline freigeben | [`produktionsphase`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Zum Status Dashboard wechseln](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| CI Tests | [`produktionstrom-Strom`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Zum Status Dashboard wechseln](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Pipeline bauen | [`produktionstrom-Strom`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Baustatus](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Zum Status Dashboard wechseln](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Pipeline freigeben | [`produktionstrom-Strom`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Zum Status Dashboard wechseln](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Früher Zugriff und Betatest +## Early access and beta testing -Wir freuen uns, dass Sie diese Versionen im **"Public Beta testing"** Modus testen und frühzeitigen Zugriff auf die kommenden Funktionen auf den Plattformen erhalten. Manchmal werden diese Funktionen/Änderungen als **, Beta, Staging,** usw. bezeichnet. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Manchmal werden diese Funktionen/Änderungen als **, Beta, Staging,** usw. bezeichnet. -Deine Beiträge durch Feedback und Fehlerberichte werden uns helfen, die Produktionsplattformen unter `freeCodeCamp zu erstellen. rg` mehr **widerstandsfähig**, **konsistent** und **stabil** für alle. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Wir danken Ihnen für die Fehlermeldung, auf die Sie stoßen, und helfen Ihnen FreeCodeCamp.org zu verbessern. Du rockst! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Identifizierung der kommenden Version der Plattformen +### Identifying the upcoming version of the platforms -Derzeit ist eine öffentliche Beta-Testversion verfügbar: +Currently a public beta testing version is available at:

                freecodecamp.dev

                -> [!HINWEIS] Der Domainname unterscheidet sich von **`freeCodeCamp.org`**. Dies ist beabsichtigt, die Indexierung von Suchmaschinen zu verhindern und Verwirrung für normale Benutzer der Plattform zu vermeiden. +> [!HINWEIS] Der Domainname unterscheidet sich von **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identifizierung der aktuellen Version der Plattformen +### Identifying the current version of the platforms -**Die aktuelle Version der Plattform ist immer verfügbar unter [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -Das dev-team führt Änderungen vom `-Produktions-Staging-` Branch zu `Produktions-Strom` , wenn sie freigegeben werden. Der beste Commit sollte sein, was du live auf der Seite siehst. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Sie können die genaue Version ermitteln, indem Sie die Build- und Bereitstellungsprotokolle im Abschnitt Status aufrufen. Alternativ kannst du uns auch im [Mitwirkenden Chatraum](https://gitter.im/FreeCodeCamp/Contributors) um eine Bestätigung zu erhalten. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Bekannte Einschränkungen +### Known Limitations -Es gibt einige bekannte Einschränkungen und Kompromisse bei der Beta-Version der Plattform. +There are some known limitations and tradeoffs when using the beta version of the platform. - #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Benutzer der Beta-Version werden ein separates Konto von der Produktion haben.** Die Beta-Version verwendet eine physikalisch getrennte Datenbank von der Produktion. Dies gibt uns die Möglichkeit, zufällige Datenverluste oder Änderungen zu verhindern. Das Entwicklerteam kann die Datenbank auf dieser Beta-Version gegebenenfalls löschen. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Es gibt keine Garantien für die Laufzeit und die Zuverlässigkeit der Beta-Plattformen. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Es wird erwartet, dass die Einsatzbereitschaft häufig und in raschen Iterationen erfolgt, manchmal mehrmals am Tag. Infolgedessen wird es zu unerwarteten Ausfallzeiten oder zu kaputten Funktionalitäten auf der Beta-Version kommen. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Senden Sie keine regulären Benutzer auf diese Seite um eine Korrektur zu bestätigen +- #### Do not send regular users to this site as a measure of confirming a fix - Die Beta-Seite ist und war es immer gewesen, lokale Entwicklung und Testing, nichts anderes. Es ist kein Versprechen, was kommt, sondern ein Blick auf das, woran man arbeitet. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### Zeichenseite kann anders aussehen als die Produktion +- #### Sign page may look different than production - Wir verwenden einen Test-Mieter für freecodecamp.dev auf Auth0 und haben daher nicht die Möglichkeit, eine eigene Domain zu setzen. Dies macht es so dass alle Redirect Callbacks und die Login-Seite auf einer Standard-Domain erscheinen wie: `https://freecodecamp-dev.auth0.com/`. Dies hat keinen Einfluss auf die Funktionalität ist so nah an der Produktion, wie wir erhalten können. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Fehler melden und Feedback hinterlassen +## Reporting issues and leaving feedback -Bitte öffnen Sie neue Ausgaben für Diskussionen und Fehlermeldungen. Sie können sie als **[`Release benennen: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** für Triage. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Sie können eine E-Mail an `dev[at]freecodecamp.org` senden, wenn Sie Fragen haben. Wie immer sollten alle Sicherheitslücken an `security[at]freecodecamp.org` anstatt an den öffentlichen Tracker und Forum gemeldet werden. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Abfragen einer Liste der VMs + +> [!HINWEIS] Während Sie möglicherweise bereits SSH-Zugriff auf die VMs haben, dass allein Ihnen keine VMs anzeigen lässt, es sei denn, Ihnen wurde auch Zugriff auf die Cloud-Portale gewährt. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(Einmalig) Installation unter macOS mit [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(Einmalig) Login:** + +``` +az login +``` + +> **Abfragen der Liste der VM-Namen und IP-Adressen:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Installiere Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(Einmalig) Installation unter macOS mit [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(Einmalig) Login:** + +Authentifizierung und Kontextwechsel: https://github.com/digitalocean/doctl#Authentifizierung mit-digitalocean + +``` +doctl auth init +``` + +> **Abfragen der Liste VM-Namen und IP-Adressen:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Hochfahren einer VM (oder eines VM Scale Set) + +> Zu erledigen: Hinzufügen von Anleitungen zum Hoch- und Herunterfahren von VM(s) + + + + +## VMs aktuell halten + +Sie sollten die VMs auf dem Laufenden halten, indem Sie Updates und Upgrades durchführen. Dies wird sicherstellen, dass die virtuelle Maschine mit den neuesten Sicherheitskorrekturen gepatcht wird. + +> [!WARNUNG] Bevor Sie diese Befehle ausführen: +> +> - Vergewissern Sie sich, dass die VM vollständig bereitgestellt wurde und dass nach der Installation keine Schritte ausgeführt werden. +> - Wenn Sie Pakete auf einer VM aktualisieren, die bereits eine Anwendung bedient, stellen Sie sicher, dass die App angehalten / gespeichert wurde. Paket-Aktualisierungen verursachen Netzwerk-Bandbreite, Speicher und/oder CPU-Auslastungsspikes, die zu Ausfällen bei laufenden Anwendungen führen. + +Paket-Informationen aktualisieren + +```console +sudo apt update +``` + +Installierte Pakete aktualisieren + +```console +sudo apt upgrade -y +``` + +Unbenutzte Pakete entfernen + +```console +sudo apt autoremove -y +``` + +## Arbeiten mit Web-Servern (Proxy) + +Wir führen Lastbalancierungen (Azure Load Balancer) Instanzen für unsere Web-Server aus. Auf diesen Servern läuft NGINX, die den gesamten Datenverkehr auf FreeCodeCamp.org von verschiedenen Anwendungen rückgängig machen, die auf eigenen Infrastrukturen laufen. + +Die NGINX-Konfiguration ist auf [dieses Repository](https://github.com/freeCodeCamp/nginx-config) verfügbar. + +### Erste Installation + +Provisionieren der VMs mit Code + +#### 1. (Optional) Installieren Sie NGINX und konfigurieren Sie aus dem Repository. + +Die Grundeinstellung sollte über die cloud-init-Konfiguration bereits vorhanden sein. SSH und nehmen Änderungen vor, die für die jeweilige Instanz(en) notwendig sind. + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Installieren von Cloudflare Origin Certificates und Upstream-Anwendungskonfiguration. + +Holen Sie sich die Cloudflare Ursprungszertifikate vom sicheren Speicher und installieren Sie an benötigten Standorten. + +**ODER** + +Vorhandene Zertifikate übertragen: + +```console +# Lokal +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Auf dem Server +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Upstream-Konfigurationen aktualisieren: + +```console +vi configs/upstreams.conf +``` + +IP-Adressen der Quell-/Ursprungsanwendung hinzufügen/aktualisieren. + +#### 3. Netzwerk und Firewalls einrichten. + +Konfigurieren Sie Azure Firewalls und `ufw` je nach Bedarfsfall für eingehende Ursprungsadressen. + +#### 4. Fügen Sie die VM dem Loadbalancer Backend Pool hinzu. + +Falls erforderlich, konfigurieren und fügen Sie Regeln für den Loadbalancer hinzu. Möglicherweise müssen Sie auch die VMs hinzufügen, um den Bilanz-Backend Pool zu laden, falls nötig. + +### Aktualisiere Instanzen (Wartung) + +1. Prüfen Sie den Status des NGINX Services mit folgendem Befehl: + +```console +sudo systemctl status nginx +``` + +2. Protokollierung und Überwachung der Server sind zu finden unter: + +>

                https://amplify.nginx.com

                +### Aktualisieren von Instanzen (Wartung) + +Config Änderungen an unseren NGINX-Instanzen werden auf GitHub gepflegt. Diese sollten in jeder Instanz wie folgt eingesetzt werden: + +1. Per SSH mit der Instanz verbinden und sudo eingeben + +```console +sudo su +``` + +2. Herunterladen des neuesten Konfigurationscodes. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Testen und laden Sie die Konfiguration [mit Signalen](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx) neu. + +```console +nginx -t +nginx -s reload +``` + +## Arbeiten an API-Instanzen + +1. Installieren Sie Build-Tools für Node Binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### Erste Installation + +Provisionieren der VMs mit Code + +1. Node LTS installieren. + +2. `npm` aktualisieren und PM2 installieren und Logrotate und Start beim Booten einrichten + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Klonen von freeCodeCamp, einrichten von env und Schlüsseln. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # oder einen andere auszurollenden Zweig + ``` + +4. Erstellen Sie die `.env` aus dem geschützten Zugangsdatenspeicher. + +5. Erstellen Sie die `google-credentials.json` aus dem geschützten Zugangsdatenspeicher. + +6. Installation von Abhängigkeiten + + ```console + npm ci + ``` + +7. Erstellen des Servers + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Starte Instanz + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Aktualisiere Instanzen (Wartung) + +```console +## Protokollierung und Überwachung + +```console +pm2 Logs +``` + +```console +pm2 monit +``` + +### Aktualisieren von Instanzen (Wartung) + +Code-Änderungen müssen von Zeit zu Zeit in den API-Instanzen verteilt werden. Es kann ein rollendes Update oder ein manuelles Update sein. Das spätere ist notwendig, wenn Abhängigkeiten geändert oder Umgebungsvariablen hinzugefügt werden. + +> [!DANGER] Die automatisierten Pipelines bearbeiten keine Abhängigkeitsaktualisierungen in der Minute. Wir müssen eine manuelle Aktualisierung durchführen, bevor eine Deployment-Pipeline läuft. + +#### 1. Manuelle Aktualisierungen - Wird für das Aktualisieren von Abhängigkeiten und env Variablen verwendet. + +1. Stoppen aller Instanzen + +```console +pm2 stop all +``` + +2. Installation von Abhängigkeiten + +```console +npm ci +``` + +3. Erstellen des Servers + +```console +npm run ensure-env && npm run build:server +``` + +4. Starte Instanz + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rollende Aktualisierungen - Wird für logische Änderungen am Code verwendet. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] Wir handhaben rollende Aktualisierungen am Code, Logik, über Pipelines. You should not need to run these commands. Diese dienen der Dokumentation. + +## Arbeiten an Client-Instanzen + +1. Installieren Sie Build-Tools für Node Binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### Erste Installation + +Provisionieren der VMs mit Code + +1. Node LTS installieren. + +2. `npm` aktualisieren und PM2 installieren und Logrotate und Start beim Booten einrichten + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Klonen von Client-Konfiguration, einrichten von env und Schlüsseln. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Starte Platzhalter-Instanzen für den Web-Client, diese werden mit Artefakten aus der Azure Pipline aktualisiert. + + > Todo: Dieses Setup muss in den S3 oder Azure Blob Speicher verschoben werden + > + > ```console + ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary. h + pm2 löschen Kunden primäre + pm2 Start . client-start-primary.sh --name client-primary + echo "serve -c . /../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary. h + pm2 löschen Kunde Sekundär + pm2 Start ./client-start-secondary.sh --name client-secondary +``` + +### Aktualisiere Instanzen (Wartung) + +```console +## Protokollierung und Überwachung + +```console +pm2 Logs +``` + +```console +pm2 monit +``` + +### Aktualisieren von Instanzen (Wartung) + +Code-Änderungen müssen von Zeit zu Zeit in den API-Instanzen verteilt werden. Es kann ein rollendes Update oder ein manuelles Update sein. Das spätere ist notwendig, wenn Abhängigkeiten geändert oder Umgebungsvariablen hinzugefügt werden. + +> [!DANGER] Die automatisierten Pipelines bearbeiten keine Abhängigkeitsaktualisierungen in der Minute. Wir müssen eine manuelle Aktualisierung durchführen, bevor eine Deployment-Pipeline läuft. + +#### 1. Manuelle Aktualisierungen - Wird für das Aktualisieren von Abhängigkeiten und env Variablen verwendet. + +1. Stoppen aller Instanzen + + ```console + pm2 stop all + ``` + +2. Abhängigkeiten installieren oder aktualisieren + +3. Starte Instanz + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rollende Aktualisierungen - Wird für logische Änderungen am Code verwendet. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] Wir handhaben rollende Aktualisierungen am Code, Logik, über Pipelines. You should not need to run these commands. Diese dienen der Dokumentation. diff --git a/docs/i18n/German/flight-manuals/moderator-handbook.md b/docs/i18n/German/flight-manuals/moderator-handbook.md deleted file mode 100644 index 61a9f55451..0000000000 --- a/docs/i18n/German/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,325 +0,0 @@ -# Das offizielle FreeCodeCamp Moderator Handbuch. - -Dies wird dir helfen, verschiedene Orte in unserer Community zu moderieren, einschließlich: - -- GitHub Tickets & Pull-Requests -- Das Forum, Chat-Räume, Facebook-Gruppen und andere Online-Treffpunkte -- Persönliche Veranstaltungen wie Lerngruppen, Hackathonen und Konferenzen - -**Alle FreeCodeCamp Moderatoren sind Community-Moderatoren. Das bedeutet, dass wir darauf vertrauen, dass Sie diese Orte beaufsichtigen.** - -Dies bedeutet, dass Sie als Moderator an jedem Ort fungieren können, der für Sie am meisten interessant ist. Einige Moderatoren helfen gerade auf GitHub weiter. Andere helfen nur im Forum. Einige Moderatoren sind überall aktiv. - -Unterm Strich möchten wir, dass du ein Moderator bist und investieren Sie Ihre knappe Zeit an Orten, die für Sie von Interesse sind. - -> [!HINWEIS] "Mit großer Macht kommt große Verantwortung." - Onkel Ben - -Als Moderator ist Temperament wichtiger als technische Fähigkeiten. - -Hören Sie zu. Sei Helpful. Beschützen Sie nicht Ihre Macht. - -freeCodeCamp ist eine integrative Community und wir müssen es so halten. - -Wir haben einen einzigen Verhaltenskodex, der unsere gesamte Gemeinschaft regelt. Je weniger Regeln gelten, desto leichter können sie sich daran erinnern. Sie können diese Regeln lesen und sie in den Speicher [hier eintragen](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderatoren haben die Möglichkeit, Probleme zu schließen und Pull-Requests anzunehmen oder zu schließen. - -Moderatoren haben zwei Hauptverantwortungen in Bezug auf GitHub: - -1. Pull-Requests vereinen und zusammenführen -2. Auswerten und Antworten auf Probleme - -## Pull-Requests moderieren - -Pull Requests (PRs) sind die Art, wie Beitragende Änderungen an FreeCodeCamps Repository einreichen. Es ist wichtig, dass wir die Qualitätssicherung (QA) auf Pull-Requests durchführen, bevor wir entscheiden, ob wir sie zusammenführen oder schließen. - -### Pull-Requests Typen - -1. **Challenge Instruction Bearbeitungen** Dies sind Änderungen am Text der Herausforderungen - die Beschreibung, Anleitung oder Testtext. Du kannst diese Rechte auch auf GitHub überprüfen und entscheiden, ob du sie zusammenführen möchtest. Wir müssen etwas vorsichtiger damit umgehen, denn Millionen von Menschen werden auf diesen Text stoßen, wenn sie durch den kostenlosen CodeCamp Lehrplan arbeiten. Macht der Pull-Request den Text klarer, ohne ihn noch länger zu machen? Sind die Änderungen relevant und nicht zu pedantisch? Denken Sie daran, dass unser Ziel ist, die Herausforderungen so klar und so kurz wie möglich zu gestalten. Sie sind nicht der Ort für obskure Details. Außerdem können Mitwirkende versuchen, Links zu Ressourcen zu den Herausforderungen hinzuzufügen. Sie können diese Pull-Requests schließen und darauf antworten: - - > Vielen Dank für Ihre Pull-Anfrage. - > - > Ich schließe diesen Pull-Antrag ab. Bitte fügen Sie stattdessen Links und andere Details zum entsprechenden Anleitungsartikel der Challenge hinzu. - > - > Wenn du denkst, dass ich bei der Schließung dieses Themas falsch bin, öffne es bitte erneut und füge weitere Erläuterungen hinzu. Vielen Dank und glückliche Kodierung. - -2. **Challenge Code Bearbeitung** Dies sind Änderungen an dem Code in einer Challenge Seed, Challenge Lösung und Test Strings. Diese Pull-Requests müssen von GitHub nach unten gezogen und auf Ihrem lokalen Computer getestet werden, um sicherzustellen, dass die Challenge-Tests mit der aktuellen Lösung weiterhin bestehen können und der neue Code führt zu keinen Fehlern. Einige Mitwirkende können versuchen, zusätzliche Tests hinzuzufügen, um pedantische Eckfälle abzudecken. Wir müssen aufpassen, dass die Herausforderung nicht zu kompliziert wird. Diese Herausforderungen und ihre Tests sollten so einfach und intuitiv wie möglich sein. Neben den Algorithmus-Herausforderungen und der Vorab-Sektion sollten die Lernenden in der Lage sein, jede Herausforderung innerhalb von etwa 2 Minuten zu lösen. - -3. **Codebase ändert** Diese Code-Änderungen ändern die Funktionalität der FreeCodeCamp-Plattform selbst. Manchmal versuchen die Mitwirkenden ohne viel Erklärung Änderungen vorzunehmen, aber für Änderungen des Codes müssen wir sicherstellen, dass die Änderungen wirklich notwendig sind. Diese Pull Requests sollten also auf ein bestehendes GitHub Problem verweisen, bei dem die Gründe für die Änderung diskutiert werden. Dann können Sie die Pull-Requests auf Ihrem Computer öffnen und sie lokal testen. Wenn die Änderungen gut aussehen, werden sie noch nicht zusammengeführt. Du kannst den Pull-Request kommentieren und dann @raisedadead erwähnen, damit er einen letzten Blick werfen kann. - -### Pull-Requests zusammenführen oder schließen - -Zunächst einmal sollten Sie sich, wenn Sie einen Pull-Request für die QA wählen, dieser zuordnen. Sie können dies tun, indem Sie auf den Link "sich selbst zuweisen" unten auf der rechten Spalte des GitHub Interfaces klicken. - -Je nach Art der Pull-Request-Anforderung folgen Sie den oben aufgeführten Regeln. - -Bevor Sie einen Pull-Request zusammenführen, stellen Sie sicher, dass GitHub grüne Prüfzeichen für alles hat. Wenn es X gibt, erkundigen Sie diese zuerst und finden Sie heraus, wie Sie diese zuerst in grüne Markierungen umwandeln können. - -Manchmal wird es einen Fusionskonflikt geben. Dies bedeutet, dass ein anderer Pull-Request eine Änderung an diesem exakten Teil derselben Datei vorgenommen hat. GitHub hat ein Werkzeug, um diese Fusionskonflikte direkt auf GitHub anzugehen. Sie können versuchen, diese Konflikte anzugehen. Nutzen Sie einfach Ihr bestes Urteil. Die Änderungen der Pull-Requests sind oben und die Änderungen des Master-Zweiges werden unten angezeigt. Manchmal wird es dort überflüssige Informationen geben, die gelöscht werden können. Bevor Sie fertig sind, löschen Sie bitte `<<<<<<`, `======`, und `>>>>>>>` , die Git zu Konfliktzonen hinzufügt. - -Wenn der Pull-Request zum Zusammenführen bereit aussieht (und keine Genehmigung von @raisedadead benötigt), können Sie ihn zusammenführen. Bitte verwenden Sie die Standardfunktionalität "Squash and Merge" auf GitHub. Dies wird alle Pull Requests in einen einzigen Commit einbinden, was die Git Historie viel einfacher zu lesen macht. - -Sie sollten dann den Pull Request kommentieren, dem Beitragenden auf Ihre persönliche Art und Weise danken. - -Wenn der Autor des Pull-Requests ein "Erstmaliger Beitrag" ist, sollten Sie ihn auch zu ihrem ersten verschmelzten Pull-Request in das Repository beglückwünschen. Sie können sich die obere rechte Ecke des PR ansehen, um einen erstmaligen Beitragenden zu ermitteln. Es wird `erste Beitragszahler` wie unten angezeigt: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -Wenn der Pull-Request nicht bereit zur Zusammenführung ist, kannst du höflich antworten und dem Autor sagen, was er tun sollte, um es fertig zu bekommen. Hoffentlich werden sie antworten und ihre Pull-Anfrage näher an sie heranbringen. - -Oft wird ein Pull-Request offensichtlich wenig Aufwand sein. Sie können dies oft sofort sagen, wenn der Beitragende sich nicht die Mühe gemacht hat, die Kontrollkästchen im Pull-Request Template anzukreuzen, oder verwendet einen generischen Pull-Request-Titel wie "Änderungen gemacht" oder "Aktualisierungsindex. - -Es gibt auch Situationen, in denen der Beitragende versucht, einen Link zu seiner eigenen Website hinzuzufügen oder eine Bibliothek, die sie selbst erstellt haben, einbinden oder eine leichtsinnige Bearbeitung haben, die niemandem außer sich selbst hilft. - -In beiden dieser Situationen sollten Sie ihre Pull-Request schließen und mit dieser Standardnachricht antworten: - -> Vielen Dank für das Öffnen dieser Pull-Anfrage. -> -> Dies ist eine Standardnachricht, die dich darüber informiert, dass wir deine Pull-Requests überprüft haben und beschlossen haben, sie nicht zusammenzuführen. Wir würden uns freuen, wenn Sie sich bei uns melden. -> -> Vielen Dank und glückliche Kodierung. - -Wenn Sie eine zweite Meinung zu einem Pull-Request benötigen, gehen Sie voran und hinterlassen Sie Ihre Kommentare zum Pull-Request dann fügen Sie das "Diskussion"-Label dem Pull-Request hinzu. - -## Probleme mit GitHub moderieren - -freeCodeCamp ist ein aktives Open Source Projekt. Wir bekommen jeden Tag neue Themen, die alle verdreifacht und gekennzeichnet werden müssen. - -### Typen von GitHub Problemen - -1. **Code-Hilfe-Anfragen**, für die Leute fälschlicherweise GitHub Probleme erstellt haben. Wenn jemand um Hilfe bittet, fügen Sie die folgende Nachricht ein, dann schließen Sie das Problem. - - > Vielen Dank, dass Sie dieses Problem gemeldet haben. - > - > Dies ist eine Standardnachricht, die Sie darüber informiert, dass dieses Problem eine Bitte um Hilfe zu sein scheint. Anstatt hier um Hilfe zu bitten, klicken Sie bitte auf den \*"Hilfe"\*\* Button auf der Challenge auf FreeCodeCamp, die Ihnen helfen wird, eine Frage im richtigen Teil des Forums zu erstellen. Freiwillige im Forum antworten in der Regel innerhalb weniger Stunden auf Fragen und können dabei helfen, herauszufinden, ob es ein Problem mit deinem Code oder den Tests der Challenge gibt. - > - > Wenn die Forumsmitglieder feststellen, dass nichts mit Ihrem Code zu tun hat, können Sie die Wiedereröffnung dieses Problems beantragen. - > - > Vielen Dank und glückliche Kodierung. - -2. **Fehler oder Klärungsprobleme** Versuchen Sie, den Fehler selbst zu reproduzieren, wenn Sie können. Falls nicht, bitte sie um die Schritte, um den Fehler zu reproduzieren und ob sie Screenshots haben, Videos oder zusätzliche Details, die Ihnen helfen können, das Problem zu reproduzieren. Sobald Sie das Problem reproduzieren können - oder zumindest bestätigen, dass es ein legales Problem ist - bezeichnen Sie es `bestätigt`. Dann: - -- Wenn es eine einfache Änderung an einer bestehenden Herausforderung ist, benennen Sie nur `erste Timer`, sonst wird eine Bezeichnung als `hilfe gesucht`. Andere Labels verwenden, wie es zutrifft. -- Wenn das Problem wichtiger ist, Flagge als `Bug`.   Wenn es irgendwelche Unklarheiten bezüglich der richtigen Vorgehensweise bei einem Thema gibt Sie können @raisedadead zu diesem Thema markieren und dann den `Discussing` Label hinzufügen. - -3. **Probleme duplizieren** Wenn ein Problem mit einem anderen gemeldeten Problem identisch ist, sollte das zuvor gemeldete Problem Vorrang haben. Als `duplizieren`markieren, fügen Sie die folgende Nachricht ein und ersetzen Sie `#XXXXX` mit der Ticketnummer, dann schließen Sie das Problem. - - > Vielen Dank, dass Sie dieses Problem gemeldet haben. - > - > Dies ist eine Standardnachricht, die dich darüber informiert, dass dieses Problem sehr ähnlich zu sein scheint wie das Problem #XXXXX, also schließe ich es als Duplikat. - > - > Wenn du denkst, dass ich bei der Schließung dieses Themas falsch bin, öffne es bitte erneut und füge weitere Erläuterungen hinzu. Vielen Dank und glückliche Kodierung. - -4. **Behoben in Staging** Einige Probleme wurden möglicherweise bereits in der Stagnation behoben, haben aber kein GitHub-Problem damit verknüpft. Wenn dies der Fall ist, können Sie folgende Nachricht einfügen, das Problem schließen und einen `-Status hinzufügen: gelöst/versand` Label: - - > Vielen Dank, dass Sie dieses Problem gemeldet haben. - > - > Dies ist eine Standardnachricht, die Sie darüber informiert, dass das Problem, das Sie hier erwähnt haben, in der Produktion vorhanden ist aber dass es bereits in der Stagierung fixiert ist. Das bedeutet, dass das nächste Mal, wenn wir unseren Produktionszweig zur Produktion drängen, dieses Problem behoben werden sollte. Aus diesem Grund schließe ich dieses Problem. - > - > Wenn du denkst, dass ich bei der Schließung dieses Themas falsch bin, öffne es bitte erneut und füge weitere Erläuterungen hinzu. Vielen Dank und glückliche Kodierung. - -### Schließen von veralteten, inaktiven Issues und Pull-Requests - -- Alte Probleme oder PRs sind diejenigen, die seit 21 Tagen keine Aktivität der OP gesehen haben (3 Wochen ab der letzten Aktivität), aber erst nachdem ein Moderator mehr Informationen oder Änderungen angefordert hat. Diese können in einem automatisierten /Bot-Skript oder von den Moderatoren selbst geschlossen werden. - -- Aktivität ist definiert als: Kommentare, die eine Aktualisierung des PR anfordern und Triages wie `Status: Update benötigt` Label etc. - -- Wenn die OP um zusätzliche Hilfe oder sogar Zeit bittet, kann die obige Seite entspannt und nach einer Antwort erneut besucht werden. Auf jeden Fall sollten die Mods ihr bestes Urteil dazu verwenden, den Status der ausstehenden PR-Partei zu lösen. - -### Andere Richtlinien für Moderatoren auf GitHub - -Obwohl Sie Schreibzugriff auf FreeCodeCamps Repository haben werden, **sollten Sie niemals Code direkt in FreeCodeCamp Repositories** drücken. Der gesamte Code sollte die codebase von freeCodeCamp in Form eines Pull-Requests aus einer Fork des Projektarchivs eingeben. - -Außerdem sollten Sie niemals Ihre eigenen PRs akzeptieren. Sie müssen QA'd von einem anderen Moderator sein, genau wie bei jedem anderen PR auch. - -Wenn du bemerkst, dass jemand den [-Verhaltenskodex](https://code-of-conduct.freecodecamp.org) bei GitHub gebrochen hat oder Pull Requests mit böswilligen Inhalten oder Code öffnen, E-Mail dev@freecodecamp. - -# Forum moderieren - -Als Moderator helfst du unsere Community zu einem angenehmen Ort für alle zu lernen und Hilfe zu bekommen. Sie behandeln markierte Beiträge und behandeln Spam, Offtopic und andere unpassende Unterhaltungen. - -Beachten Sie, dass, sobald du ein Moderator im Forum bist, du den blauen Moderator Hinweis über die Mitglieder des Forums sehen wirst wie "Das ist das erste Mal, dass [person] gepostet hat - wir begrüßen sie in der Community! oder "[person] hat nicht in langer Zeit gepostet - lass uns sie willkommen heißen." - -![Eine blaue Textnachricht mit "dies ist das erste Mal [person] gepostet - wir begrüßen sie in der Community!](https://i.imgur.com/mPmVgzK.png) - -Dies sind Gelegenheiten für Sie, sie willkommen zu heißen und ihnen ein besonderes Gefühl zu geben. Du weißt nie, welche Person am Rande beteiligt ist, wird unser nächster Superhelfer, der vielen anderen Menschen bei ihrer Kodierungsreise hilft. Selbst die kleinste Güte kann eine Kaskade guter Taten auslösen. - -### Lösche Forenbeiträge - -Forumsmoderatoren haben die Möglichkeit, Benutzerbeiträge zu löschen. Sie sollten dies nur für die folgenden Instanzen tun: - -1. Jemand hat ein pornografisches oder grafisch gewalttätiges Bild veröffentlicht. -2. Jemand hat einen Link oder einen Code veröffentlicht, der schädlich ist und könnte anderen Campern, die darauf klicken, Schaden zufügen. -3. Jemand hat einen Thread mit vielen Spam-Nachrichten überflutet. - -### Umgang mit Spam - -Für den ersten Spam Beitrag eines Benutzers, senden Sie ihm eine Nachricht, die das Problem erklärt, und entfernen Sie den Link oder post wie angemessen. Hinterlassen Sie einen Hinweis auf das Profil des Benutzers, in dem Sie die von Ihnen ergriffene Aktion erklären. Wenn das Problem weiterhin besteht, dann folgen Sie dem obigen Prozess. Den Benutzer leise daran hindern, Beiträge zu veröffentlichen (Benutzer-Admin-Panel), dann eine Warnung mit dem Code of Conduct senden. Aktivieren Sie das Kästchen in der privaten Nachricht, um anzugeben, dass Ihre Nachricht eine "formale Warnung" ist. - -Sie können Fragen stellen und Vorfälle im [Forum Bereich](https://forum.freecodecamp.com/c/staff) melden. - -### Umgang mit Themen außerhalb des Themas - -Beiträge oder Themen, die an der falschen Stelle zu sein scheinen, können neu kategorisiert oder umbenannt werden, was angemessen wäre. - -Unter außergewöhnlichen Umständen kann es sinnvoll sein, dass ein Moderator eine Diskussion in mehrere Threads überträgt. - -Nochmals, wenn du irgendwelche Probleme oder Fragen hast, mache einen Beitrag mit deinen Aktionen in der Personal-Kategorie, und markiere einen anderen Moderator, wenn du möchtest, dass er deine moderierenden Aktionen überprüft. - -### Minderwertige Benutzer - -Unsere Nutzungsbedingungen verlangen, dass FreeCodeCamp-Nutzer mindestens 13 Jahre alt sind. Falls ein Benutzer erkennt, dass er unter 13 Jahre alt ist Senden Sie ihnen die folgende Nachricht und löschen Sie ihr Forum-Konto (wenn die Löschung nicht verfügbar ist, ist die Sperrung des Kontos ausreichend). Senden Sie dann eine E-Mail an [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) oder [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org), um auch den kostenlosen CodeCamp-Account des Benutzers zu löschen. - -```markdown -SUBJEKT: Benutzer unter 13 dürfen das Forum nicht pro Nutzungsbedingungen - -nutzen. Es ist uns aufgefallen, dass Sie jünger als 13 Jahre sind. Nach den [FreeCodeCamp Nutzungsbedingungen](https://www.freecodecamp.org/news/terms-of-service) musst du mindestens 13 Jahre alt sein, um die Seite oder das Forum zu nutzen. Wir werden sowohl deinen FreeCodeCamp-Account als auch deinen Forum-Account löschen. Diese Einschränkung hält uns in Übereinstimmung mit den Gesetzen der Vereinigten Staaten. - -Bitte melde dich erneut an, sobald du mindestens 13 Jahre alt bist. - -Vielen Dank für Ihr Verständnis. -``` - -# Facebook moderieren - -If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. - -Manchmal werden Leute Dinge posten, die sie für lustig halten. Sie wissen nicht, dass das, was sie gesagt haben oder was sie gemeinsam haben, als beleidigend interpretiert werden kann. In diesen Fällen sollte ihr Beitrag gelöscht werden, aber die Person, die ihn gepostet hat, muss nicht unbedingt verboten werden. Durch die Streichung ihres Beitrags werden sie hoffentlich verstehen, dass das, was sie gepostet haben, unangemessen war. - -Aber wenn es eine ungeheuerliche Beleidigung ist, die nicht vernünftigerweise einem kulturellen Unterschied oder einem Missverständnis der englischen Sprache zugeschrieben werden kann. dann sollten Sie unbedingt erwägen, das Mitglied aus der Facebook-Gruppe zu blockieren. - -# Moderiere Discord - -Hier ist, wie Moderatoren mit Verstößen gegen unseren [Code of Conduct](https://code-of-conduct.freecodecamp.org/) auf Discord umgehen: - -1. **Stellen Sie sicher, dass es den Verhaltenskodex verletzen sollte.** Nicht alle Verstöße gegen den Kodex waren als solcher beabsichtigt. Ein neuer Camper könnte eine große Menge Code für Hilfe veröffentlichen, ohne zu wissen, dass dies als Spam angesehen werden kann. In diesen Fällen können Sie sie einfach bitten, ihren Code mit Diensten wie Codepen oder Pastebin einzufügen. - -2. **Wenn der Camper eindeutig gegen den Verhaltenskodex verstößt, wird der Moderator wie folgt vorgehen:** - -- Den angreifenden Camper unterbrechen, aber nicht warnen oder bedrohen. Stattdessen gibt ihnen stillschweigend die unterbrochene Rolle auf Discord und sende ihnen dann die folgende Botschaft: - -``` -Dies ist eine Standard-Nachricht, die dich darüber informiert, dass ich dich vorübergehend von der Diskussion auf dem FreeCodeCamp Discord Server unterbrechen musste. - -Ich bin Moderator, der im Namen unserer Open Source Community agiert. Ich kann erwägen, deine Suspendierung zu entfernen, aber ich muss zuerst die folgenden 3 Schritte machen: - -1. Lesen Sie unseren Verhaltenskodex: https://code-of-conduct.freecodecamp.org/ -2. Melde mich zurück und bestätige, dass du sie gelesen hast. 3. Erklären Sie mir, warum ich Sie Ihrer Meinung nach ausgesetzt habe und warum ich Ihre Aussetzung aufheben sollte. -``` - -- Melde eine kurze Zusammenfassung der Veranstaltung und wie sie im #admin Channel darauf reagiert haben. Hier ist ein Beispiel dafür, wie eine solche Zusammenfassung aussehen könnte: - -``` -Aussetzt: _@username_ -Grund(e): _Spamming, Trolling_ -Evidenz: _One oder mehrere Links zu der angreifenden Nachricht(n)_ -CoC: _Sent_ -``` - -- Ein Bericht zum Entfernen einer Suspendierung sollte wie folgt aussehen: - -``` -Ich habe die Aussetzung von ` @username ` entfernt. Ich habe ihnen den Verhaltenskodex zugeschickt. Sie erkannten erst heute, dass sie ausgesetzt und entschuldigt wurden für das, was sie taten. -``` - -- Basierend auf der Antwort der Täter wird der Moderator entscheiden, ob er die Suspendierung aus dem Wohnmobile entfernen soll. Wenn sie respektvoll und entschuldigt erscheinen, kann der Moderator die Suspendierung entfernen. Aus politischer Sicht werden die Moderatoren während dieses Prozesses höflich sein, unabhängig davon, wie schlecht sich der beleidigende Camper verhalten hat. Wenn sie nicht respektvoll oder nicht willens sind, den CoC zu akzeptieren, sollte die Suspendierung mit einem Verbot des Discord Servers befolgt werden. Verwenden Sie die gleiche Zusammenfassung wie oben, aber ersetzen Sie "Suspended:" durch "Gebannt:". - -3. **Wie man sperren und/oder entbannen kann** - -- Um jemanden zu bannen klicken Sie mit der rechten Maustaste auf sein Benutzername/Profilbild und wählen Sie "Ban ". Ihnen wird die Möglichkeit gegeben, ihre vorherigen Nachrichten zu löschen - wählen Sie "Keine löschen", da die Botschaften sollten als historischer Datensatz vorhanden bleiben. -- Wenn Sie sich entschließen, jemanden zu verbieten, bedeutet dies, dass sie nicht bereit sind, sich an unseren Verhaltenskodex zu halten. Deshalb sollte es selten vorkommen, einen Camper zu entbannen. Wenn es jedoch notwendig ist, können Sie dies tun, indem Sie auf den Servernamen klicken, indem Sie "Server-Einstellungen" wählen Wählen Sie "Bannen", wählen Sie den Benutzer aus, den Sie entfernen möchten, und klicken Sie auf "Bann widerrufen". - -Discord Bans sind global - Du kannst einen Benutzer nicht von einem bestimmten Kanal bannen, nur vom gesamten Server. - -4. **Lösche Nachrichten** Moderatoren können Nachrichten auf Discord löschen. Sie sollten diese Fähigkeit nur in vier sehr spezifischen Situationen wahrnehmen: - -- Jemand hat ein pornografisches oder grafisch gewalttätiges Bild veröffentlicht. -- Jemand hat einen Link oder einen Code veröffentlicht, der schädlich ist und könnte anderen Campern, die darauf klicken, Schaden zufügen. -- Jemand hat den Chat mit so vielen Spam-Nachrichten überflutet (meist mit Bots) dass Chat völlig unbrauchbar wird. -- Jemand hat Werbung und / oder eine sich selbst fördernde Nachricht / Bild (soziale Medien). - -In allen anderen Situationen - auch in Situationen, in denen der Verhaltenskodex verletzt wird - sollten Moderatoren die Nachricht nicht löschen, da dies ein wichtiger historischer Datensatz ist. Wenn Sie eine Nachricht löschen, stellen Sie sicher, dass Sie zuerst einen Screenshot davon machen! Der Screenshot kann im #mod-log Kanal eingeloggt werden aber für das #activity-log reicht es zu sagen, dass der Beweis "aufgrund sensibler Inhalte entfernt wurde". Notiz: Wenn die Nachricht Material enthält, von dem ein Screenshot nicht erlaubt wäre Kopieren Sie stattdessen den Nachrichtenlink - stellen Sie diesen Link an @raisedadead zur Verfügung, um ihn an das Discord's Trust and Safety Team weiterzuleiten. - -5. **Benutze nicht @everyone oder @here** Nutze nicht @everyone oder @here unter keinen Umständen! Jede Person in diesem Chatraum erhält eine Benachrichtigung. In einigen Fällen Zehntausende von Menschen. Wenn Sie möchten, dass die Leute eine Ankündigung sehen, können Sie sie an den Kanal anhängen, damit jeder sie lesen kann. - -6. **Droht nicht,**zu bannen oder zu unterbrechen. Wenn ein Camper den Verhaltenskodex verletzt, droht nicht, sie zu verbieten oder auszusetzen, und warnt sie nie in der Öffentlichkeit. Sprechen Sie stattdessen mit ihnen privat oder senden Sie ihnen eine DM und eine Suspendierung (gemäß dem obigen Protokoll). Niemand sonst in diesem Kanal muss wissen, dass Sie gebannt / ausgesetzt die Person - Camper können die Zusammenfassung im #activity-log Kanal sehen, wenn sie auf dem Laufenden bleiben wollen. Wenn eine Verletzung eindeutig unbeabsichtigt war und keine Aussetzung oder private Unterhaltung rechtfertigt, machen Sie den beleidigenden Camper auf seine / ihre Handlungen aufmerksam zu machen, ohne dass es als Warnung. Zum Beispiel: - -- Der Camper postet eine Wand Code, um Hilfe anzufordern - - Moderator: @username Bitte benutzen Sie Codepen oder Pastebin um große Mengen Code zu veröffentlichen. - -- Oder wenn Sie wirklich erklären müssen, warum: - - Moderator: @username Bitte verwenden Sie Codepen oder Pastebin beim Posten großer Mengen an Code weil es den Chat für alle stört und könnte als Spamming gemäß unserem Verhaltenskodex angesehen werden. - -- Für leichte und unbeabsichtigte Verstöße gegen den Verhaltenskodex - - Moderator: Dies ist eine freundliche Mahnung für alle, dem Verhaltenskodex zu folgen: https://code-of-conduct.freecodecamp.org/ - -7. **Schlagen Sie sich nicht vor, ein Moderator zu sein** Sehen Sie sich nicht als oberhalb der Community an. Du bist die Gemeinschaft. Und die Community hat dir vertraut, etwas Seltenes zu schützen, das wir alle teilen - ein _, der_ Platz für neue Entwickler willkommen heißt. Wenn du ein Moderator bist, können sich die Leute um dich herum unwohl fühlen auf die gleiche Weise, wie sich die Leute um einen Polizeibeamten unwohl fühlen, auch wenn sie nichts falsch machen. Das ist nur die menschliche Natur. - -8. **Widerspricht nicht anderen Moderatoren** Wenn du mit der Aktion eines Moderators nicht einverstanden bist mit ihnen privat sprechen oder sie im #mod-chat Channel ansprechen. Überschreibe niemals ein Verbot und widerspreche niemals den anderen Moderator(en) öffentlich. Stattdessen haben wir im Mod-Chat eine besonnene Diskussion und überzeugen den Moderator, dass er selbst sein Verbot rückgängig machen oder seinen Standpunkt ändern sollte. Denken Sie daran: Wir sind alle im selben Team. Wir wollen die Rolle der Moderatoren würdigen und eine einheitliche Front präsentieren. - -9. **Sprechen Sie mit anderen Moderatoren** Wir haben nur einen Raum für Moderatoren. Verwende es! Wenn Sie sich nicht wohl fühlen, wie Sie mit einer bestimmten Situation umgehen, fragen Sie andere Moderatoren nach Hilfe. Wenn Sie der Meinung sind, dass etwas diskutiert werden sollte, tun Sie es. Sie sind Teil des Teams und wir schätzen den Beitrag jedes Teammitglieds! Auch wenn Sie mit diesen Leitlinien oder dem Verhaltenskodex völlig nicht einverstanden sind! - -10. **Vorübergehend inaktiv** Wenn du aufgrund von Ferien nicht länger als Moderator aktiv bist, Krankheit oder irgendeinen anderen Grund, vergewissern Sie sich, dass die anderen im #mod-chat Channel informiert werden. So wissen wir, ob wir auf Sie zählen können, regelmäßig auf dem Server aktiv zu sein oder nicht. - -# Wie man Moderator wird - -Wenn du Menschen in der Community im Laufe der Zeit konsequent hilfst, wird unser Moderatoren-Team letzten Endes darauf achten, und einer von ihnen wird Sie als möglicher Moderator für [unsere Mitarbeiter erwähnen](https://forum.freecodecamp.org/g/Team). Es gibt keine Verknüpfungen, um Moderator zu werden. - -Wenn du freigeschaltet bist, werden wir dich zu unseren Moderatoren-Teams im [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [Forum](https://forum.freecodecamp.org/g/moderators), etc. hinzufügen. - -> [!HINWEIS] > **Für GitHub:** Nachdem Sie als Moderator akzeptiert wurden, erhalten Sie eine Github Repository-Einladung. Du musst in Richtung [FreeCodeCamp GitHub Organisation Einladung](https://github.com/orgs/freeCodeCamp/invitation) gehen, um die Einladung annehmen zu können. Dies ist erforderlich, damit wir Ihnen Schreibzugriff auf einige unserer Repositories geben können. - -# Wie wir inaktive Moderatoren zurückziehen - -Bitte beachten Sie, dass wir oft Mods entfernen werden, die wir für inaktiv halten. Wenn wir dies tun, senden wir folgende Nachricht: - -> Dies ist eine Standardnachricht, die dich informiert, da du in letzter Zeit kein aktiver Moderator zu sein scheinst, entfernen wir dich aus unserem Moderator-Team. Wir schätzen Ihre Hilfe in der Vergangenheit sehr. - -> Wenn du denkst, dass wir dies irrtümlich gemacht haben, oder wenn du bereit bist zurückzukommen und mehr beizutragen antworten Sie einfach auf diese Nachricht, die mich wissen lassen. - -# Wie unser Mitwirkender Raum funktioniert - -Jeder ist willkommen im [Mitwirkenden Raum auf unserer Discord](https://discord.gg/KVUmVXA). Es ist der vorgesehene Chatraum für Moderatoren und andere Camper, die auf jede beliebige Art und Weise zu unserer Gemeinschaft beitragen einschließlich durch Lerngruppen. - -Wir gehen davon aus, dass die Mitwirkenden in diesem Raum alles lesen werden, was sie direkt mit einem `@username` erwähnt. Alles andere ist optional. Aber fühlen Sie sich frei, alles zu lesen, was jemand dort postet und zu interagieren. - -# Umgang mit Rechtsanwälten - -Sie können von Organisationen angesprochen werden, die mit FreeCodeCamp in irgendeiner Weise zusammenarbeiten oder mitmarkieren möchten. Sobald Sie erkannt haben, dass dies das ist, was sie wollen, hören Sie bitte auf, mit ihnen zu reden und sagen Sie ihnen, quincy@freecodecamp.org per E-Mail zu senden. Er bekommt immer wieder Vorschläge wie diese und ist am besten in der Lage zu beurteilen, ob eine solche Beziehung für unsere Gemeinschaft wert sein wird (und das ist selten der Fall). - -# Behandlung von (mentalen) Gesundheitsanfragen - -Sie können Situationen begegnen, in denen Anwender medizinische Beratung suchen oder sich mit Fragen der psychischen Gesundheit befassen und auf der Suche nach Unterstützung sind. Politisch sollten Sie es vermeiden, über diese Fragen privat zu sprechen. Sollte sich die Situation irgendwann einmal in fCC wiederspiegeln, möchten wir das Gespräch(e) auf die Aufnahme setzen. Machen Sie deutlich, dass wir keine medizinischen Fachleute sind und dass Sie den Anwender ermutigen, professionelle Hilfe zu finden. So schwierig es manchmal auch sein mag, vermeidet es, andere Tipps oder Ratschläge zu geben, als den Benutzer in Richtung professioneller Hilfe zu zeigen! - -Wenn dies bei Discord der Fall ist: Suspend den Benutzer. Das ist nicht, um sie zu bestrafen! Die Einstellung eines Benutzers wird einen privaten Kanal erstellen, der nur für den Benutzer und das Team zugänglich ist. Dies wird sowohl dem Benutzer als auch fCC auf verschiedene Weise zugute kommen: - -- Dem Benutzer wird ein gewisses Maß an Privatsphäre garantiert -- Öffentlicher Chat wird nicht mehr unterbrochen -- Andere Teammitglieder können einspringen, wenn Sie selbst unbequem mit der Situation umgehen - -> [!HINWEIS] Ein Benutzer wird automatisch vom Aussetzen unseres Verhaltenskodexes benachrichtigt. Vergewissern Sie sich, dass Sie den Benutzer darauf hingewiesen haben, dass Sie ihn gesperrt haben, um ihm eine gewisse Privatsphäre zu geben und dass er nicht bestraft wird. Das ist sehr wichtig! Wir möchten es unbedingt vermeiden, den Benutzern die Idee zu geben, dass sie dafür bestraft werden, Hilfe zu erhalten! - -Wenn du glaubst, dass der Benutzer der Gemeinschaft wieder beitreten kann, klicke mit der rechten Maustaste auf den privaten Kanal und kopiere die ID. Folgende Nachricht in #mod-log einfügen: - -> Referenzmedizinische Beratung: - -Danach können Sie die Suspension wie üblich vom Benutzer entfernen. - -Hilfreiche URLs: - -http://www.suicide.org/international-suicide-hotlines.html - -# Eine Notiz zur Redefreiheit - -Manchmal werden die Menschen etwas beleidigendes oder hetzerisches verteidigen, das sie als ,,freie Meinungsäußerung" bezeichnet haben. - -Dieser XKCD Comic fasst die meisten Communities in Sachen Redefreiheit perfekt zusammen. Wenn also jemand etwas verteidigt, was sie als "freie Rede" sagen, dann zögern Sie nicht, es an sie zu senden. - -
                - -Vielen Dank für das Lesen und vielen Dank für die Unterstützung der Entwicklergemeinschaft! diff --git a/docs/i18n/German/flight-manuals/using-reply-templates.md b/docs/i18n/German/flight-manuals/using-reply-templates.md deleted file mode 100644 index e4d61f17fa..0000000000 --- a/docs/i18n/German/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,125 +0,0 @@ -# Antwortvorlagen verwenden - -Dies sind einige der Standard-Antwortvorlagen, die Sie bei der Überprüfung von Pull-Requests und Trialing-Problemen verwenden können. - -> Du kannst dich mit GitHubs eingebautem [**Gespeicherten Antworten**](https://github.com/settings/replies/) Funktion eigen machen oder die unten stehenden verwenden. - -### Vielen Dank - -```markdown -Vielen Dank für Ihren Beitrag zu dieser Seite! 👍 -Wir freuen uns über diese Änderungen und freuen uns auf zukünftige Beiträge. 🎉 -``` - -### Vielen Dank und Glückwunsch - -> Danke und Ermutigung für die erstmaligen Beiträge. - -```markdown -Hallo @username. Herzlichen Glückwunsch zu deiner ersten Pull-Request (PR)! 🎉 - -Vielen Dank für Ihren Beitrag zur Seite! 👍 -Wir freuen uns über diese Änderungen und freuen uns auf zukünftige Beiträge. 📝 -``` - -### Build-Fehler - -```markdown -Hey @username - -Wir würden gerne Ihre Änderungen zusammenführen, aber es sieht so aus, als ob es einen Fehler mit dem Travis CI Build gibt. ⚠️ - -Sobald Sie diese Probleme gelöst haben, können wir Ihre PR überprüfen und zusammenführen. 😊 - ---- > Fühlen Sie sich frei, die [Style-Anleitung zum Schreiben von Artikeln zu referenzieren](https://github. om/freeCodeCamp/freeCodeCamp#article-title) für dieses Repository auf die korrekte Formatierung eines Artikels, so dass deine Travis CI Build passt. ✅ -> -> Außerdem ist es eine gute Übung auf GitHub um eine kurze Beschreibung Ihrer Änderungen beim Erstellen eines PR zu schreiben. 📝 -``` - -### Fork synchronisieren - -> Wenn PR nicht auf dem aktuellen Stand mit dem `Master` Zweig ist. - -``````markdown -Hey @username - -Wir würden gerne Ihre Änderungen zusammenführen, aber es sieht so aus, als ob es einen Fehler mit dem Travis CI Build gibt. ⚠️ - -```bash -Fehler: ENOTDIR: kein Verzeichnis, öffnen Sie 'src/pages/java/data-abstraction/index.md' -`````` - -Dieser spezielle Fehler wurde nicht durch Ihre Datei verursacht, sondern war ein alter Fehler, der durch das Zusammenführen von fehlerhaftem Code in den `master` Zweig verursacht wurde. Seitdem ist es gelöst worden. - -Um das Build zu bestehen, müssen Sie die neuesten Änderungen aus dem `Master` Branch des `FreeCodeCamp/freeCodeCamp` Repo synchronisieren. - -Mit der Befehlszeile können Sie dies in drei einfachen Schritten tun: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git lock upstream - -git pull upstream master -``` - -Wenn Sie eine GUI verwenden, können Sie einfach `eine neue Fernbedienung hinzufügen...` und verwenden Sie den Link `git://github.com/freeCodeCamp/freeCodeCamp.git` von oben. - -Sobald du deinen Fork synchronisiert und den Build abgeschlossen hast, werden wir in der Lage sein, deine PR zu überprüfen und sie zusammenzuführen. 😊 - ---- - -> Fühlen Sie sich frei den [Synchronisieren eines Fork-](https://help.github.com/articles/syncing-a-fork/) Artikels auf GitHub zu referenzieren, um mehr Informationen darüber zu erhalten, wie Sie Ihre Fork mit dem Upstream Repository aktuell halten können. 🔄 -> -> Außerdem ist es eine gute Praxis auf GitHub um eine kurze Beschreibung Ihrer Änderungen beim Erstellen eines PR zu schreiben. 📝 -`````` - -### Verschmelzungskonflikte - -> Wenn PR Konflikte hat, die gelöst werden müssen.1 - -```markdown -Hey @username - -Wir würden gerne in der Lage sein, Ihre Änderungen zusammenzuführen, aber es sieht so aus, als hätten Sie einige Merge-Konflikte. - -```markdown -Hey @username - -Wir würden gerne in der Lage sein, Ihre Änderungen zusammenzuführen, aber es sieht so aus, als hätten Sie einige Merge-Konflikte. ⚠️ - -Sobald Sie diese Konflikte gelöst haben, können wir Ihre PR überprüfen und zusammenführen. 😊 - ---- > Wenn Sie mit dem Merge Konfliktprozess nicht vertraut sind Schauen Sie sich GitHubs Leitfaden auf ["Merge Contrat"](https://help an. ithub.com/articles/resolving-a-merge-conflict-on-github/). :magnifying_glass_tilted_left : -> -> Außerdem ist es eine gute Übung auf GitHub um eine kurze Beschreibung Ihrer Änderungen beim Erstellen eines PR zu schreiben. 📝 -`````` -1 Wenn ein Erstmaliger einen Zusammenführungskonflikt hat, werden die Betreuer den Konflikt für sie lösen. - -### Duplicate - -> Wenn PR wiederholt oder ein Duplikat. - -```markdown -Hey @username - -Es scheint, dass ähnliche Änderungen bereits früher für diesen Artikel akzeptiert wurden, entschuldigen Sie das. 😓 - -Wenn du das Gefühl hast, mehr hinzuzufügen, kannst du einen neuen PR öffnen. - -Nochmals vielen Dank! 😊 - ---- > Wenn Sie Fragen haben, wenden Sie sich bitte an [Gitter](https://gitter.im/FreeCodeCamp/Contributors) oder kommentieren Sie unten. 💬 -``` - -### Schließe ungültige Pull-Requests - -> Wenn PR ungültig ist. - -```markdown -Hey @username - -Sie haben keine Inhalte hinzugefügt. Wir schließen diese PR und markieren sie als `invalid`. 😓 - -Feel free to open another PR! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/German/flight-manuals/working-on-virtual-machines.md b/docs/i18n/German/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 789e2b4ba1..0000000000 --- a/docs/i18n/German/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,482 +0,0 @@ -# Flight Manual for working on Virtual Machines - -Als Mitglied des Teams oder des dev-teams Ihnen wurde möglicherweise Zugang zu unseren -Cloud-Dienstleistern wie Azure, Digital Ocean, etc. gewährt. - -Hier sind einige praktische Befehle, die Sie verwenden können, um auf den virtuellen Maschinen (VM), zum Beispiel die Durchführung von Wartungsaktualisierungen oder die Durchführung allgemeiner Hausaufbewahrung. - -# Get a list of the VMs - -> [!HINWEIS] Während Sie möglicherweise bereits SSH-Zugriff auf die VMs haben, dass allein Ihnen keine VMs anzeigen lässt, es sei denn, Ihnen wurde auch Zugriff auf die Cloud-Portale gewährt. - -## Azure - -Azure CLI `az`installieren: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Installiere Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentifizierung und Kontextwechsel: https://github.com/digitalocean/doctl#Authentifizierung mit-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. Dies wird sicherstellen, dass die virtuelle Maschine mit den neuesten Sicherheitskorrekturen gepatcht wird. - -> [!WARNING] Before you run these commands: -> -> - Vergewissern Sie sich, dass die VM vollständig bereitgestellt wurde und dass nach der Installation keine Schritte ausgeführt werden. -> - Wenn Sie Pakete auf einer VM aktualisieren, die bereits eine Anwendung bedient, stellen Sie sicher, dass die App angehalten / gespeichert wurde. Paket-Aktualisierungen verursachen Netzwerk-Bandbreite, Speicher und/oder CPU-Auslastungsspikes, die zu Ausfällen bei laufenden Anwendungen führen. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -Wir führen Lastbalancierungen (Azure Load Balancer) Instanzen für unsere Web-Server aus. Auf diesen Servern läuft NGINX, die den gesamten Datenverkehr auf FreeCodeCamp.org von verschiedenen Anwendungen rückgängig machen, die auf eigenen Infrastrukturen laufen. - -Die NGINX-Konfiguration ist auf [dieses Repository](https://github.com/freeCodeCamp/nginx-config) verfügbar. - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH und nehmen Änderungen vor, die für die jeweilige Instanz(en) notwendig sind. - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Holen Sie sich die Cloudflare Ursprungszertifikate vom sicheren Speicher und installieren Sie an benötigten Standorten. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. Möglicherweise müssen Sie auch die VMs hinzufügen, um den Bilanz-Backend Pool zu laden, falls nötig. - -## Aktualisiere Instanzen (Wartung) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

                https://amplify.nginx.com

                -## Updating Instances (Maintenance) - -Config Änderungen an unseren NGINX-Instanzen werden auf GitHub gepflegt. Diese sollten in jeder Instanz wie folgt eingesetzt werden: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Testen und laden Sie die Konfiguration [mit Signalen](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx) neu. - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Aktualisiere Instanzen (Wartung) - -```console -## Protokollierung und Überwachung - -```console -pm2 Logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. Es kann ein rollendes Update oder ein manuelles Update sein. Das spätere ist notwendig, wenn Abhängigkeiten geändert oder Umgebungsvariablen hinzugefügt werden. - -> [!DANGER] Die automatisierten Pipelines bearbeiten keine Abhängigkeitsaktualisierungen in der Minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Starte Platzhalter-Instanzen für den Web-Client, diese werden mit Artefakten aus der Azure Pipline aktualisiert. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary. h - pm2 löschen Kunden primäre - pm2 Start . client-start-primary.sh --name client-primary - echo "serve -c . /../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary. h - pm2 löschen Kunde Sekundär - pm2 Start ./client-start-secondary.sh --name client-secondary -``` - -## Aktualisiere Instanzen (Wartung) - -```console -## Protokollierung und Überwachung - -```console -pm2 Logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. Es kann ein rollendes Update oder ein manuelles Update sein. Das spätere ist notwendig, wenn Abhängigkeiten geändert oder Umgebungsvariablen hinzugefügt werden. - -> [!DANGER] Die automatisierten Pipelines bearbeiten keine Abhängigkeitsaktualisierungen in der Minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/German/how-to-catch-outgoing-emails-locally.md b/docs/i18n/German/how-to-catch-outgoing-emails-locally.md index 66df270143..397ea3382a 100644 --- a/docs/i18n/German/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/German/how-to-catch-outgoing-emails-locally.md @@ -1,67 +1,67 @@ -> **Hinweis:** Dies ist ein **optionaler** Schritt und wird nur benötigt, wenn mit E-Mail-Workflows gearbeitet wird +> **Note:** This is an **optional** step and is required only when working with email workflows -## Einführung +## Introduction -Einige E-Mail-Workflows, wie das Aktualisieren der E-Mail eines Benutzers, erfordern den Backend-Api-Server, um ausgehende E-Mails zu senden. Eine Alternative zur Verwendung eines E-Mail-Diensteanbieters für das Senden von tatsächlichen E-Mail-Nachrichten, Mailhog ist ein Entwicklerwerkzeug für E-Mail-Tests, das die von deiner FreeCodeCamp-Instanz gesendeten E-Mail-Nachrichten erfasst. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## MailHog installieren +## Installing MailHog -MailHog kann unter macOS, Windows und Linux installiert werden. +MailHog can be installed on macOS, Windows and Linux. -- [Einführung](#introduction) -- [MailHog installieren](#installing-mailhog) - - [MailHog auf macOS installieren](#installing-mailhog-on-macos) - - [MailHog unter Windows installieren](#installing-mailhog-on-windows) - - [MailHog unter Linux installieren](#installing-mailhog-on-linux) -- [MailHog verwenden](#using-mailhog) -- [Nützliche Links](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### MailHog auf macOS installieren +### Installing MailHog on macOS -Installiere MailHog auf macOS mit [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash -brauen mailhog -brauen Dienste starten mailhog +brew install mailhog +brew services start mailhog ``` -Die obigen Befehle starten einen Mailhog-Dienst im Hintergrund. +The above commands will start a mailhog service in the background. -Wenn die Installation abgeschlossen ist, können Sie [mit MailHog](#using-mailhog) starten. +When the installation completes, you can start [using MailHog](#using-mailhog). -### MailHog unter Windows installieren +### Installing MailHog on Windows -Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Suchen und klicken Sie auf den Link für Ihre Windows-Version (32 oder 64 bit) und eine .exe Datei wird auf Ihren Computer heruntergeladen. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Wenn der Download abgeschlossen ist, klicken Sie zum Öffnen der Datei. Es kann eine Windows-Firewall-Benachrichtigung erscheinen, die Zugriff auf MailHog anfordert. Eine Standard-Windows-Kommandozeilen-Eingabeaufforderung öffnet sich, wo MailHog läuft, sobald der Zugriff auf die Firewall gewährt wird. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Schließen Sie MailHog, indem Sie das Fenster zur Eingabeaufforderung schließen. Um MailHog erneut zu starten, klicken Sie auf die MailHog ausführbare Datei (. xe) Datei, die ursprünglich heruntergeladen wurde - es ist nicht notwendig, eine neue MailHog Installationsdatei herunterzuladen. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Beginne [mit MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### MailHog unter Linux installieren +### Installing MailHog on Linux -Installieren Sie zuerst [Go](https://golang.org). +First, install [Go](https://golang.org). -Führen Sie die folgenden Befehle aus, um GO auf Debian-basierten Systemen wie Ubuntu und Linux Mint zu installieren. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Führen Sie die folgenden Befehle aus, um GO auf RPM-basierten Systemen wie CentOS, Fedora, Red Hat Linux usw. zu installieren. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Alternativ können Sie die folgenden Befehle ausführen, um GO zu installieren. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Legen Sie nun den Pfad für Go mit den folgenden Befehlen fest. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile @@ -69,7 +69,7 @@ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile source ~/.profile ``` -Geben Sie schließlich die folgenden Befehle ein, um MailHog zu installieren und auszuführen. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Beginne [mit MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## MailHog verwenden +## Using MailHog -Öffnen Sie einen neuen Browser-Tab oder ein Fenster und navigieren Sie zu [http://localhost:8025](http://localhost:8025) um Ihren MailHog Posteingang zu öffnen, sobald die MailHog Installation abgeschlossen ist und MailHog läuft. Der Posteingang wird ähnlich dem unten abgebildeten Bildschirm angezeigt. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. ![MailHog Screenshot 1](images/mailhog/1.jpg) -E-Mails deiner FreeCodeCamp-Installation werden wie unten angezeigt +Emails sent by your freeCodeCamp installation will appear as below ![MailHog Screenshot 2](images/mailhog/2.jpg) -Zwei Registerkarten, mit denen Sie entweder reinen Text oder Quelltext anzeigen können, stehen zur Verfügung, wenn Sie eine bestimmte E-Mail öffnen. Stellen Sie sicher, dass der Reiter Klartext wie unten ausgewählt ist. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. ![MailHog Screenshot 3](images/mailhog/3.jpg) -Alle Links in der E-Mail sollten anklicken und auf ihre URL auflösen. +All links in the email should be clickable and resolve to their URL. -## Nützliche Links +## Useful Links -- Weitere Informationen zu MailHog finden Sie im [MailHog](https://github.com/mailhog/MailHog) Projektarchiv. Zusätzliche Informationen sind auch zu benutzerdefinierten MailHog Konfigurationen verfügbar. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/German/how-to-help-with-video-challenges.md b/docs/i18n/German/how-to-help-with-video-challenges.md index 3ffdb784ff..2631a6cf4a 100644 --- a/docs/i18n/German/how-to-help-with-video-challenges.md +++ b/docs/i18n/German/how-to-help-with-video-challenges.md @@ -1,17 +1,17 @@ -# Wie man bei Videoherausforderungen hilft +# How to help with video challenges -Video-Herausforderungen sind eine neue Art von Herausforderung im FreeCodeCamp Lehrplan. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -Eine Videoherausforderung ist ein kleiner Abschnitt eines Videokurses zu einem bestimmten Thema. Eine Video-Challenge-Seite fügt ein YouTube-Video ein. Jede Challenge-Seite hat eine einzige Multiple-Choice-Frage im Zusammenhang mit dem Video. Ein Benutzer muss die Frage richtig beantworten, bevor er die nächste Videoherausforderung im Kurs fortsetzt. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -Die Seiten zur Videoherausforderung werden von Mitgliedern des FreeCodeCamp-Teams erstellt. YouTube-Videos werden auch von Mitgliedern des FreeCodeCamp-Teams hochgeladen. Viele der Video-Herausforderungen haben noch keine Fragen damit verbunden. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Sie können helfen, indem Sie Fragen zu verschiedenen Optionen im Zusammenhang mit Video-Abschnitten erstellen und die Fragen zu den Markdown-Dateien für die Video-Challenge hinzufügen. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Herausforderungsvorlage +## Challenge Template -Unten ist eine Vorlage dafür, wie die Challenge-Markdown-Dateien aussehen. +Below is a template of what the challenge markdown files look like. ````md --- @@ -56,11 +56,11 @@ Wählen Sie eine Datei aus den obigen Optionen. ### Skim durch das Video, das mi Zuerst finden Sie die videoID. -### Skim durch das Video, das mit der Challenge verbunden ist, und erstellen Sie eine mehrfache Frage +### Skim through the video associated with the challenge and create a mutiple choice question -Zuerst finden Sie die videoID. +First, find the videoId. -Zum Beispiel, im folgenden Code aus dem Header einer Video-Challenge-Markdown-Datei, die videoId ist "nVAaxZ34khk". Auf GitHub sollten die Informationen in einem Tabellenformat angelegt werden. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- id: 5e9a093a74c4063ca6f7c14d Titel: Datenanalyse Beispiel A ChallgeType: 11 @@ -68,84 +68,84 @@ videoId: nVAaxZ34khk --- ``` -Als nächstes greifen Sie mit dieser VideoID auf das YouTube-Video zu. Die URL für das Video lautet: -https://www.youtube. om/watch?v=[videoId] (videoId zur URL ohne eckige Klammern hinzufügen) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -Im obigen Beispiel ist die URL https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Fügen Sie die Frage zur Markierungsdatei +### Add the question to the markdown file -hinzu. Sie können die Frage lokal oder direkt über das GitHub-Interface hinzufügen. Um die Frage lokal hinzuzufügen, musst du [FreeCodeCamp lokal einrichten](how-to-setup-freecodecamp-locally.md). Sie können auch die Datei auf GitHub finden und klicken Sie auf die Schaltfläche Bearbeiten, um die Frage direkt in Ihrem Browser hinzuzufügen. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Wenn eine Frage noch nicht zu einer bestimmten Videoherausforderung hinzugefügt wurde, es wird die folgende Standardfrage: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml question: text: | - Frage - Antworten: + Question + answers: - | - ein + one - | - zwei + two - | - drei - Lösung: 3 + three + solution: 3 ``` -Aktualisieren Sie das Wort „Frage“ mit Ihrer Frage. Aktualisieren Sie das „ein“, „zwei“ und „drei“ mit den möglichen Antworten. Achten Sie darauf, die Lösungsnummer zu aktualisieren, mit der die Antwort korrekt ist. Sie können mehr mögliche Antworten im gleichen Format hinzufügen. Die Frage und die Antworten können mit Anführungszeichen umgeben. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### Verwenden Sie Markdown um Ihre Frage zu formatieren +#### Use markdown to format your question -Der Text in der Frage wird als Markdown geparst. Der einfachste Weg, um sicherzustellen, dass die Frage korrekt formatiert ist, ist die Frage mit dem `Text zu starten: |`, wie folgt: +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -Frage: - Text: | - Frage +question: + text: | + Question ``` -Dann müssen Sie sicherstellen, dass Ihre Frage in einer neuen Zeile ist und eine Ebene mehr als `Text eingerückt hat: |`. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -Der gleiche Ansatz kann für die Antworten verwendet werden, so dass die gesamte Frage wird +The same approach can be used for the answers, so the entire question becomes ```yml -Frage: - Text: | - Frage - beantwortet: +question: + text: | + Question + answers: - | - Erste Antwort + First answer - | - Zweite + Second - | - Dritte - Lösung: 2 + Third + solution: 2 ``` -Vergewissern Sie sich, dass jede Antwort plausibel ist, aber es gibt nur eine richtige Antwort. +Make sure each answer is plausible but there is only one correct answer. -#### Verwendung von HTML +#### Use of HTML -Fragen und Antworten können bestimmte HTML-Tags wie `
                ` für eine neue Zeile enthalten. HTML-Tags sollten sparsam verwendet werden, wenn Fragen ohne sie nicht ausgedrückt werden können. +Questions and answers can contain certain HTML tags like `
                ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Fragebeispiele +### Question examples -#### Beispiele ohne HTML +#### Examples without HTML ````yml -Frage: - Text: | - Was protokolliert dieser JavaScript-Code zur Konsole? +question: + text: | + What does this JavaScript code log to the console? ```js - console.log('Hallo Welt'); + console.log('hello world'); ```` - Wähle eine Antwort! - antworten: + Select an answer! + answers: - | Hallo *Welt* - | **Hallo** Welt - | Hallo Welt Lösung: 3 @@ -159,7 +159,7 @@ Frage: Breite = 15 Höhe = 12. Drucken (Höhe/3) ```` - antworten: + answers: - | 39 - | 4 - | 4.0 @@ -186,10 +186,10 @@ Frage: Lösung: 3 ```` -Das letzte Beispiel zeigt, dass HTML verwendet werden kann, dass es aber nicht so lesbar ist wie die Version ohne es. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Für weitere Beispiele können Sie sich die Markdown Dateien für den folgenden Video-Kurs ansehen. Alle Herausforderungen haben bereits Fragen: [Python für jeden Kurs](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Pull-Request öffnen +## Open a pull request -Nach dem Erstellen einer oder mehrerer Fragen können Sie die Änderungen zu einem neuen Zweig übertragen und [öffnen Sie einen Pull-Request](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/German/how-to-open-a-pull-request.md b/docs/i18n/German/how-to-open-a-pull-request.md index dcde8b1954..90a15710da 100644 --- a/docs/i18n/German/how-to-open-a-pull-request.md +++ b/docs/i18n/German/how-to-open-a-pull-request.md @@ -1,102 +1,102 @@ -# Pull-Request (PR) öffnen +# How to open a Pull Request (PR) -Ein Pull-Request ermöglicht dir, Änderungen von deinem Fork auf GitHub in das Hauptrepository von FreeCodeCamp.org zu senden. Sobald Sie Änderungen am Code oder an den Herausforderungen der Kodierung vorgenommen haben, sollten Sie diese Richtlinien befolgen, um einen PR zu senden. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Bereite einen guten PR-Titel vor +## Prepare a good PR title -Wir empfehlen [konventionellen Titel und Nachrichten](https://www.conventionalcommits.org/) für Commits und Pull-Requests zu verwenden. Die Konvention hat folgendes Format: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([optionaler Umfang(s)]): ` +> `([optional scope(s)]): ` > -> Zum Beispiel: +> For example: > -> `fix(learn): Tests für die Do...während Schleife Challenge` +> `fix(learn): tests for the do...while loop challenge` -Beim Öffnen einer Pull-Request(PR) können Sie den Typ, den Umfang (optional) und die Beschreibung der Pull-Request(PR) festlegen. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**Typ:** +**Type:** -| Typ | Wann wählen | -|:-------- |:----------------------------------------------------------------------------------------- | -| fixieren | Geändert oder aktualisiert/verbessert Funktionalität, Tests, Verbiage einer Lektion, etc. | -| fieber | Nur wenn Sie neue Funktionalität, Tests, etc. hinzufügen. | -| chore | Änderungen, die sich nicht auf Code, Tests oder Verbiage einer Lektion beziehen. | -| doc | Ändert das Verzeichnis `/docs` oder die Richtlinien zum Beitrag usw. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Bereich:** +**Scope:** -Sie können einen Bereich aus [dieser Liste der Labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope) auswählen. +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Beschreibung:** +**Description:** -Halten Sie es kurz (weniger als 30 Zeichen) und einfach können Sie weitere Informationen in die PR-Beschreibungsbox und Kommentare. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Einige Beispiele für Titel guter PRs wären folgendes: +Some examples of good PRs titles would be: -- `fix(a11y): verbesserter Kontrast der Suchleiste` -- `feat: Füge mehr Tests zu HTML-und CSS-Herausforderungen hinzu` -- `fix(api,client): Verhindere CORS-Fehler bei der Formularabgabe` -- `docs(i18n): Chinesische Übersetzung des lokalen Setups` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Vorschlag einer Pull-Anfrage +## Proposing a Pull Request -1. Sobald die Änderungen vorgenommen wurden, werden Sie aufgefordert, einen Pull-Request auf der GitHub Seite Ihrer Fork zu erstellen. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Bild - Vergleiche Pull-Request Prompt auf GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Standardmäßig sollten alle Pull Requests gegen das FreeCodeCamp Hauptrepo `Master` Branch sein. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Vergewissern Sie sich, dass Ihre Basis-Fork auf FreeCodeCamp/FreeCodeCamp gesetzt ist, wenn Sie eine Pull Anfrage hochziehen. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Bild - Vergleiche Gabelungen beim Pull Request](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Senden Sie den Pull-Request aus Ihrer Filiale an freeCodeCamps `Master` Branch. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. In Ihrem PR enthalten eine detailliertere Zusammenfassung der Änderungen, die Sie vorgenommen haben und warum. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Ihnen wird eine Pull-Request-Vorlage angezeigt. Dies ist eine Checkliste, die du vor dem Öffnen des Pull-Requests verfolgen solltest. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Füllen Sie die Details, wie Sie sehen passend. Diese Informationen werden überprüft und die Prüfer werden entscheiden, ob Ihr Pull-Request akzeptiert wird oder nicht. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - Wenn der PR ein bestehendes GitHub Problem beheben soll, dann am Ende von der Beschreibungstext deines PR verwenden Sie das Schlüsselwort _Schließt_ mit der Ticketnummer zu [automatisch schließen, wenn der PR akzeptiert und zusammengeführt wird](https://help.github.com/en/articles/closing-issues-using-keywords). - > Beispiel: `Schließt #123` beendet das Problem 123 + > Example: `Closes #123` will close issue 123 -5. Geben Sie an, ob Sie auf einer lokalen Kopie der Website getestet haben oder nicht. +5. Indicate if you have tested on a local copy of the site or not. - Dies ist sehr wichtig, wenn Sie Änderungen vornehmen, die nicht nur Änderungen an Textinhalten wie Dokumentation oder einer Challenge-Beschreibung sind. Beispiele für Änderungen, die lokal getestet werden müssen, sind JavaScript, CSS oder HTML, die die Funktionalität oder das Layout einer Seite ändern könnten. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Feedback zu Pull-Requests +## Feedback on pull requests -> Herzlichen Glückwunsch! :tada: auf eine PR-Arbeit und vielen Dank, dass Sie sich die Zeit genommen haben, um zu spenden. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Unsere Moderatoren werden nun einen Blick werfen und dir Feedback geben. Bitte haben Sie Geduld mit den Moderatoren und respektieren Sie ihre Zeit. Alle Pull-Requests werden zu gegebener Zeit überprüft. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Wenn Sie Hilfe benötigen, besprechen Sie bitte im [Mitwirkenden Chatraum](https://gitter.im/FreeCodeCamp/Contributors), wir helfen Ihnen gerne weiter. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIPP] Wenn du mehr Pull-Requests beisteuern möchtest, wir empfehlen Ihnen, die [Änderungen durchzuführen und](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) Richtlinien zu synchronisieren, um zu vermeiden, dass Sie Ihren Fork löschen müssen. -## Konflikte bei Pull-Requests +## Conflicts on a pull request -Konflikte können auftreten, weil viele Mitwirkende an dem Repository arbeiten, und Änderungen können Ihre PR beschädigen, die noch nicht überprüft und zusammengeführt wurden. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Häufig benötigen Sie keine Rebase, da wir alle Commits zerquetschen, aber wenn hier eine Rebase angefordert wird, ist das, was Sie tun sollten. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Für übliche Fehlerbehebungen und Funktionen +### For usual bug fixes and features When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Rebasere deine lokale Kopie: +1. Rebase your local copy: ```console git checkout - git pull --rebase Upstream Master + git pull --rebase upstream master ``` -2. Konflikte lösen und Commits hinzufügen / bearbeiten +2. Resolve any conflicts and add / edit commits ```console - # Entweder + # Either git add . # Entweder git add . @@ -108,60 +108,60 @@ When you are working on regular bugs and features on our development branch `mas git commit --amend --no-edit ``` -3. Änderungen an die PR zurückschieben +3. Push back your changes to the PR ```console - git Push --force Ursprung + git push --force origin ``` -### Für anstehende Lehrpläne und Funktionen +### For upcoming curriculum and features -Wenn du an Funktionen für unseren kommenden Lehrplan `als nächstes*` arbeitest, hast du eine Kirschauswahl: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Stelle sicher, dass dein Upstream mit deinem Lokal synchronisiert wird: +1. Make sure your upstream comes in sync with your local: ```console git checkout master git fetch --all --prune - git checkout next python-projects - git reset --hard upstream/next t-python-projects + git checkout next-python-projects + git reset --hard upstream/next-python-projects ``` -2. Backup machen +2. Take backup - a. Entweder löschen Sie Ihren lokalen Branch, nachdem Sie ein Backup gemacht haben (falls Sie es noch lokal haben): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout - # Beispiel: + # example: # git checkout feat/add-numpy-video-question git checkout -b - # Beispiel: - # git checkout -b backup-feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - b. Oder nur eine Sicherung Ihres Pr Zweiges (wenn Sie ihn nicht lokal haben): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # Beispiel: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Beginnen Sie mit einem sauberen Schiefer: +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Lösen Sie alle Konflikte und bereinigen, installieren Sie Ausführungstests +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean @@ -169,14 +169,14 @@ Wenn du an Funktionen für unseren kommenden Lehrplan `als nächstes*` arbeitest npm ci npm run test:curriculum --superblock= - # Beispiel: + # example: - # npm run test:curriculum --superblock=python-for-everyone + # npm run test:curriculum --superblock=python-for-everybody ``` -6. Wenn alles gut aussieht zurück zur PR +6. If everything looks good push back to the PR ```console - git Push --force Ursprung + git push --force origin ``` diff --git a/docs/i18n/German/how-to-setup-freecodecamp-locally.md b/docs/i18n/German/how-to-setup-freecodecamp-locally.md index a6ce5c3a06..645d57edd8 100644 --- a/docs/i18n/German/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/German/how-to-setup-freecodecamp-locally.md @@ -1,504 +1,504 @@ -Folgen Sie diesen Richtlinien, um FreeCodeCamp lokal auf Ihrem System einzurichten. Dies wird dringend empfohlen, wenn Sie regelmäßig einen Beitrag leisten möchten. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Für einige der Beitragsworkflows müssen Sie FreeCodeCamp lokal laufen lassen. Zum Beispiel die Vorschau von Codierungsproblemen oder das Debuggen und das Beheben von Fehlern in der Codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIPP] Wenn du kein Interesse daran hast, FreeCodeCamp lokal einzurichten, erwäge die Verwendung von Gitpod, eine kostenlose Entwicklungsumgebung. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![In Gitpod öffnen](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Startet eine Entwicklungsumgebung für FreeCodeCamp in deinem Browser.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Bereiten Sie Ihre lokale Maschine vor +### How to prepare your local machine -Beginnen Sie mit der Installation der vorausgesetzten Software für Ihr Betriebssystem. +Start by installing the prerequisite software for your operating system. -Wir unterstützen in erster Linie die Entwicklung auf **\*nix** Systemen. Unsere Mitarbeiter und Community-Mitwirkende arbeiten regelmäßig mit der Codebase unter Verwendung von Werkzeugen auf Ubuntu und macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Wir unterstützen auch Windows 10 via WSL2, die Sie durch [vorbereiten können, lesen Sie diesen Leitfaden](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Einige Community-Mitglieder entwickeln auch unter Windows 10 nativ mit Git für Windows (Git Bash) und anderen unter Windows installierten Tools. Wir haben derzeit keine offizielle Unterstützung für ein solches Setup. Wir empfehlen stattdessen WSL2 zu verwenden. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Voraussetzungen:** +**Prerequisites:** -| Voraussetzung | Version | Notizen | -| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [Node.js](http://nodejs.org) | `12x` | [LTS-Zeitplan](https://github.com/nodejs/Release#release-schedule) | -| npm (wird mit Knoten gebündelt) | `6.x` | Hat keine LTS-Releases, wir verwenden die mit Node LTS gebündelte Version | -| [MongoDB Community-Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Versionshinweise](https://docs.mongodb.com/manual/release-notes/), Hinweis: Wir befinden uns derzeit auf `3.6`, ein [Upgrade ist geplant](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Wenn Sie eine andere Version haben, installieren Sie bitte die empfohlene Version. Wir können nur Installationsprobleme für empfohlene Versionen unterstützen. Siehe [Fehlerbehebung](#troubleshooting) für Details. +> [!DANGER] Wenn Sie eine andere Version haben, installieren Sie bitte die empfohlene Version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Wenn Node.js bereits auf Ihrem Rechner installiert ist, führen Sie die folgenden Befehle aus, um die Versionen zu validieren: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console -knode -v +node -v npm -v ``` > [!TIP] Wir empfehlen dringend, die neuesten stabilen Versionen der oben aufgeführten Software zu aktualisieren, auch bekannt als Long Term Support (LTS) Releases. -Wenn Sie die Voraussetzungen haben, müssen Sie Ihre Entwicklungsumgebung vorbereiten. Dies ist für viele Entwicklungs-Workflows üblich, und Sie müssen dies nur einmal tun. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Folgen Sie diesen Schritten, um Ihre Entwicklungsumgebung fertig zu machen:** +**Follow these steps to get your development environment ready:** -1. Installieren Sie [Git](https://git-scm.com/) oder Ihren Lieblings-Git-Client, wenn Sie es noch nicht getan haben. Update auf die neueste Version; die Version, die mit Ihrem Betriebssystem gebündelt wurde, ist möglicherweise veraltet. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Optional, aber empfohlen) [Richte einen SSH-Schlüssel](https://help.github.com/articles/generating-an-ssh-key/) für GitHub ein. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Installieren Sie einen Code-Editor Ihrer Wahl. +3. Install a code editor of your choice. - Wir empfehlen die Verwendung von [Visual Studio Code](https://code.visualstudio.com/) oder [Atom](https://atom.io/). Dies sind große, kostenlose und Open Source Code-Editoren. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Legen Sie die Linting für Ihren Code-Editor fest. +4. Set up linting for your code editor. - Sie sollten [ESLint in Ihrem Editor laufen lassen](http://eslint.org/docs/user-guide/integrations.html), und es markiert alles, was nicht mit dem [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121) übereinstimmt. + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). > [!TIP] Bitte ignorieren Sie keine Verlinkungsfehler. They are meant to **help** you and to ensure a clean and simple codebase. -## Fork das Repository auf GitHub +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) ist ein Schritt, in dem Sie Ihre eigene Kopie von freeCodeCamps Hauptrepository (a.k.a _Repository_) auf GitHub erhalten. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Dies ist wichtig, da es dir erlaubt, an deiner eigenen Kopie von FreeCodeCamp auf GitHub zu arbeiten, oder um Ihr Projektarchiv herunterzuladen (klonen) um lokal zu arbeiten. Später können Sie Änderungen anfordern, die über eine Pull-Request (PR) in das Hauptarchiv von Ihrem Fork gezogen werden. +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). > [!TIP] Das Hauptrepository unter `https://github.com/freeCodeCamp/freeCodeCamp` wird oft als das `Upstream` Repository bezeichnet. > -> Ihr Fork unter `https://github.com/YOUR_USER_NAME/freeCodeCamp` wird oft als `Ursprung` Repository bezeichnet. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Folge diesen Schritten, um `https://github.com/freeCodeCamp/freeCodeCamp` zu forken:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** 1. Gehe zum FreeCodeCamp Repository auf GitHub: [https://github.com/freeCodeCamp/freeCodeCamp/freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp) -2. Klicke auf den "Fork" Button in der oberen rechten Ecke des Interfaces ([Mehr Details hier](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Nachdem das Projektarchiv geforkt wurde, werden Sie zu Ihrer Kopie des FreeCodeCamp Repositorys unter `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
                - Wie man FreeCodeCamp auf GitHub forkt (Screenshot) + How to fork freeCodeCamp on GitHub (screenshot)
                - Wie man FreeCodeCamp auf GitHub forkert + How to fork freeCodeCamp on GitHub
                -## Fork von GitHub klonen +## Clone your fork from GitHub -[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In Ihrem Fall ist diese entfernte Position Ihr `Fork` des FreeCodeCamps Repository, das unter `https://github.com/YOUR_USER_NAME/freeCodeCamp` verfügbar sein sollte. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Führen Sie diese Befehle auf Ihrem lokalen Rechner aus: +Run these commands on your local machine: -1. Öffnen Sie ein Terminal / Kommandozeile / Shell in Ihrem Projektverzeichnis +1. Open a Terminal / Command Prompt / Shell in your projects directory - _z.B.: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. Klone deine Fork von FreeCodeCamp, ersetze `YOUR_USER_NAME` durch deinen GitHub Benutzernamen +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Dies wird das gesamte FreeCodeCamp Repository in Ihr Projektverzeichnis herunterladen. +This will download the entire freeCodeCamp repository to your projects directory. -Hinweis: `--depth=1` erzeugt einen seichten Klon Ihrer Fork, mit nur dem letzten Verlauf/Commit. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Synchronisation von Elternteil einrichten +## Set up syncing from parent -Jetzt, da Sie eine Kopie Ihres Forks heruntergeladen haben, müssen Sie ein `Upstream` in das übergeordnete Repository einrichten. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Wie bereits erwähnt](#fork-the-repository-on-github)wird das Hauptrepository `im Upstream` Repository verwiesen. Ihr Fork namens `Ursprung` Repository. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Sie benötigen eine Referenz von Ihrem lokalen Klon auf das `Upstream` Projektarchiv zusätzlich zum `Ursprung` Projektarchiv. Dies ist so, dass Sie Änderungen aus dem Hauptarchiv synchronisieren können, ohne wiederholte Forking und klonen zu müssen. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Verzeichnis in das neue FreeCodeCamp-Verzeichnis wechseln: +1. Change directory to the new freeCodeCamp directory: ```console - cd FreeCodeCamp + cd freeCodeCamp ``` -2. Fügen Sie eine entfernte Referenz zum FreeCodeCamp-Hauptarchiv hinzu: +2. Add a remote reference to the main freeCodeCamp repository: ```console - git entfernter Upstream hinzufügen https://github.com/freeCodeCamp/freeCodeCamp.git + git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Stellen Sie sicher, dass die Konfiguration korrekt aussieht: +3. Ensure the configuration looks correct: ```console git remote -v ``` - Die Ausgabe sollte wie unten aussehen: + The output should look something like below: ```console - origine https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## FreeCodeCamp lokal ausführen +## Running freeCodeCamp locally -Nun, da Sie eine lokale Kopie von freeCodeCamp haben, können Sie diese Anweisungen befolgen, um es lokal auszuführen. Dies erlaubt dir: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Vorschau der Bearbeitungen auf Seiten, wie sie auf der Lernplattform erscheinen würden. -- Arbeiten Sie mit Fragen und Verbesserungen der Benutzeroberfläche. -- Debuggen und beheben Sie Probleme mit den Anwendungsservern und Client-Apps. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Wenn Sie Probleme haben, führen Sie zuerst eine Websuche nach Ihrem Problem durch und sehen Sie, ob es bereits beantwortet wurde. Wenn Sie keine Lösung finden bitte durchsuchen Sie unsere [GitHub-Seite](https://github.com/freeCodeCamp/freeCodeCamp/issues) nach einer Lösung und melden Sie das Problem, wenn es noch nicht gemeldet wurde. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -Und wie immer fühle dich frei zu unserem [Mitwirkenden Chatraum auf Gitter](https://gitter.im/FreeCodeCamp/Contributors) oder [unserem Discord Server](https://discord.gg/pFspAhS)zu springen für schnelle Abfragen. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIPP] Du kannst FreeCodeCamp lokal überspringen, wenn du einfach Dateien bearbeitest. Zum Beispiel eine `Rebase`oder das Lösen von `Zusammenführen von` Konflikten. +> [!TIPP] Du kannst FreeCodeCamp lokal überspringen, wenn du einfach Dateien bearbeitest. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Sie können zu diesem Teil der Anleitung später immer wieder zurückkehren. Sie sollten **nur** diesen Schritt überspringen, wenn Sie die Apps auf Ihrem Computer nicht ausführen müssen. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Springe zu Änderungen](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Konfiguriere Abhängigkeiten +### Configuring dependencies -#### Schritt 1: Einrichten der Umgebungsvariable +#### Step 1: Set up the environment variable file -Die Standard-API-Schlüssel und Umgebungsvariablen werden in der Datei `sample.env` gespeichert. Diese Datei muss in eine neue Datei namens `.env` kopiert werden, auf die während des Installationsschritts dynamisch zugegriffen wird. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Erstellen Sie eine Kopie der "sample.env" und benennen Sie sie ".env". -# Mit den notwendigen API-Schlüsseln und Geheimnissen füllen: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp Beispiel. nv .env +cp sample.env .env # Windows -kopiere sample.env .env +copy sample.env .env ``` -Die Schlüssel in der `.env` Datei sind _nicht_ erforderlich, um die App lokal auszuführen. Sie können die Standardwerte von `sample.env` unverändert lassen. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. > [!TIPP] Denken Sie daran, wenn Sie Dienste wie Auth0 oder Algolia verwenden möchten Sie müssen Ihre eigenen API-Schlüssel für diese Dienste erwerben und die Einträge entsprechend im `bearbeiten. nv` Datei. -#### Schritt 2: Installations-Abhängigkeiten +#### Step 2: Install dependencies -Dieser Schritt wird die Abhängigkeiten installieren, die für die Anwendung benötigt werden: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Schritt 3: Starten Sie die MongoDB und seed die Datenbank +#### Step 3: Start MongoDB and seed the database -Bevor Sie die Anwendung lokal ausführen können, müssen Sie den MongoDB-Dienst starten. +Before you can run the application locally, you will need to start the MongoDB service. -> [!HINWEIS] Wenn Sie die MongoDB nicht in einem anderen Setup als der Standardeinstellung laufen lassen die URL unter `MONGOHQ_URL` im `gespeichert. nv` Datei sollte gut funktionieren. Wenn Sie eine benutzerdefinierte Konfiguration verwenden, ändern Sie diesen Wert nach Bedarf. +> [!HINWEIS] Wenn Sie die MongoDB nicht in einem anderen Setup als der Standardeinstellung laufen lassen die URL unter `MONGOHQ_URL` im `gespeichert. nv` Datei sollte gut funktionieren. If you are using a custom configuration, modify this value as needed. -Starten Sie den MongoDB-Server in einem separaten Terminal: +Start the MongoDB server in a separate terminal: -- Auf macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- Unter Windows müssen Sie den vollständigen Pfad zum `mongod` Binär angeben +- On Windows, you must specify the full path to the `mongod` binary ```console - "C:\Programme\MongoDB\Server\3.6\bin\mongod" + "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Stelle sicher, dass du `3.6` durch die installierte Version ersetzt + Make sure to replace `3.6` with the version you have installed -> [!TIPP] Du musst MongoDB nicht jedes Mal starten, indem du es als Hintergrunddienst installierst. Sie können [mehr darüber in der Dokumentation für Ihr Betriebssystem erfahren](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIPP] Du musst MongoDB nicht jedes Mal starten, indem du es als Hintergrunddienst installierst. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Als nächstes seed wir die Datenbank. In diesem Schritt führen wir den folgenden Befehl aus, der den MongoDB-Server mit einigen ersten Datensätzen füllt, die von Diensten benötigt werden. Dazu gehören unter anderem einige Programme. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -npm Run-Seed +npm run seed ``` -#### Schritt 4: Starten Sie die FreeCodeCamp Client-Anwendung und den API Server +#### Step 4: Start the freeCodeCamp client application and API server -Sie können nun den API-Server und die Client-Anwendungen starten. +You can now start up the API server and the client applications. ```console -npm Run-Entwicklung +npm run develop ``` -Dieser einzelne Befehl startet alle Dienste, einschließlich des API-Servers und der Client-Anwendungen, an denen Sie arbeiten können. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!HINWEIS] Sobald Sie bereit sind, öffnen Sie einen Webbrowser und **besuchen Sie **. Wenn die App lädt, herzlichen Glückwunsch – du bist alle gesetzt! Du hast jetzt eine Kopie der gesamten Lernplattform von freeCodeCamp, die auf deinem lokalen Rechner läuft. +> [!HINWEIS] Sobald Sie bereit sind, öffnen Sie einen Webbrowser und **besuchen Sie **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] Der API-Server dient APIs unter `http://localhost:3000`. Die Gatsby-App dient der Client-Anwendung unter `http://localhost:8000` +> [!TIP] Der API-Server dient APIs unter `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Wenn Sie besuchen, sollten Sie die verfügbaren APIs sehen. +> If you visit you should see the available APIs. -## Mit einem lokalen Benutzer anmelden +## Sign in with a local user -Ihr lokales Setup füllt automatisch einen lokalen Benutzer in der Datenbank ein. Durch Klicken auf `Anmelden` authentifizieren Sie sich automatisch in der lokalen Anwendung. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Allerdings ist der Zugriff auf die Seite des Benutzerportfolios ein wenig schwierig. In der Entwicklung Gatsby übernimmt den Service der Client-seitigen Seiten und erhält daher eine `404` Seite für das Benutzerportfolio, wenn Sie lokal arbeiten. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Klicken Sie einfach auf den **"Vorschau Custom 404 Page"** Button wird Sie zur richtigen Seite weiterleiten. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
                - Anmeldung bei lokaler Arbeit (Screenshot) + How to sign in when working locally (screenshot)
                - Wie man sich anmeldet, wenn man lokal arbeitet + How to sign in when working locally
                -## Lokale Änderungen vornehmen +## Making changes locally -Sie können nun Änderungen an den Dateien vornehmen und Ihre Änderungen an Ihrem lokalen Klon Ihres Forks übertragen. +You can now make changes to files and commit your changes to your local clone of your fork. -Folgen Sie diesen Schritten: +Follow these steps: -1. Überprüfen Sie, dass Sie sich im `Master` Branch befinden: +1. Validate that you are on the `master` branch: ```console git status ``` - Sie sollten eine Ausgabe wie folgt erhalten: + You should get an output like this: ```console - Am Branchenmeister - ist Ihre Filiale mit 'origin/master' auf dem neuesten Stand. + On branch master + Your branch is up-to-date with 'origin/master'. - nichts zu übertragen, Arbeitsverzeichnis sauber + nothing to commit, working directory clean ``` - Wenn Sie nicht auf Master sind oder Ihr Arbeitsverzeichnis nicht sauber ist, lösen Sie alle ausstehenden Dateien/Commits und Kasse `Master`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - git Checkout Master + git checkout master ``` -2. Synchronisieren Sie die neuesten Änderungen aus dem FreeCodeCamp Upstream `Master` Branch zu Ihrem lokalen Hauptbereich: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: > [!WARNUNG] Wenn du eine ausstehende Pull-Anforderung hast, die du aus dem `Master` Branch deines Gabels gemacht hast Sie werden sie am Ende dieses Schrittes verlieren. > - > Du solltest sicherstellen, dass dein Pull-Request von einem Moderator zusammengeführt wird, bevor du diesen Schritt ausführst. To avoid this scenario, you should **always** work on a branch other than the `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Dieser Schritt **wird die letzten Änderungen** aus dem Hauptarchiv von FreeCodeCamp synchronisieren. Es ist wichtig, dass Sie Ihren Zweig so oft wie möglich auf dem neuesten `Upstream/Master` neu basisieren, um Konflikte später zu vermeiden. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Aktualisieren Sie Ihre lokale Kopie des FreeCodeCamp Upstream-Repository: + Update your local copy of the freeCodeCamp upstream repository: ```console - git Abruf von Upstream + git fetch upstream ``` - Starte das Zurücksetzen deines Hauptzweiges mit dem FreeCodeCamp-Master: + Hard reset your master branch with the freeCodeCamp master: ```console - git Reset --hard upstream/master + git reset --hard upstream/master ``` - Drücken Sie Ihren Hauptzweig zu Ihrer Herkunft, um einen sauberen Verlauf auf Ihrer Fork auf GitHub zu erhalten: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console - git Push-Ursprung Master --force + git push origin master --force ``` - Du kannst deinen aktuellen Master mit dem Upstream/Master validieren, indem du einen Diff durchführst: + You can validate your current master matches the upstream/master by performing a diff: ```console - git diff Upstream/Master + git diff upstream/master ``` - Die resultierende Ausgabe sollte leer sein. + The resulting output should be empty. -3. Neuen Zweig erstellen: +3. Create a fresh new branch: - Die Arbeit an einem separaten Zweig für jedes Problem hilft Ihnen, Ihre lokale Arbeitskopie sauber zu halten. Du solltest niemals an dem `Master` arbeiten. Dies wird Ihre Kopie von FreeCodeCamp aufbewahren und Sie müssen eventuell mit einem frischen Klon oder Gabeln beginnen. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Vergewissern Sie sich, dass Sie auf `Master` sind, wie bereits erklärt und von dort abbiegen: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Ihr Branchenname sollte mit einer `fix/`, `feat/`, `docs/`, etc. beginnen. Vermeiden Sie die Verwendung von Ticket-Nummern in Branchen. Halten Sie sie kurz, aussagekräftig und einzigartig. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Einige Beispiele für gute Branchennamen sind: + Some examples of good branch names are: ```md - fix/update-challenges-for-reaction + fix/update-challenges-for-react fix/update-guide-for-html-css fix/platform-bug-sign-in-issues feat/add-guide-article-for-javascript translate/add-spanish-basic-html ``` -4. Bearbeiten Sie Seiten und arbeiten Sie am Code in Ihrem Lieblingstexteditor. +4. Edit pages and work on code in your favorite text editor. -5. Sobald du mit den Änderungen zufrieden bist, solltest du FreeCodeCamp wahlweise lokal ausführen, um eine Vorschau der Änderungen zu erhalten. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Stellen Sie sicher, dass Sie Fehler beheben und überprüfen Sie die Formatierung Ihrer Änderungen. +6. Make sure you fix any errors and check the formatting of your changes. -7. Überprüfen und bestätigen Sie die Dateien, die Sie aktualisieren: +7. Check and confirm the files you are updating: ```console git status ``` - Dies sollte eine Liste von `unbearbeiteten` Dateien anzeigen, die Sie bearbeitet haben. + This should show a list of `unstaged` files that you have edited. ```console - Auf Branchen-feat/documentation - ist Ihr Branch mit 'upstream/feat/documentation' auf dem neuesten Stand. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Keine Änderungen für Commit: - (verwenden Sie "git add/rm ... um zu aktualisieren, was übergeben wird) - (verwenden Sie "git checkout -- . ." um Änderungen im Arbeitsverzeichnis zu verwerfen) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - geändert: VERTRIBUTING. d - geändert: docs/README.md - geändert: docs/how-to-setup-freecodecamp-local. d - geändert: docs/how-to-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Etappe die Änderungen und mache einen Commit: +8. Stage the changes and make a commit: - In diesem Schritt sollten Sie nur Dateien markieren, die Sie selbst bearbeitet oder hinzugefügt haben. Sie können Dateien zurücksetzen und auflösen, die Sie bei Bedarf nicht ändern wollten. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console git add path/to/my/changed/file.ext ``` - Oder Sie können alle `ungepackten` Dateien zum Staging-Bereich hinzufügen: + Or you can add all the `unstaged` files to the staging area: ```console git add . ``` - Nur die Dateien, die in den Staging-Bereich verschoben wurden, werden hinzugefügt, wenn Sie einen Commit machen. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Ausgabe: + Output: ```console - Auf Branchen-feat/documentation - ist Ihr Branch mit 'upstream/feat/documentation' auf dem neuesten Stand. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Änderungen, die übertragen werden sollten: - (verwenden Sie "git reset HEAD ..." ...) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - geändert: CONTRIBUTING.md - geändert: docs/README.md - geändert: docs/how-to-setup-freecodecamp-locally.md - geändert: docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Jetzt können Sie Ihre Änderungen mit einer kurzen Nachricht wie folgt übertragen: + Now, you can commit your changes with a short message like so: ```console - git commit -m "fix: meine kurze Commit-Nachricht" + git commit -m "fix: my short commit message" ``` - Einige Beispiele: + Some examples: ```md - fix: aktualisiere den Leitfaden für Java - für Schleife - feat: füge einen Leitfaden für alexa Fähigkeiten hinzu + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` Optional: - Wir empfehlen dringend eine konventionelle Commit-Nachricht. Dies ist eine gute Praxis, die Sie auf einigen der populären Open Source Repositories sehen werden. Als Entwickler ermutigt Sie dies dazu, Standardpraxen zu folgen. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Einige Beispiele für konventionelle Commit-Nachrichten sind: + Some examples of conventional commit messages are: ```md - fix: Update HTML Guide Artikel - fix: Update Build-Skripte für Travis-CI - feat: Fügen Sie Artikel für JavaScript hoisting - docs: Aktualisieren Sie die Richtlinien + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - Halten Sie diese kurzen, nicht mehr als 50 Zeichen. In der Beschreibung der Commit-Nachricht können Sie jederzeit zusätzliche Informationen hinzufügen. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Dies benötigt keine zusätzliche Zeit als eine unkonventionelle Nachricht wie 'Datei aktualisieren' oder 'index.md' + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Hier erfahren Sie mehr darüber, warum Sie konventionelle Commits [verwenden sollten](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Wenn du merkst, dass du eine Datei bearbeiten oder die Übertragen-Nachricht aktualisieren musst, kannst du dies nach dem Bearbeiten der Dateien tun: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - git commit --modify + git commit --amend ``` - Dies öffnet einen Standard-Texteditor wie `nano` oder `vi` , in dem Sie den Titel der Commit-Nachricht bearbeiten und die Beschreibung hinzufügen oder bearbeiten können. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Als nächstes kannst du deine Änderungen in deinen Fork verschieben: +10. Next, you can push your changes to your fork: ```console - git Push-Ursprung Branch/name-here + git push origin branch/name-here ``` -## Vorschlag einer Pull-Request (PR) +## Proposing a Pull Request (PR) After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Schnellbefehle Referenz +## Quick commands reference -Eine kurze Referenz auf die Befehle, die Sie bei der Arbeit vor Ort benötigen. +A quick reference to the commands that you will need when working locally. -| befehl | beschreibung | -| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `npm ci` | Installiert / installieren Sie alle Abhängigkeiten und Bootstraps die verschiedenen Dienste. | -| `npm Run-Seed` | Analysiert alle Challenge-Markdown-Dateien und fügt sie in MongoDB ein. | -| `npm Run-Entwicklung` | Startet den FreeCodeCamp API Server und Client-Anwendungen. | -| `npm Test` | Führen Sie alle JS Tests im System durch, einschließlich Client, Server, Lint und Challenge-Tests. | -| `npm run test:client` | Führen Sie die Client-Testsuite aus. | -| `npm run test:curriculum` | Führen Sie den Lehrplan Testsuite aus. | -| `npm führen Sie test:curriculum --block='Basic HTML und HTML5' aus` | Teste einen bestimmten Block. | -| `npm run test:curriculum --superblock='responsive-web-design'` | Teste einen bestimmten SuperBlock. | -| `npm test-curriculum-Vollausgabe ausführen` | Führen Sie den Lehrplan Testsuite aus, ohne nach dem ersten Fehler zu retten | -| `npm run test:server` | Führen Sie die Server-Testsuite aus. | -| `npm e2e ausführen` | Führen Sie das Cypress Ende, um Tests zu beenden. | -| `npm starten` | Deinstalliert alle Abhängigkeiten und bereinigt Caches. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Fehlerbehebung +## Troubleshooting -### Probleme bei der Installation der empfohlenen Voraussetzungen +### Issues with installing the recommended prerequisites -Wir entwickeln regelmäßig auf den neuesten oder beliebtesten Betriebssystemen wie macOS 10.15 oder später, Ubuntu 18.04 oder höher und Windows 10 (mit WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Es wird empfohlen, Ihr spezielles Problem auf Ressourcen wie Google, Stack Overflow und Stack Exchange zu prüfen. Es besteht eine gute Chance, dass jemand mit dem gleichen Problem konfrontiert ist und es gibt bereits eine Antwort auf Ihre spezifische Anfrage. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Wenn Sie auf einem anderen Betriebssystem sind und/oder immer noch Probleme haben, lesen Sie [die Hilfe](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!WARNUNG] +> [!WARNING] > -> Bitte vermeide das Erstellen von GitHub Problemen für grundständige Probleme. Sie liegen außerhalb des Rahmens dieses Projekts. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Probleme mit der Benutzeroberfläche, Schriftarten, Build-Fehler etc. +### Issues with the UI, Fonts, build errors etc. -Wenn Sie Probleme mit der Benutzeroberfläche haben, Schriftarten oder Builds Fehler sehen, kann eine Bereinigung nützlich sein: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean npm ci npm run seed -npm run development +npm run develop ``` ODER -Verknüpfung verwenden +Use the shortcut ``` -npm laufen sauber und entwickeln +npm run clean-and-develop ``` -Wenn Sie weiterhin Probleme mit der Erstellung haben, wird empfohlen, den Arbeitsbereich zu bereinigen. +If you continue to face issues with the build, cleaning up the workspace is recommend. -`Git clean` im interativen Modus verwenden: +Use `git clean` in interative mode: ``` git clean -ifdX @@ -506,41 +506,41 @@ git clean -ifdX
                - Wie man unverfolgte Dateien aufräumt (Screenshot) + How to clean git untracked files (screenshot)
                - Wie man unverfolgte Dateien aufräumt + How to clean git untracked files
                -### Probleme mit API, Login, Challenge Einreichungen etc. +### Issues with API, Login, Challenge Submissions, etc. -Wenn du dich nicht anmelden kannst, siehst du stattdessen einen Banner mit einer Fehlermeldung, dass er an FreeCodeCamp gemeldet wird, bitte überprüfen Sie, dass Ihr lokaler Port `3000` nicht von einem anderen Programm verwendet wird. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**Unter Linux / macOS / WSL unter Windows - Von Terminal:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console netstat -ab | grep "3000" -tcp4 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**Windows - Von Erhöhter PowerShell:** +**On Windows - From Elevated PowerShell:** ```powershell netstat -ab | Select-String "3000" -TCP 0.0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Probleme beim Installieren von Abhängigkeiten +### Issues installing dependencies -Wenn Sie Fehler bei der Installation der Abhängigkeiten erhalten, Bitte stellen Sie sicher, dass Sie nicht in einem eingeschränkten Netzwerk sind oder Ihre Firewall-Einstellungen nicht daran hindern, auf Ressourcen zuzugreifen. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -Die erste Einrichtung kann je nach Netzwerk-Bandbreite eine Weile dauern. Seien Sie geduldig, und wenn Sie immer noch stecken, empfehlen wir GitPod anstelle eines Offline-Setups zu verwenden. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Hilfe erhalten +## Getting Help -Wenn Sie stecken bleiben und Hilfe benötigen, lassen Sie es uns wissen, indem Sie in der [Kategorie 'Mitwirkende' in unserem Forum](https://forum.freecodecamp.org/c/contributors) oder im [Mitwirkenden Chatraum](https://gitter.im/FreeCodeCamp/Contributors) auf Gitter fragen. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Möglicherweise gibt es einen Fehler in der Konsole Ihres Browsers oder in der Bash / Terminal / Kommandozeile, der das Problem identifizieren kann. Geben Sie diese Fehlermeldung in Ihrer Problembeschreibung an, damit andere das Problem leichter erkennen und Ihnen helfen können, eine Lösung zu finden. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/German/how-to-setup-wsl.md b/docs/i18n/German/how-to-setup-wsl.md index 34662a375d..3f2d5e8ff2 100644 --- a/docs/i18n/German/how-to-setup-wsl.md +++ b/docs/i18n/German/how-to-setup-wsl.md @@ -1,38 +1,38 @@ -# FreeCodeCamp auf Windows Subsystem für Linux (WSL) einrichten +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) > [!HINWEIS] Bevor Sie diesen Anweisungen folgen, stellen Sie sicher, dass Ihr System die Anforderungen erfüllt > -> **WSL 2**: Windows 10 64-Bit (Version 2004, Build 19041 oder höher) - verfügbar für alle Distributionen, einschließlich Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop für Windows**: Siehe die jeweiligen Voraussetzungen für [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) und [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Diese Anleitung behandelt einige häufige Schritte mit dem Setup von WSL2. Sobald einige der häufigen Probleme mit WSL2 behoben sind, Sie sollten in der Lage sein, unserem lokalen Setup-Guide zu folgen, um mit FreeCodeCamp unter Windows mit einer WSL-Distribution wie Ubuntu zu arbeiten. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## WSL aktivieren +## Enable WSL -Folgen Sie den Anweisungen in der [-offiziellen Dokumentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) um WSL1 zu installieren und dann auf WSL2 zu aktualisieren. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Wir empfehlen Ubuntu-18.04 oder höher mit WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!HINWEIS] + > [!NOTE] > - > Während Sie andere nicht-debian-basierte Distributionen verwenden können, kommen sie alle mit ihren eigenen Gotchas und sind außerhalb des Geltungsbereichs dieser Anleitung. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Abhängigkeiten für das Betriebssystem aktualisieren +2. Update the dependencies for the OS ```console sudo apt update sudo apt upgrade -y - # bereinigen + # cleanup sudo apt autoremove -y ``` -## Git einrichten +## Set up Git -Git kommt vorinstalliert mit Ubuntu 18.04, überprüfen Sie, dass Ihre Git-Version mit `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ @@ -40,58 +40,58 @@ Git kommt vorinstalliert mit Ubuntu 18.04, überprüfen Sie, dass Ihre Git-Versi git Version 2.25.1 ``` -(Optional, aber empfohlen) Sie können nun mit [fortfahren und Ihre SSH-Schlüssel](https://help.github.com/articles/generating-an-ssh-key) mit GitHub einrichten. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Installation eines Code Editors +## Installing a Code Editor -Wir empfehlen dringend, [Visual Studio Code](https://code.visualstudio.com) unter Windows 10 zu installieren. Es hat große Unterstützung für WSL und installiert automatisch alle notwendigen Erweiterungen auf Ihrem WSL Distribut. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -Grundsätzlich werden Sie Ihren Code auf Ubuntu-18.04 bearbeiten und speichern, wobei VS Code unter Windows installiert ist. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Docker Desktop installieren +## Installing Docker Desktop -**Docker Desktop für Windows** ermöglicht die Installation und Ausführung von Datenbanken und Diensten wie MongoDB, NGINX, etc. Dies ist nützlich, um häufige Fallstricke bei der Installation von MongoDB oder anderen Diensten direkt unter Windows oder WSL2 zu vermeiden. Dies ist nützlich, um häufige Fallstricke bei der Installation von MongoDB oder anderen Diensten direkt unter Windows oder WSL2 zu vermeiden. +**Docker Desktop für Windows** ermöglicht die Installation und Ausführung von Datenbanken und Diensten wie MongoDB, NGINX, etc. Dies ist nützlich, um häufige Fallstricke bei der Installation von MongoDB oder anderen Diensten direkt unter Windows oder WSL2 zu vermeiden. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Folgen Sie der Anleitung in der [-offiziellen Dokumentation](https://docs.docker.com/docker-for-windows/install) und installieren Sie Docker Desktop für Ihre Windows-Distribution. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Es gibt einige minimale Hardwareanforderungen für die beste Erfahrung. +There are some minimum hardware requirements for the best experience. -## Docker Desktop für WSL konfigurieren +## Configure Docker Desktop for WSL -Sobald Docker Desktop installiert ist, [folgen Sie diesen Anweisungen](https://docs.docker.com/docker-for-windows/wsl) und konfigurieren Sie sie so, dass sie die Ubuntu-18.04 Installation als Backend verwenden. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Dies macht es so, dass die Container auf der WSL-Seite laufen, anstatt unter Windows zu laufen. Sie können auf die Dienste über `http://localhost` unter Windows und Ubuntu zugreifen. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## MongoDB von Docker Hub installieren +## Install MongoDB from Docker Hub -Sobald Sie Docker Desktop für die Arbeit mit WSL2 konfiguriert haben, folgen Sie diesen Schritten, um einen MongoDB-Dienst zu starten: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Starte ein neues Ubuntu-18.04 Terminal +1. Launch a new Ubuntu-18.04 terminal -2. Ziehe `MongoDB 3.6` von Dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Starten Sie den MongoDB-Dienst am Port `27017`und konfigurieren Sie ihn so, dass er automatisch beim System-Neustart ausgeführt wird +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console docker run -it \ -v mongodata:/data/db \ -p 27017:27017 \ --name mongodb \ - --restart unless-stop \ + --restart unless-stopped \ -d mongo:3 ``` -4. Sie können nun auf den Dienst von Windows oder Ubuntu unter `mongodb://localhost:27017` zugreifen. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Installiere Node.js und npm +## Installing Node.js and npm -Wir empfehlen Ihnen, das LTS-Release für Node.js mit einem Knotenversionsmanager zu installieren - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Sobald installiert, verwenden Sie diese Befehle um die Node.js Version zu installieren und bei Bedarf zu verwenden +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts @@ -107,23 +107,23 @@ nvm install 14 nvm use 12 ``` -Node.js wird mit `npm`gebündelt, Sie können auf die neueste Version von `npm` aktualisieren mit: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console -npm Installation -g npm@latest +npm install -g npm@latest ``` -## FreeCodeCamp lokal einrichten +## Set up freeCodeCamp locally -Nachdem Sie die Voraussetzungen installiert haben, folgen Sie [unserem lokalen Setup-Leitfaden](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) um FreeCodeCamp lokal auf Ihrem Rechner zu klonen, zu installieren und einzurichten. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!WARNUNG] +> [!WARNING] > -> Bitte beachten Sie, dass zu diesem Zeitpunkt die Einrichtung für Cypress Tests (und verwandte GUI erforderlich) in Arbeit sind. Sie sollten immer noch in der Lage sein, an den meisten der Codebase zu arbeiten. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Nützliche Links +## Useful Links -- [Ein WSL2 Dev Setup mit Ubuntu 20.04, Node.js, MongoDB, VS Code und Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - ein Artikel von Mrugesh Mohapatra (Mitarbeiter Entwickler auf freeCodeCamp.org) -- Häufig gestellte Fragen am: - - [Windows Subsystem für Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Docker Desktop für Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/German/how-to-use-docker-on-windows-home.md b/docs/i18n/German/how-to-use-docker-on-windows-home.md index 95aef8abb7..85ac65a3e3 100644 --- a/docs/i18n/German/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/German/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Wie man Docker unter Windows Home nutzt +# How to use Docker on Windows Home -Beim Einrichten von Docker auf Windows Home sind einige Fallstricke zu vermeiden. Zuerst müssen Sie [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) als Administrator verwenden. Leider unterstützt Windows Home Docker für Windows Desktop nicht, daher muss Toolbox stattdessen verwendet werden. Es muss als Administrator ausgeführt werden, da die Installation Symlinks verwendet, die sonst nicht erstellt werden können. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Wenn Sie die Toolbox installiert haben, führen Sie Docker Quickstart Terminal als Administrator aus. Erstellt eine `-Standard-` virtuelle Maschine, falls sie noch nicht existiert. Nachdem das geschehen ist, schließen Sie das Terminal und öffnen Sie die VirtualBox (erneut als Administrator). Sie sollten in der Lage sein, den `-Standardsystem` zu sehen. Die Seite ist ziemlich ressourcenintensiv, also stoppen Sie die virtuelle Maschine und erhöhen Sie die Einstellungen so viel wie möglich - insbesondere Speicher. Es wurde bestätigt, dass sie mit 4 GB RAM arbeiten. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Sobald du glücklich bist, dass Docker arbeitet, klone das FreeCodeCamp Repository in ein Verzeichnis in `C:\Users`. Diese Verzeichnisse werden gemeinsam genutzt, um Docker Zugriff auf die lokalen Verzeichnisse zu geben, die es während der Installation benötigt. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Wenn du Nachrichten siehst, wie +If you see messages like ```shell -bash: change_volumes_owner.sh: Keine solche Datei oder Verzeichnis +bash: change_volumes_owner.sh: No such file or directory ``` -wenn Sie `npm mit Docker:init` laufen, ist dies wahrscheinlich der Schuldige zu sein. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/German/how-to-work-on-coding-challenges.md b/docs/i18n/German/how-to-work-on-coding-challenges.md index 24bf0bc22f..074f78ea28 100644 --- a/docs/i18n/German/how-to-work-on-coding-challenges.md +++ b/docs/i18n/German/how-to-work-on-coding-challenges.md @@ -1,33 +1,37 @@ -# Wie man mit Coding-Herausforderungen umgeht +# How to work on coding challenges -Unser Ziel ist es, ein unterhaltsames und klares interaktives Lernerlebnis zu entwickeln. +Our goal is to develop a fun and clear interactive learning experience. -Das Entwerfen interaktiver Codierungsaufgaben ist schwierig. Es wäre viel einfacher, eine längere Erklärung zu schreiben oder ein Video-Tutorial zu erstellen, und es gibt einen Platz für diejenigen auf Medium und YouTube. Für unseren Grundkurs halten wir uns jedoch an dem fest, was für die meisten Menschen am besten funktioniert - eine voll interaktive Videospielerfahrung. +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. -Wir wollen, dass Wohnmobile einen Strömungszustand erreichen. Wir wollen, dass sie Schwung bauen und durch unseren Lehrplan mit möglichst wenigen Schlägen schüren. Wir wollen, dass sie mit Zuversicht in die Projekte gehen und sich den Programmierkonzepten weitestgehend aussetzen. +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. -Um diese Herausforderungen zu schaffen, bedarf es einer immensen Kreativität und Aufmerksamkeit für Details. Es gibt viele Hilfe zur Verfügung. Sie erhalten Unterstützung von einem ganzen Team von Mitwirkenden, an das Sie Ideen abstoßen und Ihre Herausforderungen Demo erstellen können. Bleiben Sie aktiv im [Beitragenden Raum](https://gitter.im/freecodecamp/contributors) und stellen Sie viele Fragen. +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/). -Mit Ihrer Hilfe können wir ein interaktives Coding Curriculum entwerfen, das Millionen von Menschen hilft, jahrelang zu programmieren. +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. -Der Inhalt für jede Challenge wird in einer eigenen Markdown Datei gespeichert. Diese Markdown Datei wird später mit unseren Tools in HTML konvertiert, um interaktive Webseiten zu erstellen. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). + +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 own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -## Werkzeuge für den Lehrplan einrichten +## Set up the tooling for the curriculum -Bevor Sie am Lehrplan arbeiten, müssen Sie ein paar Werkzeuge einrichten, um Ihre Änderungen zu testen. Sie können jede Option von unten verwenden: +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Sie können [FreeCodeCamp lokal einrichten](how-to-setup-freecodecamp-locally.md). Dies ist **dringend empfohlen** für regelmäßige/wiederholte Beiträge. Dieses Setup erlaubt es Ihnen, Ihre Änderungen zu testen und zu testen. -- Verwenden Sie Gitpod, eine kostenlose Entwicklungsumgebung. Wenn Sie auf den Button unten klicken, wird eine Entwicklungsumgebung für FreeCodeCamp in Ihrem Browser gestartet. Es dauert nur wenige Minuten. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. - [![In Gitpod öffnen](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -- Bearbeiten Sie die Dateien auf GitHubs Schnittstelle, indem Sie auf das Bleistift-Symbol für die entsprechende Datei klicken. Während dies der schnellste Weg ist, ist es **nicht empfohlen**, da Sie Ihre Änderungen auf GitHub nicht testen können. Wenn unsere Betreuer zu dem Schluss kommen, dass die von Ihnen vorgenommenen Änderungen lokal getestet werden müssen, müssen Sie stattdessen die oben genannten Methoden erneut befolgen. +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. -## Herausforderungsvorlage +## Challenge Template -Unten ist eine Vorlage dafür, wie die Challenge-Markdown-Dateien derzeit aussehen. Um die gestraffte Vorlage zu sehen, die wir annehmen, siehe [unten](#upcoming-challenge-template). +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- @@ -53,55 +57,55 @@ Anweisungen zu geben, was genau getan werden muss.
                ```yml -Tests: - - Text: Soll "foo" zurückgeben - testString: 'Eine String-String-Funktion, die möglicherweise Chai-Zusicherungen verwendet" +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
                -## Challenge-Seed +## Challenge Seed
                ```{ext} -Code, der standardmäßig im Editor angezeigt wird. +Code displayed in the editor by default. -Dies ist ein notwendiger Abschnitt für die Herausforderung. +This is a required section for the challenge. ```
                -### Vor dem Test +### Before Test
                ```{ext} -Optionaler Test-Setup-Code. +Optional Test setup code. ```
                -### Nach Test +### After Test
                ```{ext} -Optionaler Test Abriss Code. +Optional Test tear down code. ```
                -## Lösung +## Solution
                ```{ext} -// Lösung erforderlich +// solution required ```
                @@ -110,22 +114,22 @@ Optionaler Test Abriss Code. > [!NOTE] > -> 1. In den obigen Abschnitten, Beispiele von `{ext}` sind: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Für den Abschnitt `Tests` oben sollten `text` und `testString` gültige YAML-Zeichenketten sein. `testString` kann eine stringifizierte Funktion oder Ausdruck sein, mit der Chai behauptet werden kann. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Nummerierende Herausforderungen +## Numbering Challenges -Jede Challenge benötigt eine `id`. Wenn Sie keine angeben, wird MongoDB eine neue zufällige erstellen, wenn die Daten gespeichert werden; aber wir wollen das nicht, da wir wollen, dass die Challenge-IDs in verschiedenen Umgebungen konsistent sind (inszeniert, B. Produktion, viele verschiedene Entwickler, etc.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -Um eine neue in einer Shell zu generieren (vorausgesetzt MongoDB läuft separat): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Führe `mongo` Befehl aus. -2. Führe `ObjectId()` Befehl aus. +1. Run `mongo` command. +2. Run `ObjectId()` command. Zum Beispiel: @@ -141,140 +145,219 @@ $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Das Ergebnis ist eine neue Id, zum Beispiel `5a474d78df58bafeb3535d34` oben. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- id: 5a474d78df58bafeb3535d34 -Titel: Challenge-Titel +title: Challenge Title ``` -## Benennen von Herausforderungen +## Naming challenges -Die Dinge zu benennen, ist schwierig. Wir haben es erleichtert, indem wir einige Einschränkungen auferlegt haben. +Naming things is hard. We've made it easier by imposing some constraints. -Alle Challenge-Titel sollten explizit sein und diesem Muster folgen: +All challenge titles should be explicit and should follow this pattern: \[verb\]\[Objektklausel\] -Hier sind einige Beispiel-Challenge-Namen: +Here are some example challenge names: -- Verwende im Uhrzeigersinn Notation um die Füllung eines Elements anzugeben -- Arrays mit .reduce kondensieren -- Benutze Klammer-Notation um das erste Zeichen in einem String zu finden +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Herausforderung Beschreibungen/Anleitung +## Challenge descriptions/instructions -Sätze sollten klar und präzise mit minimalem Fachjargon sein. Wenn verwendet, sollte der Jargon sofort im Klartext definiert werden. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Absätze kurz halten (etwa 1-4 Sätze). Es ist wahrscheinlicher, dass die Menschen mehrere kurze Absätze lesen als eine Mauer des Textes. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Der Challenge-Text sollte die zweite Person ("Sie") verwenden, um ihm einen Gesprächston zu geben. Auf diese Weise scheinen Text und Anweisungen direkt mit dem Camper zu sprechen, der die Herausforderung bewältigt. Versuchen Sie, die erste Person zu vermeiden ("Ich", "wir", "lass", und "uns"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Ausgehende Links nicht verwenden. Diese unterbrechen den Fluss. Campern sollte bei diesen Herausforderungen nie etwas zu google haben. Wenn es Ressourcen gibt, von denen man denkt, dass Camper profitieren würden, fügen Sie sie dem Artikel zu Guide in Bezug auf die Herausforderung hinzu. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -Bei Bedarf können Sie Diagramme hinzufügen. +You can add diagrams if absolutely necessary. -Verwenden Sie keine Emojis oder Emoticons in Challenge. FreeCodeCamp hat eine globale Gemeinschaft, und die kulturelle Bedeutung eines Emoji oder Emoticons kann sich auf der ganzen Welt unterscheiden. Außerdem können Emojis auf verschiedenen Systemen anders aussehen. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Richtige Knoten sollten die richtige Großschreibung verwenden, wenn möglich. Unten ist eine Liste von Wörtern, wie sie in den Herausforderungen erscheinen sollten. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (Großbuchstaben in "J" und "S" und keine Abkürzungen) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Front-End-Entwicklung (Adjektive Form mit Bindestrich) ist, wenn Sie am Frontend arbeiten (noun form ohne Bindestrich). Das Gleiche gilt für "backend", "full stack", und viele andere Compound-Begriffe. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### Die 2-Minuten-Regel +### The 2-minute rule -Jede Herausforderung sollte innerhalb von 120 Sekunden von einem englischen Muttersprachler gelöst werden, der die Herausforderungen bewältigt hat. Dies beinhaltet die Zeit, die benötigt wird, um die Anleitungen/Anweisungen zu lesen, den Seed Code zu verstehen Schreiben Sie ihren eigenen Code und lassen Sie alle Tests bestehen. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Wenn es länger als zwei Minuten dauert, um die Herausforderung abzuschließen, haben Sie zwei Möglichkeiten: +If it takes longer than two minutes to complete the challenge, you have two options: -- Vereinfachen Sie die Herausforderung, oder -- Spalten Sie die Herausforderung in zwei Herausforderungen. +- Simplify the challenge, or +- Split the challenge into two challenges. -Die 2-minütige Regel zwingt Sie, den Herausforderer Designer, Ihre Richtung, Ihren Seed-Code klar und Ihre Tests klar zu machen. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Wir verfolgen, wie lange es dauert, bis Wohnmobile Änderungen lösen und nutzen diese Informationen, um Herausforderungen zu identifizieren, die vereinfacht oder aufgeteilt werden müssen. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modularität +### Modularity -Jede Herausforderung sollte genau ein Konzept lehren, und dieses Konzept sollte aus dem Namen der Herausforderung hervorgehen. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Wir können bereits abgedeckte Konzepte durch Wiederholung und Variationen stärken - zum Beispiel die Einführung von h1 Elementen in einer Herausforderung, dann h3 Elemente ein paar Herausforderungen später. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Unser Ziel ist es, Tausende von 2 Minuten Herausforderungen zu haben. Diese können zusammenfließen und an bereits abgedeckte Konzepte anknüpfen. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Formatiere Challenge-Text +### Formatting challenge text -Hier sind spezifische Formatierungsrichtlinien für herausfordernden Text und Beispiele: +Here are specific formatting guidelines for challenge text and examples: -- Sprachschlüsselwörter gehen in `` Tags. Zum Beispiel HTML-Tag-Namen oder CSS-Eigenschaftsnamen -- Die erste Instanz eines Keywords, wenn es definiert wird, oder allgemeine Keywords (z.B. "object" oder "immutable") gehen in `` Tags -- Referenzen zu Codeteilen (z.B. Funktion, Methode oder Variablennamen) sollten in `` Tags eingewickelt werden. Siehe Beispiel unten: -- Verwende parseInt um die Variable realNumber in eine Ganzzahl umzuwandeln. -- Mehrzeilige Codeblöcke **müssen durch eine leere Zeile** vorausgegangen sein. Die nächste Zeile muss mit drei Backticks beginnen, gefolgt von einer der [unterstützten Sprachen](https://prismjs.com/#supported-languages). Um den Code-Block zu vervollständigen, müssen Sie ein Zeilenumbruch starten, das nur drei Backticks und **eine weitere leere Zeile** hat. **Hinweis:** Wenn Sie einen Beispielcode in YAML verwenden verwenden Sie `yaml` statt `yml` für die Sprache rechts neben den Backticks. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Siehe Beispiel unten: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Das folgende Beispiel ist ein Beispiel für Code: +The following is an example of code: ```{language} -[IHRE CODE HIER] +[YOUR CODE HERE] ```` ```` -- Zusätzliche Informationen in Form einer Notiz sollten formatiert werden `Hinweis: Rest der Notiz Text... Wenn mehrere Notizen benötigt werden dann listet alle Notizen in separaten sentences mit dem Format `Notizen: First note text. Zweite Anmerkung Text.`. -Verwenden Sie doppelte Anführungszeichen, wo anwendbar +- Zusätzliche Informationen in Form einer Notiz sollten formatiert werden `Hinweis: Rest der Notiz Text... Wenn mehrere Notizen benötigt werden dann listet alle Notizen in separaten sentences mit dem Format `Notizen: First note text. Second note text.`. +- Use single-quotes where applicable -## Schreibtests +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Herausforderungen sollten die minimale Anzahl an Tests haben, die erforderlich sind, um zu überprüfen, ob ein Camper ein Konzept versteht. +## Writing tests -Unser Ziel ist es, den einzelnen Punkt zu kommunizieren, den die Herausforderung zu unterrichten versucht, und zu testen, dass sie diesen Punkt verstanden haben. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Challenge-Tests können die Zusicherungsbibliotheken von Node.js und Chai.js nutzen. Bei Bedarf kann auch auf den vom Benutzer generierten Code in der Variable `code` zugegriffen werden. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Formatierung des Seed-Codes +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Hier sind spezifische Formatierungsrichtlinien für den Challenge-Seed-Code: +## Formatting seed code -- Benutze zwei Leerzeichen, um einzurücken -- JavaScript-Anweisungen enden mit einem Semikolon -- Verwende doppelte Anführungszeichen, sofern anwendbar -- Kommentare sollten einen Platz zwischen den Kommentarzeichen und dem Kommentar selbst haben +Here are specific formatting guidelines for the challenge seed code: - `// Diese Zeile reparieren` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Hinweise und Lösungen +### Seed code comments -Jede Challenge hat einen `Hint-Knopf, so dass ein Benutzer auf alle Hinweise/Lösungen zugreifen kann, die für die Herausforderung erstellt wurden. Lehrplan-Hinweise/Lösungsthemen befinden sich in [unserem Forum](https://forum.freecodecamp.org/c/guide) unter der Kategorie `Guide`. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Wenn du ein Problem mit den Hinweisen/Lösungen einer bestehenden Herausforderung findest, kannst du Vorschläge in der [Beitragenden Kategorie](https://forum.freecodecamp.org/c/contributors) im Forum machen. Moderatoren und Benutzer mit Treuhandstufe 3 werden die Kommentare prüfen und entscheiden, ob sie die Änderungen in das entsprechende Tipp/Lösungsthema einbeziehen wollen oder nicht. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Hinzufügen neuer Challenge-Hinweise/Lösungen Themen +Example of valid single line JavaScript comment: -Führen Sie die folgenden Schritte ein, wenn Sie ein neues Thema in Bezug auf Challenge-Hinweise/Lösungen hinzufügen. +```js +// Only change code below this line +```` -1. Beginnen Sie mit den gleichen Schritten für die Erstellung eines neuen Themas, aber überprüfen Sie die nächsten Schritte für die Erstellung des Titels. -2. Der Titel des Themas sollte mit `freeCodeCamp Challenge Guide: ` beginnen, die mit dem aktuellen Titel der Lehrplan-Herausforderung verbunden ist. Wenn die Herausforderung zum Beispiel "Chunky Affe" genannt wird, lautet der Titel "FreeCodeCamp Challenge Guide: Chunky Affe`". -3. `camperbot` sollte der Besitzer dieser Themen/Beiträge sein, also musst du einen Administrator anfordern, um den Besitzer des Hauptbeitrags auf `camperbot` zu ändern. -4. Sobald das neue Thema erstellt wurde, wird eine Forenthemen-ID erstellt. Sie befindet sich am Ende des Forumthema URL. Diese ID muss dem Frontmatter der Lehrplan-Challenge-Datei über den normalen Pull-Request-Prozess für den `Get a Hint`-Button hinzugefügt werden, um auf das Thema zu verlinken. +Example of a valid CSS comment: -### Richtlinien für den Inhalt von Hinweisen und Lösungsthemen +```js +/* Only change code above this line */ +``` -Wenn Sie eine Lösung für ein Thema der Lehrplan-Herausforderung vorschlagen, das mit dem Leitfaden zusammenhängt, der vollständige Code muss hinzugefügt werden. Dies beinhaltet den gesamten ursprünglichen Seed-Code sowie alle Änderungen, die notwendig sind, um alle Challenge-Tests zu bestehen. Die folgende Vorlage sollte verwendet werden, um neue Hinweise/Lösungsthemen zu erstellen: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
                + { /* Change code below this line */ } + + { /* Change code above this line */ } +

                {this.state.text}

                +
                + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: ````md -# Challenge Name geht hier +# Challenge Name Goes Here ---- ## Problembeschreibung +--- -Dies fasst zusammen, was getan werden muss, ohne die Challenge Beschreibung und/oder Anweisungen neu zu setzen. Dies ist ein optionaler Abschnitt +## Problem Explanation + +This summarizes what need to be done without just restating the challenge description and/or instructions. Dies ist ein optionaler Abschnitt #### Relevante Links @@ -301,63 +384,63 @@ Funktion myFunc() { } ```` -#### Code-Erklärung +#### Code Explanation -- Code-Erklärung hierher -- Code-Erklärung hierher +- Code explanation goes here +- Code explanation goes here -#### Relevante Links +#### Relevant Links -- [Linktext](link_url_goes_here) -- [Linktext](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
                ```` ## Testing Challenges -Bevor du [eine Pull-Request](how-to-open-a-pull-request. d) für Ihre Änderungen müssen Sie überprüfen, dass die von Ihnen vorgenommenen Änderungen keine unbeabsichtigten Probleme mit der Herausforderung verursachen. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Um alle Challenges zu testen, führen Sie den folgenden Befehl aus dem root-Verzeichnis aus +1. To test all challenges run the below command from the root directory ```` npm run test:curriculum ``` -2. Du kannst mit diesen Befehlen auch einen Block oder einen Superblock von Herausforderungen testen +2. You can also test a block or a superblock of challenges with these commands ``` -npm führen Sie test:curriculum --block='Basic HTML und HTML5' aus +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` npm run test:curriculum --superblock=responsive-web-design ``` -Du kannst auch eine Challenge einzeln testen, indem du folgende Schritte durchführst: +You are also able to test one challenge individually by performing the following steps: -1. Zum Verzeichnis `curriculum` wechseln: +1. Switch to the `curriculum` directory: ``` - cd Lehrplan + cd curriculum ``` -2. Führen Sie Folgendes für jede von Ihnen geänderte Challenge-Datei aus: +2. Run the following for each challenge file for which you have changed: ``` - npm run test -- -g 'der vollständige englische Titel der Herausforderung' + npm run test -- -g 'the full English title of the challenge' ``` -Sobald du überprüft hast, dass jede Challenge die Tests bestanden hat, [erstelle bitte eine Pull-Request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> Du kannst die Umgebungsvariable `LOCALE` in der `.env` auf die Sprache der Challenge(s) setzen, die du testen musst. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> Die derzeit akzeptierten Werte sind `english` und `chinese`, wobei `english` standardmäßig gesetzt wird. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Bevorstehende Challenge-Vorlage +## Upcoming Challenge Template -Die Challenge-Vorlage wird auf eine sauberere, weniger verschachtelte Struktur aktualisiert. Dies wurde noch nicht vollständig abgeschlossen, aber Folgendes sollte sich der letzten Struktur annähern: +The challenge template in the process of being updated to a cleaner, less nested structure. Dies wurde noch nicht vollständig abgeschlossen, aber Folgendes sollte sich der letzten Struktur annähern: ``mdx @@ -378,36 +461,36 @@ Beschreibungstext in Markdown
              ``` -## --Schritt-Hints-- +## --step-hints-- ![test-id-1] -Es wird eine beliebige Anzahl von drei Nummern von IDs, Anweisungen (in Markdown) und Code-Blöcken geben. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Code für Test 1 +Code for test one ``` ![test-id-2] -Weitere Anweisungen in der Markdown-Syntax +More instructions in markdown syntax ```js -Mehr Code +More code ``` ## --step-seed-- -### --vorher-Benutzer-Code-- +### --before-user-code-- ```lang -Code wird vor dem Benutzer ausgewertet +Code evaluated before the user’s ``` -### --Nach-Benutzer-Code-- +### --after-user-code-- ```lang -Code wird nach dem Benutzer und kurz vor den Tests ausgewertet +Code evaluated after the user’s, and just before the tests ``` ### --seed-content-- @@ -415,15 +498,15 @@ Code wird nach dem Benutzer und kurz vor den Tests ausgewertet ![index-html] ```html -Etwas html +Some html ``` ```css -Etwas css +Some css ``` ```js -Einige js +Some js ``` ![index-js] @@ -432,47 +515,47 @@ Einige js

              - --Lösung-Marker - + --solution-marker--

              - Genau dasselbe wie der Seeds Abschnitt + Exactly the same as the seeds section

              - --Nächster Lösungsmarker + --next-solution-marker

              - Wieder gleichen + Same again

              - --Frage-Marker-- + --question-marker--

              - --Textmarker-- + --text-marker--

              - Die Frage würde hierher gehen (nur für Video-Challenges verwendet) + The question would go here (only used for video challenges)

              - --Antworten-Markier- + --answers-marker--

              - Antwort 1 + Answer 1


              @@ -488,7 +571,7 @@ Einige js

              - --Lösung-Marker - + --solution-marker--

              @@ -504,13 +587,13 @@ Einige js

              - Nützliche Links + Useful Links

              - Erstellen und Bearbeiten von Herausforderungen: + Creating and Editing Challenges:

              @@ -518,14 +601,14 @@ Einige js
              1. - Challenge-Typen - was die numerischen Challenge-Typ-Werte bedeuten (Enum). + Challenge types - what the numeric challenge type values mean (enum).

              2. - Beitrag zum FreeCodeCamp - Schreiben von ES6 Challenge-Tests - ein Video mit folgenden Ethan Arrowood , da er zum alten Lehrplan beiträgt. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

              3. diff --git a/docs/i18n/German/how-to-work-on-the-docs-theme.md b/docs/i18n/German/how-to-work-on-the-docs-theme.md index 345909effa..bf8bf8f6c9 100644 --- a/docs/i18n/German/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/German/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Wie man mit dem Thema Dokumentation arbeitet +# How to work on the docs theme -> [!HINWEIS] Eine kurze Erinnerung, dass Sie nichts für die Bearbeitung des Inhalts der Dokumentationsseite einrichten müssen. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Um an den Richtlinien für den Beitrag zu arbeiten, können Sie Dateien in der `-Dokumentation` bearbeiten oder hinzufügen [die hier verfügbar sind](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Wenn Ihre Änderungen zusammengeführt werden, wird sie automatisch auf der Dokumentationsseite zur Verfügung gestellt. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Struktur der Dokumentations-Website +## Structure of the docs website -Die Seite wird mit [`docsify`](https://docsify.js.org)generiert und mit GitHub Seiten geliefert. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Normalerweise müssten Sie keine Konfiguration ändern oder die Site lokal bauen. Falls Sie interessiert sind, dann ist es folgendermaßen: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- Die Quelle dieser Seite ist in [`docs/index.html`](index.html) verfügbar. -- Wir liefern diese Datei als SPA mit `docsify` und GitHub Seiten. -- Das `docsify` Skript generiert den Inhalt von `Markdown` Dateien in `Dokumentation` Verzeichnis auf Anfrage. -- Die Startseite wird von [`_coverpage.md`](_coverpage.md) generiert. -- die Sidebar Navigation wird von [`_sidebar.md`](_sidebar.md) generiert. +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Die Dokumentationsseite wird lokal bedient +## Serving the documentation site locally -FreeCodecamp klonen: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -`docsify` installieren: +Install `docsify`: -```sh +```console npm install -g docsify ``` -und das `/docs` Verzeichnis ausliefern +and serve the `/docs` directory -```sh -docsify dient Doktor +```console +docsify serve docs ``` -Alternativ, wenn Sie FreeCodeCamp lokal installiert haben (siehe lokale Setup-Anleitung), wir bündeln CLI mit den Entwicklungstools, so dass du `npm mit docs:serve` aus der Wurzel des Repos ausführen kannst. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/German/how-to-work-on-the-news-theme.md b/docs/i18n/German/how-to-work-on-the-news-theme.md index 665b22e5f9..51ad62ccf0 100644 --- a/docs/i18n/German/how-to-work-on-the-news-theme.md +++ b/docs/i18n/German/how-to-work-on-the-news-theme.md @@ -1,8 +1,99 @@ - https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md \ No newline at end of file +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). + +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/German/index.md b/docs/i18n/German/index.md index be62d50b42..48e8bfe6ad 100644 --- a/docs/i18n/German/index.md +++ b/docs/i18n/German/index.md @@ -1,45 +1,43 @@ -Die [freeCodeCamp.org](https://freecodecamp.org) Gemeinschaft ist möglich dank Tausenden von freundlichen Freiwilligen wie dich. Wir begrüßen alle Beiträge zur Community und freuen uns, Sie an Bord willkommen zu heißen. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!HINWEIS] Bevor Sie fortfahren, nehmen Sie sich bitte eine kurze 2 Minuten Zeit, um unseren [Code of Conduct](https://www.freecodecamp.org/code-of-conduct) zu lesen. Wir durchsetzen sie strikt in unserer Gemeinschaft. Wir wollen einen Beitrag zu freeCodeCamp.org leisten, um ein sicheres und inklusives Erlebnis für alle zu sein. +> [!HINWEIS] Bevor Sie fortfahren, nehmen Sie sich bitte eine kurze 2 Minuten Zeit, um unseren [Code of Conduct](https://www.freecodecamp.org/code-of-conduct) zu lesen. We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Glücklicher Beitrag. +Happy contributing. -Sie sind willkommen: +You are welcome to: -- Erstellen, aktualisieren und beheben Sie Fehler in unseren [Coding Challenge](#coding-challenges). -- Hilf uns, Fehler in FreeCodeCamp.org's [Lernplattform](#learning-platform) zu beheben. -- _(Kommt bald)_ Hilf uns, FreeCodeCamp.org in Weltsprachen zu übersetzen. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Haben Sie Fragen? Gehe zu [diesen FAQs](/FAQ.md) in denen wir einige häufige Fragen zum Beitrag beantworten. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Programmier-Herausforderungen +## Curriculum -Alle unsere Herausforderungen bei der Programmierung werden von der Community kuratiert und von Freiwilligen wie dir Expertenwissen eingebracht. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Sie können dazu beitragen, sie zu erweitern und ihre Formulierung zu verbessern. Sie können auch die Benutzergeschichten aktualisieren, um das Konzept besser zu erklären oder redundante zu entfernen und die Challenge-Tests zu verbessern, um den Code der Benutzer genauer zu testen. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Wenn Sie daran interessiert sind, diese Codierungsaufgaben zu verbessern, dann [wie Sie an Codierungsherausforderungen arbeiten können](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Lernplattform +## Learning Platform -Unsere Lernplattform läuft auf einem modernen JavaScript-Stack. Es hat verschiedene Komponenten, Werkzeuge und Bibliotheken, einschließlich, aber nicht beschränkt auf, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack und mehr. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Generell +Broadly, we use -- Wir haben einen auf Node.js basierenden API-Server. -- Eine Reihe von React-basierten Client-Anwendungen. -- Ein Skript, mit dem wir unsere Frontend-Projekte evaluieren. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Dazu beizutragen, erfordert ein gewisses Verständnis von APIs, ES6-Syntax und viel Neugier. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Grundsätzlich erwarten wir grundlegende Vertrautheit mit einigen der oben genannten Technologien, Tools und Bibliotheken. Damit müssen Sie kein Experte sein, um einen Beitrag zu leisten. +If you want to help us improve our codebase... -**Wenn du uns helfen möchtest, unsere Codebase zu verbessern, kannst du entweder Gitpod verwenden, eine kostenlose Entwicklungsumgebung** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![In Gitpod öffnen](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Startet eine Entwicklungsumgebung für FreeCodeCamp in deinem Browser.) +Or you can... -ODER - -**Sie können [FreeCodeCamp lokal einrichten](how-to-setup-freecodecamp-locally.md) auf Ihrem Computer.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/German/moderator-handbook.md b/docs/i18n/German/moderator-handbook.md new file mode 100644 index 0000000000..7ebfc0705f --- /dev/null +++ b/docs/i18n/German/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. Sie können dies oft sofort sagen, wenn der Beitragende sich nicht die Mühe gemacht hat, die Kontrollkästchen im Pull-Request Template anzukreuzen, oder verwendet einen generischen Pull-Request-Titel wie "Änderungen gemacht" oder "Aktualisierungsindex. + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   Wenn es irgendwelche Unklarheiten bezüglich der richtigen Vorgehensweise bei einem Thema gibt Sie können @raisedadead zu diesem Thema markieren und dann den `Discussing` Label hinzufügen. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +Wenn du bemerkst, dass jemand den [-Verhaltenskodex](https://code-of-conduct.freecodecamp.org) bei GitHub gebrochen hat oder Pull Requests mit böswilligen Inhalten oder Code öffnen, E-Mail dev@freecodecamp. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Stellen Sie sicher, dass es den Verhaltenskodex verletzen sollte.** Nicht alle Verstöße gegen den Kodex waren als solcher beabsichtigt. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Melde mich zurück und bestätige, dass du sie gelesen hast. 3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Lösche Nachrichten** Moderatoren können Nachrichten auf Discord löschen. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Benutze nicht @everyone oder @here** Nutze nicht @everyone oder @here unter keinen Umständen! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Droht nicht,**zu bannen oder zu unterbrechen. Wenn ein Camper den Verhaltenskodex verletzt, droht nicht, sie zu verbieten oder auszusetzen, und warnt sie nie in der Öffentlichkeit. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Schlagen Sie sich nicht vor, ein Moderator zu sein** Sehen Sie sich nicht als oberhalb der Community an. You are the community. Und die Community hat dir vertraut, etwas Seltenes zu schützen, das wir alle teilen - ein _, der_ Platz für neue Entwickler willkommen heißt. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Widerspricht nicht anderen Moderatoren** Wenn du mit der Aktion eines Moderators nicht einverstanden bist mit ihnen privat sprechen oder sie im #mod-chat Channel ansprechen. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Sprechen Sie mit anderen Moderatoren** Wir haben nur einen Raum für Moderatoren. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Vorübergehend inaktiv** Wenn du aufgrund von Ferien nicht länger als Moderator aktiv bist, Krankheit oder irgendeinen anderen Grund, vergewissern Sie sich, dass die anderen im #mod-chat Channel informiert werden. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!HINWEIS] Ein Benutzer wird automatisch vom Aussetzen unseres Verhaltenskodexes benachrichtigt. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
                + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- > Fühlen Sie sich frei, die [Style-Anleitung zum Schreiben von Artikeln zu referenzieren](https://github. om/freeCodeCamp/freeCodeCamp#article-title) für dieses Repository auf die korrekte Formatierung eines Artikels, so dass deine Travis CI Build passt. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Verschmelzungskonflikte + +> Wenn PR Konflikte hat, die gelöst werden müssen.1 + +```markdown +Hey @username + +Wir würden gerne in der Lage sein, Ihre Änderungen zusammenzuführen, aber es sieht so aus, als hätten Sie einige Merge-Konflikte. + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- > Wenn Sie mit dem Merge Konfliktprozess nicht vertraut sind Schauen Sie sich GitHubs Leitfaden auf ["Merge Contrat"](https://help an. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Greek/FAQ.md b/docs/i18n/Greek/FAQ.md index be0299b973..e6ef4fed0d 100644 --- a/docs/i18n/Greek/FAQ.md +++ b/docs/i18n/Greek/FAQ.md @@ -1,24 +1,12 @@ -### I am new to GitHub and Open Source, where should I start? +### I am new to GitHub and Open Source. Where should I start? -Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. ### Can I translate freeCodeCamp's curriculum? -We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts. - -We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese. - -**Why are you focusing on Chinese curriculum first?** - -China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n. - -We will focus on Latin America as the demographic region for Portuguese and Spanish. - -We do not have any plans for i18n to any other languages other than the above for the foreseeable future. - -We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. ### How can I report a new bug? @@ -26,19 +14,17 @@ If you think you've found a bug, first read the ["Help I've Found a Bug"](https: If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. ### How can I report a security issue? Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### I am a student, can I or our team work on a feature for academic credits? +### I am a student. Can I work on a feature for academic credits? -Yes, sure. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all. - -We request you to plan ahead and work on a feature with this in mind. +We request you to plan ahead and work on code contributions with this in mind. ### What do these different labels that are tagged on issues mean? @@ -48,42 +34,37 @@ The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_man You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### I found a typo, should I report an issue before I can make a pull request? +### I found a typo. Should I report an issue before I can make a pull request? -For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### How do I get an issue assigned to me? +### How can I get an issue assigned to me? -We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. The first pull request for any issue is preferred to be merged. -2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: - Did you include tests? - Did you catch all usecases? - - Did you ensure all tests pass, and you confirmed everything works locally? -3. Finally, we favor pull requests which follow our recommended guidelines. + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. - Did you follow the pull request checklist? - - Did you name your pull request title meaningfully? - -You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier. - -Follow the guidelines carefully and open a pull request. + - Did you give your pull request a meaningful title? ### I am stuck on something that is not included in this documentation. **Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. **Additional Assistance:** diff --git a/docs/i18n/Greek/_sidebar.md b/docs/i18n/Greek/_sidebar.md index 3b43405b5f..1b5bda2bdc 100644 --- a/docs/i18n/Greek/_sidebar.md +++ b/docs/i18n/Greek/_sidebar.md @@ -1,8 +1,8 @@ - **Getting Started** - - [Introduction](index 'Contribute to the freeCodeCamp.org Community') + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") - [Frequently Asked Questions](FAQ.md) - **Code Contribution** -- - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) - [Open a pull request](how-to-open-a-pull-request.md) - [Work on coding challenges](how-to-work-on-coding-challenges.md) - [Work on video challenges](how-to-help-with-video-challenges.md) @@ -14,18 +14,21 @@ --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- - **Flight Manuals** (for Staff & Mods) - - [Moderator Handbook](flight-manuals/moderator-handbook.md) - - [Reply Templates](flight-manuals/using-reply-templates.md) - - [DevOps Overview](devops.md) - - [Working on Servers](flight-manuals/working-on-virtual-machines.md) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- diff --git a/docs/i18n/Greek/devops.md b/docs/i18n/Greek/devops.md index ff7eec13cb..46fb8b5382 100644 --- a/docs/i18n/Greek/devops.md +++ b/docs/i18n/Greek/devops.md @@ -1,10 +1,10 @@ -# Developer Operations at freeCodeCamp.org +# DevOps Handbook This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. Let us know, if you have feedback or queries, and we will be happy to clarify. -## How do we build, test and deploy the codebase? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. @@ -46,7 +46,7 @@ The build pipeline goes on to trigger a corresponding release pipeline if it com Status of builds and releases are [available here](#build-test-and-deployment-status). -## Triggering a build, test and deployment. +## Trigger a build, test and deploy Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). @@ -218,10 +218,491 @@ There are some known limitations and tradeoffs when using the beta version of th - #### Sign page may look different than production - We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. ## Reporting issues and leaving feedback Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

                https://amplify.nginx.com

                +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Greek/flight-manuals/using-reply-templates.md b/docs/i18n/Greek/flight-manuals/using-reply-templates.md deleted file mode 100644 index ced39a3641..0000000000 --- a/docs/i18n/Greek/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Using Reply Templates - -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. - -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. - -### Thank you - -```markdown -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Thank you and congrats - -> For thanking and encouraging first-time contributors. - -```markdown -Hi @username. Congrats on your first pull request (PR)! 🎉 - -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Build Error - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -Once you resolve these issues, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -``` - -### Syncing Fork - -> When PR is not up to date with the `master` branch. - -``````markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. - -To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. - -Using the command line, you can do this in three easy steps: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. - -Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` - -### Merge Conflicts - -> When PR has merge conflicts that need to be resolved.¹ - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ - -Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 - ---- - -> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` -¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. - -### Duplicate - -> When PR is repetitive or a duplicate. - -```markdown -Hey @username - -It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 - -If you feel you have more to add, please feel free to open up a new PR. - -Thanks again! 😊 - ---- - -> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬 -``` - -### Closing invalid pull requests - -> When PR is invalid. - -```markdown -Hey @username - -You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️ - -Feel free to open another PR though! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Greek/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Greek/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Greek/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

                https://amplify.nginx.com

                -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Greek/how-to-open-a-pull-request.md b/docs/i18n/Greek/how-to-open-a-pull-request.md index ced6082c8a..2729cd6237 100644 --- a/docs/i18n/Greek/how-to-open-a-pull-request.md +++ b/docs/i18n/Greek/how-to-open-a-pull-request.md @@ -1,6 +1,6 @@ # How to open a Pull Request (PR) -A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. ## Prepare a good PR title @@ -72,7 +72,7 @@ Some examples of good PRs titles would be: Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. diff --git a/docs/i18n/Greek/how-to-setup-freecodecamp-locally.md b/docs/i18n/Greek/how-to-setup-freecodecamp-locally.md index 1b5573ce07..619db733cf 100644 --- a/docs/i18n/Greek/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Greek/how-to-setup-freecodecamp-locally.md @@ -1,18 +1,18 @@ Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > > [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare your local machine +### How to prepare your local machine Start by installing the prerequisite software for your operating system. -We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). @@ -147,7 +147,7 @@ Now that you have a local copy of freeCodeCamp, you can follow these instruction If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/pFspAhS), for quick queries. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > @@ -541,6 +541,6 @@ The first time setup can take a while depending on your network bandwidth. Be pa ## Getting Help -If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Greek/how-to-work-on-coding-challenges.md b/docs/i18n/Greek/how-to-work-on-coding-challenges.md index 568913de3b..2b95545e91 100644 --- a/docs/i18n/Greek/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Greek/how-to-work-on-coding-challenges.md @@ -2,11 +2,15 @@ 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, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like 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. -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. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions. +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/). + +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 [our Discord server](https://discord.gg/pFspAhS). With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. @@ -210,12 +214,15 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an Here are specific formatting guidelines for challenge text and examples: - Language keywords go in `` tags. For example, HTML tag names or CSS property names -- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags - References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: -- Use parseInt to convert the variable realNumber into an integer. -- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -See example below: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md The following is an example of code: @@ -229,7 +236,9 @@ The following is an example of code: - Additional information in the form of a note should be formatted `Note: Rest of note text...` - If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. -- Use double quotes where applicable +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests @@ -246,9 +255,81 @@ Here are specific formatting guidelines for the challenge seed code: - Use two spaces to indent - JavaScript statements end with a semicolon - Use double quotes where applicable -- Comments made should have a space between the comment characters and the comment themselves - `// Fix this line` +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
                + { /* Change code below this line */ } + + { /* Change code above this line */ } +

                {this.state.text}

                +
                + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions @@ -261,7 +342,7 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca Take the following steps when adding a new challenge hints/solutions related topic. 1. Start by following the same steps for creating a new topic but review the next for creating the title. -2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". 3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. 4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. diff --git a/docs/i18n/Greek/how-to-work-on-the-docs-theme.md b/docs/i18n/Greek/how-to-work-on-the-docs-theme.md index 8de043746f..bf8bf8f6c9 100644 --- a/docs/i18n/Greek/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Greek/how-to-work-on-the-docs-theme.md @@ -20,21 +20,35 @@ Typically you would not need to change any configuration or build the site local Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` Install `docsify`: -```sh +```console npm install -g docsify ``` and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Greek/how-to-work-on-the-news-theme.md b/docs/i18n/Greek/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Greek/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Greek/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Greek/index.md b/docs/i18n/Greek/index.md index 93e97fae8d..1c4add4ab3 100644 --- a/docs/i18n/Greek/index.md +++ b/docs/i18n/Greek/index.md @@ -1,45 +1,43 @@ -The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. We welcome any and all contributions to the community and are excited to welcome you aboard. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. Happy contributing. You are welcome to: -- Create, update and fix bugs in our [coding challenges](#coding-challenges). +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). - _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Coding Challenges +## Curriculum -All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** ## Learning Platform -Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Broadly, +Broadly, we use -- We have a Node.js based API server. -- A set of React-based client applications. -- A script that we use to evaluate our front-end projects. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. +If you want to help us improve our codebase... -**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts a ready-to-code dev environment for freeCodeCamp in your browser.) +Or you can... -OR - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Greek/moderator-handbook.md b/docs/i18n/Greek/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Greek/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
                + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Hebrew/FAQ.md b/docs/i18n/Hebrew/FAQ.md index be0299b973..e6ef4fed0d 100644 --- a/docs/i18n/Hebrew/FAQ.md +++ b/docs/i18n/Hebrew/FAQ.md @@ -1,24 +1,12 @@ -### I am new to GitHub and Open Source, where should I start? +### I am new to GitHub and Open Source. Where should I start? -Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. ### Can I translate freeCodeCamp's curriculum? -We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts. - -We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese. - -**Why are you focusing on Chinese curriculum first?** - -China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n. - -We will focus on Latin America as the demographic region for Portuguese and Spanish. - -We do not have any plans for i18n to any other languages other than the above for the foreseeable future. - -We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. ### How can I report a new bug? @@ -26,19 +14,17 @@ If you think you've found a bug, first read the ["Help I've Found a Bug"](https: If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. ### How can I report a security issue? Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### I am a student, can I or our team work on a feature for academic credits? +### I am a student. Can I work on a feature for academic credits? -Yes, sure. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all. - -We request you to plan ahead and work on a feature with this in mind. +We request you to plan ahead and work on code contributions with this in mind. ### What do these different labels that are tagged on issues mean? @@ -48,42 +34,37 @@ The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_man You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### I found a typo, should I report an issue before I can make a pull request? +### I found a typo. Should I report an issue before I can make a pull request? -For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### How do I get an issue assigned to me? +### How can I get an issue assigned to me? -We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. The first pull request for any issue is preferred to be merged. -2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: - Did you include tests? - Did you catch all usecases? - - Did you ensure all tests pass, and you confirmed everything works locally? -3. Finally, we favor pull requests which follow our recommended guidelines. + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. - Did you follow the pull request checklist? - - Did you name your pull request title meaningfully? - -You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier. - -Follow the guidelines carefully and open a pull request. + - Did you give your pull request a meaningful title? ### I am stuck on something that is not included in this documentation. **Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. **Additional Assistance:** diff --git a/docs/i18n/Hebrew/_sidebar.md b/docs/i18n/Hebrew/_sidebar.md index 3b43405b5f..1b5bda2bdc 100644 --- a/docs/i18n/Hebrew/_sidebar.md +++ b/docs/i18n/Hebrew/_sidebar.md @@ -1,8 +1,8 @@ - **Getting Started** - - [Introduction](index 'Contribute to the freeCodeCamp.org Community') + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") - [Frequently Asked Questions](FAQ.md) - **Code Contribution** -- - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) - [Open a pull request](how-to-open-a-pull-request.md) - [Work on coding challenges](how-to-work-on-coding-challenges.md) - [Work on video challenges](how-to-help-with-video-challenges.md) @@ -14,18 +14,21 @@ --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- - **Flight Manuals** (for Staff & Mods) - - [Moderator Handbook](flight-manuals/moderator-handbook.md) - - [Reply Templates](flight-manuals/using-reply-templates.md) - - [DevOps Overview](devops.md) - - [Working on Servers](flight-manuals/working-on-virtual-machines.md) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- diff --git a/docs/i18n/Hebrew/devops.md b/docs/i18n/Hebrew/devops.md index ff7eec13cb..46fb8b5382 100644 --- a/docs/i18n/Hebrew/devops.md +++ b/docs/i18n/Hebrew/devops.md @@ -1,10 +1,10 @@ -# Developer Operations at freeCodeCamp.org +# DevOps Handbook This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. Let us know, if you have feedback or queries, and we will be happy to clarify. -## How do we build, test and deploy the codebase? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. @@ -46,7 +46,7 @@ The build pipeline goes on to trigger a corresponding release pipeline if it com Status of builds and releases are [available here](#build-test-and-deployment-status). -## Triggering a build, test and deployment. +## Trigger a build, test and deploy Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). @@ -218,10 +218,491 @@ There are some known limitations and tradeoffs when using the beta version of th - #### Sign page may look different than production - We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. ## Reporting issues and leaving feedback Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

                https://amplify.nginx.com

                +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Hebrew/flight-manuals/using-reply-templates.md b/docs/i18n/Hebrew/flight-manuals/using-reply-templates.md deleted file mode 100644 index ced39a3641..0000000000 --- a/docs/i18n/Hebrew/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Using Reply Templates - -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. - -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. - -### Thank you - -```markdown -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Thank you and congrats - -> For thanking and encouraging first-time contributors. - -```markdown -Hi @username. Congrats on your first pull request (PR)! 🎉 - -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Build Error - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -Once you resolve these issues, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -``` - -### Syncing Fork - -> When PR is not up to date with the `master` branch. - -``````markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. - -To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. - -Using the command line, you can do this in three easy steps: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. - -Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` - -### Merge Conflicts - -> When PR has merge conflicts that need to be resolved.¹ - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ - -Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 - ---- - -> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` -¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. - -### Duplicate - -> When PR is repetitive or a duplicate. - -```markdown -Hey @username - -It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 - -If you feel you have more to add, please feel free to open up a new PR. - -Thanks again! 😊 - ---- - -> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬 -``` - -### Closing invalid pull requests - -> When PR is invalid. - -```markdown -Hey @username - -You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️ - -Feel free to open another PR though! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Hebrew/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Hebrew/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Hebrew/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

                https://amplify.nginx.com

                -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Hebrew/how-to-open-a-pull-request.md b/docs/i18n/Hebrew/how-to-open-a-pull-request.md index ced6082c8a..2729cd6237 100644 --- a/docs/i18n/Hebrew/how-to-open-a-pull-request.md +++ b/docs/i18n/Hebrew/how-to-open-a-pull-request.md @@ -1,6 +1,6 @@ # How to open a Pull Request (PR) -A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. ## Prepare a good PR title @@ -72,7 +72,7 @@ Some examples of good PRs titles would be: Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. diff --git a/docs/i18n/Hebrew/how-to-setup-freecodecamp-locally.md b/docs/i18n/Hebrew/how-to-setup-freecodecamp-locally.md index 1b5573ce07..619db733cf 100644 --- a/docs/i18n/Hebrew/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Hebrew/how-to-setup-freecodecamp-locally.md @@ -1,18 +1,18 @@ Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > > [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare your local machine +### How to prepare your local machine Start by installing the prerequisite software for your operating system. -We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). @@ -147,7 +147,7 @@ Now that you have a local copy of freeCodeCamp, you can follow these instruction If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/pFspAhS), for quick queries. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > @@ -541,6 +541,6 @@ The first time setup can take a while depending on your network bandwidth. Be pa ## Getting Help -If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Hebrew/how-to-work-on-coding-challenges.md b/docs/i18n/Hebrew/how-to-work-on-coding-challenges.md index 568913de3b..2b95545e91 100644 --- a/docs/i18n/Hebrew/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Hebrew/how-to-work-on-coding-challenges.md @@ -2,11 +2,15 @@ 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, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like 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. -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. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions. +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/). + +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 [our Discord server](https://discord.gg/pFspAhS). With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. @@ -210,12 +214,15 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an Here are specific formatting guidelines for challenge text and examples: - Language keywords go in `` tags. For example, HTML tag names or CSS property names -- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags - References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: -- Use parseInt to convert the variable realNumber into an integer. -- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -See example below: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md The following is an example of code: @@ -229,7 +236,9 @@ The following is an example of code: - Additional information in the form of a note should be formatted `Note: Rest of note text...` - If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. -- Use double quotes where applicable +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests @@ -246,9 +255,81 @@ Here are specific formatting guidelines for the challenge seed code: - Use two spaces to indent - JavaScript statements end with a semicolon - Use double quotes where applicable -- Comments made should have a space between the comment characters and the comment themselves - `// Fix this line` +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
                + { /* Change code below this line */ } + + { /* Change code above this line */ } +

                {this.state.text}

                +
                + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions @@ -261,7 +342,7 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca Take the following steps when adding a new challenge hints/solutions related topic. 1. Start by following the same steps for creating a new topic but review the next for creating the title. -2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". 3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. 4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. diff --git a/docs/i18n/Hebrew/how-to-work-on-the-docs-theme.md b/docs/i18n/Hebrew/how-to-work-on-the-docs-theme.md index 8de043746f..bf8bf8f6c9 100644 --- a/docs/i18n/Hebrew/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Hebrew/how-to-work-on-the-docs-theme.md @@ -20,21 +20,35 @@ Typically you would not need to change any configuration or build the site local Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` Install `docsify`: -```sh +```console npm install -g docsify ``` and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Hebrew/how-to-work-on-the-news-theme.md b/docs/i18n/Hebrew/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Hebrew/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Hebrew/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Hebrew/index.md b/docs/i18n/Hebrew/index.md index 93e97fae8d..1c4add4ab3 100644 --- a/docs/i18n/Hebrew/index.md +++ b/docs/i18n/Hebrew/index.md @@ -1,45 +1,43 @@ -The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. We welcome any and all contributions to the community and are excited to welcome you aboard. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. Happy contributing. You are welcome to: -- Create, update and fix bugs in our [coding challenges](#coding-challenges). +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). - _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Coding Challenges +## Curriculum -All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** ## Learning Platform -Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Broadly, +Broadly, we use -- We have a Node.js based API server. -- A set of React-based client applications. -- A script that we use to evaluate our front-end projects. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. +If you want to help us improve our codebase... -**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts a ready-to-code dev environment for freeCodeCamp in your browser.) +Or you can... -OR - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Hebrew/moderator-handbook.md b/docs/i18n/Hebrew/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Hebrew/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
                + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Hindi/FAQ.md b/docs/i18n/Hindi/FAQ.md index be0299b973..e6ef4fed0d 100644 --- a/docs/i18n/Hindi/FAQ.md +++ b/docs/i18n/Hindi/FAQ.md @@ -1,24 +1,12 @@ -### I am new to GitHub and Open Source, where should I start? +### I am new to GitHub and Open Source. Where should I start? -Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. ### Can I translate freeCodeCamp's curriculum? -We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts. - -We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese. - -**Why are you focusing on Chinese curriculum first?** - -China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n. - -We will focus on Latin America as the demographic region for Portuguese and Spanish. - -We do not have any plans for i18n to any other languages other than the above for the foreseeable future. - -We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. ### How can I report a new bug? @@ -26,19 +14,17 @@ If you think you've found a bug, first read the ["Help I've Found a Bug"](https: If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. ### How can I report a security issue? Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### I am a student, can I or our team work on a feature for academic credits? +### I am a student. Can I work on a feature for academic credits? -Yes, sure. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all. - -We request you to plan ahead and work on a feature with this in mind. +We request you to plan ahead and work on code contributions with this in mind. ### What do these different labels that are tagged on issues mean? @@ -48,42 +34,37 @@ The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_man You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### I found a typo, should I report an issue before I can make a pull request? +### I found a typo. Should I report an issue before I can make a pull request? -For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### How do I get an issue assigned to me? +### How can I get an issue assigned to me? -We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. The first pull request for any issue is preferred to be merged. -2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: - Did you include tests? - Did you catch all usecases? - - Did you ensure all tests pass, and you confirmed everything works locally? -3. Finally, we favor pull requests which follow our recommended guidelines. + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. - Did you follow the pull request checklist? - - Did you name your pull request title meaningfully? - -You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier. - -Follow the guidelines carefully and open a pull request. + - Did you give your pull request a meaningful title? ### I am stuck on something that is not included in this documentation. **Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. **Additional Assistance:** diff --git a/docs/i18n/Hindi/_sidebar.md b/docs/i18n/Hindi/_sidebar.md index 3b43405b5f..3bf4ed558c 100644 --- a/docs/i18n/Hindi/_sidebar.md +++ b/docs/i18n/Hindi/_sidebar.md @@ -1,9 +1,9 @@ -- **Getting Started** - - [Introduction](index 'Contribute to the freeCodeCamp.org Community') - - [Frequently Asked Questions](FAQ.md) -- **Code Contribution** -- - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) - - [Open a pull request](how-to-open-a-pull-request.md) +- **यहाँ से प्रारंभ करें** + - [प्रस्तावना](index.md "freeCodeCamp.org समुदाय में योगदान करें") + - [अधिकतर पूछे जाने वाले सवाल](FAQ.md) +- **कोडिंग योगदान** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Pull request कैसे ओपन करें ](how-to-open-a-pull-request.md) - [Work on coding challenges](how-to-work-on-coding-challenges.md) - [Work on video challenges](how-to-help-with-video-challenges.md) - [Work on the news theme](how-to-work-on-the-news-theme.md) @@ -14,18 +14,21 @@ --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- - **Flight Manuals** (for Staff & Mods) - - [Moderator Handbook](flight-manuals/moderator-handbook.md) - - [Reply Templates](flight-manuals/using-reply-templates.md) - - [DevOps Overview](devops.md) - - [Working on Servers](flight-manuals/working-on-virtual-machines.md) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- diff --git a/docs/i18n/Hindi/devops.md b/docs/i18n/Hindi/devops.md index ff7eec13cb..46fb8b5382 100644 --- a/docs/i18n/Hindi/devops.md +++ b/docs/i18n/Hindi/devops.md @@ -1,10 +1,10 @@ -# Developer Operations at freeCodeCamp.org +# DevOps Handbook This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. Let us know, if you have feedback or queries, and we will be happy to clarify. -## How do we build, test and deploy the codebase? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. @@ -46,7 +46,7 @@ The build pipeline goes on to trigger a corresponding release pipeline if it com Status of builds and releases are [available here](#build-test-and-deployment-status). -## Triggering a build, test and deployment. +## Trigger a build, test and deploy Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). @@ -218,10 +218,491 @@ There are some known limitations and tradeoffs when using the beta version of th - #### Sign page may look different than production - We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. ## Reporting issues and leaving feedback Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

                https://amplify.nginx.com

                +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Hindi/flight-manuals/moderator-handbook.md b/docs/i18n/Hindi/flight-manuals/moderator-handbook.md deleted file mode 100644 index 5916fb23de..0000000000 --- a/docs/i18n/Hindi/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# The official freeCodeCamp Moderator Handbook. - -This will help you moderate different places in our community, including: - -- GitHub issues & pull requests -- The forum, chat rooms, Facebook groups, and other online meeting places -- In-person events like study groups, hackathons, and conferences - -**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** - -This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. - -The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. - -> [!NOTE] "With great power comes great responsibility." - Uncle Ben - -As a moderator, temperament is more important than technical skill. - -Listen. Be Helpful. Don't abuse your power. - -freeCodeCamp is an inclusive community, and we need to keep it that way. - -We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderators have the ability to close issues and accept or close pull requests. - -Moderators have two primary responsibilities regarding GitHub: - -1. QA'ing and merging pull requests -2. Evaluating and responding to issues - -## Moderating Pull Requests - -Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. - -### Types of Pull Requests - -1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: - - > Thank you for your pull request. - > - > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. - -2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. - -3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. - -### How to merge or close pull requests - -First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. - -Depending on the type of pull request it is, follow the corresponding rules listed above. - -Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. - -Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. - -If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. - -You should then comment on the pull request, thanking the contributor in your own personal way. - -If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. - -Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". - -There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. - -In both of these situations, you should go ahead and close their pull request and reply with this standard message: - -> Thank you for opening this pull request. -> -> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. -> -> Thank you and happy coding. - -If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. - -## Moderating GitHub Issues - -freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. - -### Types of GitHub Issues - -1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. - > - > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. - > - > Thank you and happy coding. - -2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: - -- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. -- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. - -3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -### Closing Stale, Outdated, Inactive Issues and Pull Requests - -- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. - -- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. - -- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. - -### Other guidelines for Moderators on GitHub - -Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. - -Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. - -If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. - -# Moderating the Forum - -As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. - -Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." - -![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) - -These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. - -### Deleting forum posts - -Forum moderators have the ability to delete user's posts. You should only do this for the following instances: - -1. Someone has posted a pornographic or graphically violent image. -2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -3. Someone has flooded a thread with lots of spam messages. - -### Dealing with spam - -For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." - -You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). - -### Dealing with off-topic conversations - -Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. - -In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. - -Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. - -### Underage Users - -Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. - -```markdown -SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service - -It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. - -Please rejoin once you have reached at least 13 years of age. - -Thank you for understanding. -``` - -# Moderating Facebook - -If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. - -Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. - -But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. - -# Moderating Discord - -Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: - -1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. - -2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** - -- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: - -``` -This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. - -I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: - -1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ -2. Message me back confirming that you have finished reading it. -3. Explain to me why you think I suspended you, and why I should remove your suspension. -``` - -- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: - -``` -Suspended: _@username_ -Reason(s): _Spamming, trolling_ -Evidence: _One or more links to the offending message(s)_ -CoC: _Sent_ -``` - -- A report for removing a suspension should look like: - -``` -I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. -``` - -- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". - -3. **How to ban and/or unban** - -- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. -- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". - -Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. - -4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: - -- Someone has posted a pornographic or graphically violent image. -- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. -- Someone has posted advertisement and / or a self-promoting message / image (social media). - -In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. - -5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. - -6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: - -- Camper posts a wall of code to request help - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. - -- Or if you really have to explain why: - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. - -- For mild and unintentional violations of the code of conduct - - Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ - -7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. - -8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. - -9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! - -10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. - -# How to become a moderator - -If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. - -If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. - -# How we retire inactive moderators - -Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: - -> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. - -> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. - -# How our Contributors room works - -Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. - -Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. - -# Dealing with solicitors - -You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). - -# Dealing with (mental) health inquiries - -You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! - -If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: - -- The user is guaranteed some privacy -- Public chat is no longer disrupted -- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself - -> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! - -If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: - -> Reference medical advice: - -After that, you can remove the Suspension from the user as you normally do. - -Helpful URLs: - -http://www.suicide.org/international-suicide-hotlines.html - -# A note on free speech - -Sometimes people will defend something offensive or incendiary that they said as "free speech." - -This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. - -
                - -Thanks for reading this, and thanks for helping the developer community! diff --git a/docs/i18n/Hindi/flight-manuals/using-reply-templates.md b/docs/i18n/Hindi/flight-manuals/using-reply-templates.md deleted file mode 100644 index ced39a3641..0000000000 --- a/docs/i18n/Hindi/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Using Reply Templates - -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. - -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. - -### Thank you - -```markdown -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Thank you and congrats - -> For thanking and encouraging first-time contributors. - -```markdown -Hi @username. Congrats on your first pull request (PR)! 🎉 - -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Build Error - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -Once you resolve these issues, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -``` - -### Syncing Fork - -> When PR is not up to date with the `master` branch. - -``````markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. - -To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. - -Using the command line, you can do this in three easy steps: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. - -Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` - -### Merge Conflicts - -> When PR has merge conflicts that need to be resolved.¹ - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ - -Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 - ---- - -> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` -¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. - -### Duplicate - -> When PR is repetitive or a duplicate. - -```markdown -Hey @username - -It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 - -If you feel you have more to add, please feel free to open up a new PR. - -Thanks again! 😊 - ---- - -> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬 -``` - -### Closing invalid pull requests - -> When PR is invalid. - -```markdown -Hey @username - -You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️ - -Feel free to open another PR though! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Hindi/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Hindi/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Hindi/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

                https://amplify.nginx.com

                -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Hindi/how-to-open-a-pull-request.md b/docs/i18n/Hindi/how-to-open-a-pull-request.md index ced6082c8a..2729cd6237 100644 --- a/docs/i18n/Hindi/how-to-open-a-pull-request.md +++ b/docs/i18n/Hindi/how-to-open-a-pull-request.md @@ -1,6 +1,6 @@ # How to open a Pull Request (PR) -A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. ## Prepare a good PR title @@ -72,7 +72,7 @@ Some examples of good PRs titles would be: Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. diff --git a/docs/i18n/Hindi/how-to-setup-freecodecamp-locally.md b/docs/i18n/Hindi/how-to-setup-freecodecamp-locally.md index 1b5573ce07..619db733cf 100644 --- a/docs/i18n/Hindi/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Hindi/how-to-setup-freecodecamp-locally.md @@ -1,18 +1,18 @@ Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > > [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare your local machine +### How to prepare your local machine Start by installing the prerequisite software for your operating system. -We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). @@ -147,7 +147,7 @@ Now that you have a local copy of freeCodeCamp, you can follow these instruction If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/pFspAhS), for quick queries. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > @@ -541,6 +541,6 @@ The first time setup can take a while depending on your network bandwidth. Be pa ## Getting Help -If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Hindi/how-to-work-on-coding-challenges.md b/docs/i18n/Hindi/how-to-work-on-coding-challenges.md index 568913de3b..2b95545e91 100644 --- a/docs/i18n/Hindi/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Hindi/how-to-work-on-coding-challenges.md @@ -2,11 +2,15 @@ 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, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like 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. -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. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions. +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/). + +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 [our Discord server](https://discord.gg/pFspAhS). With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. @@ -210,12 +214,15 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an Here are specific formatting guidelines for challenge text and examples: - Language keywords go in `` tags. For example, HTML tag names or CSS property names -- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags - References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: -- Use parseInt to convert the variable realNumber into an integer. -- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -See example below: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md The following is an example of code: @@ -229,7 +236,9 @@ The following is an example of code: - Additional information in the form of a note should be formatted `Note: Rest of note text...` - If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. -- Use double quotes where applicable +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests @@ -246,9 +255,81 @@ Here are specific formatting guidelines for the challenge seed code: - Use two spaces to indent - JavaScript statements end with a semicolon - Use double quotes where applicable -- Comments made should have a space between the comment characters and the comment themselves - `// Fix this line` +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
                + { /* Change code below this line */ } + + { /* Change code above this line */ } +

                {this.state.text}

                +
                + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions @@ -261,7 +342,7 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca Take the following steps when adding a new challenge hints/solutions related topic. 1. Start by following the same steps for creating a new topic but review the next for creating the title. -2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". 3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. 4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. diff --git a/docs/i18n/Hindi/how-to-work-on-the-docs-theme.md b/docs/i18n/Hindi/how-to-work-on-the-docs-theme.md index 8de043746f..af1c7ccc00 100644 --- a/docs/i18n/Hindi/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Hindi/how-to-work-on-the-docs-theme.md @@ -1,14 +1,14 @@ -# How to work on the docs theme +# डॉक्स थीम पर कैसे काम करें -> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. +> [!NOTE] एक त्वरित अनुस्मारक जिसे आपको प्रलेखन साइट के लिए सामग्री पर काम करने के लिए कुछ भी सेटअप करने की आवश्यकता नहीं है। > -> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. +> योगदान दिशानिर्देशों पर काम करने के लिए, आप यहां उपलब्ध `docs` directory[में फ़ाइलों को संपादित या जोड़ सकते हैं](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs)। जब आपके परिवर्तन को मर्ज कर दिया जाता है, तो इसे दस्तावेज साइट पर स्वचालित रूप से उपलब्ध कराया जाएगा। -## Structure of the docs website +## डॉक्स वेबसाइट की संरचना The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: +आमतौर पर आपको स्थानीय रूप से साइट बनाने के लिए किसी भी कॉन्फ़िगरेशन को बदलने की आवश्यकता नहीं होगी। यदि आप रुचि रखते हैं, तो यहां यह बताया गया है कि यह कैसे काम करता है: - The homepage's source for this site is available in [`docs/index.html`](index.html). - We serve this file as a SPA using `docsify` and GitHub Pages. @@ -18,23 +18,37 @@ Typically you would not need to change any configuration or build the site local ## Serving the documentation site locally -Clone freeCodeCamp: +freeCodeCamp को क्लोन करें: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` Install `docsify`: -```sh +```console npm install -g docsify ``` and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### स्थानीय रूप से freeCodeCamp के प्रलेखीकरण साइट को सर्व करें: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Hindi/how-to-work-on-the-news-theme.md b/docs/i18n/Hindi/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Hindi/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Hindi/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Hindi/index.md b/docs/i18n/Hindi/index.md index 93e97fae8d..1c4add4ab3 100644 --- a/docs/i18n/Hindi/index.md +++ b/docs/i18n/Hindi/index.md @@ -1,45 +1,43 @@ -The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. We welcome any and all contributions to the community and are excited to welcome you aboard. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. Happy contributing. You are welcome to: -- Create, update and fix bugs in our [coding challenges](#coding-challenges). +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). - _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Coding Challenges +## Curriculum -All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** ## Learning Platform -Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Broadly, +Broadly, we use -- We have a Node.js based API server. -- A set of React-based client applications. -- A script that we use to evaluate our front-end projects. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. +If you want to help us improve our codebase... -**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts a ready-to-code dev environment for freeCodeCamp in your browser.) +Or you can... -OR - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Hindi/moderator-handbook.md b/docs/i18n/Hindi/moderator-handbook.md new file mode 100644 index 0000000000..13a5f088cd --- /dev/null +++ b/docs/i18n/Hindi/moderator-handbook.md @@ -0,0 +1,456 @@ +# आधिकारिक फ्रीकोडकैंप मॉडरेटर हैंडबुक। + +यह आपको हमारे समुदाय में विभिन्न स्थानों को मॉडरेट करने में मदद करेगा, जिसमें शामिल हैं: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. कुछ मॉडरेटर GitHub पर मदद करते हैं। Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +हमारे पास एक ही आचार संहिता है जो हमारे पूरे समुदाय को नियंत्रित करती है। The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
                + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Hungarian/FAQ.md b/docs/i18n/Hungarian/FAQ.md index be0299b973..e6ef4fed0d 100644 --- a/docs/i18n/Hungarian/FAQ.md +++ b/docs/i18n/Hungarian/FAQ.md @@ -1,24 +1,12 @@ -### I am new to GitHub and Open Source, where should I start? +### I am new to GitHub and Open Source. Where should I start? -Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. ### Can I translate freeCodeCamp's curriculum? -We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts. - -We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese. - -**Why are you focusing on Chinese curriculum first?** - -China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n. - -We will focus on Latin America as the demographic region for Portuguese and Spanish. - -We do not have any plans for i18n to any other languages other than the above for the foreseeable future. - -We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. ### How can I report a new bug? @@ -26,19 +14,17 @@ If you think you've found a bug, first read the ["Help I've Found a Bug"](https: If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. ### How can I report a security issue? Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### I am a student, can I or our team work on a feature for academic credits? +### I am a student. Can I work on a feature for academic credits? -Yes, sure. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all. - -We request you to plan ahead and work on a feature with this in mind. +We request you to plan ahead and work on code contributions with this in mind. ### What do these different labels that are tagged on issues mean? @@ -48,42 +34,37 @@ The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_man You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### I found a typo, should I report an issue before I can make a pull request? +### I found a typo. Should I report an issue before I can make a pull request? -For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### How do I get an issue assigned to me? +### How can I get an issue assigned to me? -We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. The first pull request for any issue is preferred to be merged. -2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: - Did you include tests? - Did you catch all usecases? - - Did you ensure all tests pass, and you confirmed everything works locally? -3. Finally, we favor pull requests which follow our recommended guidelines. + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. - Did you follow the pull request checklist? - - Did you name your pull request title meaningfully? - -You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier. - -Follow the guidelines carefully and open a pull request. + - Did you give your pull request a meaningful title? ### I am stuck on something that is not included in this documentation. **Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. **Additional Assistance:** diff --git a/docs/i18n/Hungarian/_sidebar.md b/docs/i18n/Hungarian/_sidebar.md index 3b43405b5f..1b5bda2bdc 100644 --- a/docs/i18n/Hungarian/_sidebar.md +++ b/docs/i18n/Hungarian/_sidebar.md @@ -1,8 +1,8 @@ - **Getting Started** - - [Introduction](index 'Contribute to the freeCodeCamp.org Community') + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") - [Frequently Asked Questions](FAQ.md) - **Code Contribution** -- - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) - [Open a pull request](how-to-open-a-pull-request.md) - [Work on coding challenges](how-to-work-on-coding-challenges.md) - [Work on video challenges](how-to-help-with-video-challenges.md) @@ -14,18 +14,21 @@ --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- - **Flight Manuals** (for Staff & Mods) - - [Moderator Handbook](flight-manuals/moderator-handbook.md) - - [Reply Templates](flight-manuals/using-reply-templates.md) - - [DevOps Overview](devops.md) - - [Working on Servers](flight-manuals/working-on-virtual-machines.md) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- diff --git a/docs/i18n/Hungarian/devops.md b/docs/i18n/Hungarian/devops.md index ff7eec13cb..46fb8b5382 100644 --- a/docs/i18n/Hungarian/devops.md +++ b/docs/i18n/Hungarian/devops.md @@ -1,10 +1,10 @@ -# Developer Operations at freeCodeCamp.org +# DevOps Handbook This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. Let us know, if you have feedback or queries, and we will be happy to clarify. -## How do we build, test and deploy the codebase? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. @@ -46,7 +46,7 @@ The build pipeline goes on to trigger a corresponding release pipeline if it com Status of builds and releases are [available here](#build-test-and-deployment-status). -## Triggering a build, test and deployment. +## Trigger a build, test and deploy Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). @@ -218,10 +218,491 @@ There are some known limitations and tradeoffs when using the beta version of th - #### Sign page may look different than production - We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. ## Reporting issues and leaving feedback Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

                https://amplify.nginx.com

                +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Hungarian/flight-manuals/moderator-handbook.md b/docs/i18n/Hungarian/flight-manuals/moderator-handbook.md deleted file mode 100644 index 5916fb23de..0000000000 --- a/docs/i18n/Hungarian/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# The official freeCodeCamp Moderator Handbook. - -This will help you moderate different places in our community, including: - -- GitHub issues & pull requests -- The forum, chat rooms, Facebook groups, and other online meeting places -- In-person events like study groups, hackathons, and conferences - -**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** - -This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. - -The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. - -> [!NOTE] "With great power comes great responsibility." - Uncle Ben - -As a moderator, temperament is more important than technical skill. - -Listen. Be Helpful. Don't abuse your power. - -freeCodeCamp is an inclusive community, and we need to keep it that way. - -We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderators have the ability to close issues and accept or close pull requests. - -Moderators have two primary responsibilities regarding GitHub: - -1. QA'ing and merging pull requests -2. Evaluating and responding to issues - -## Moderating Pull Requests - -Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. - -### Types of Pull Requests - -1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: - - > Thank you for your pull request. - > - > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. - -2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. - -3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. - -### How to merge or close pull requests - -First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. - -Depending on the type of pull request it is, follow the corresponding rules listed above. - -Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. - -Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. - -If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. - -You should then comment on the pull request, thanking the contributor in your own personal way. - -If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. - -Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". - -There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. - -In both of these situations, you should go ahead and close their pull request and reply with this standard message: - -> Thank you for opening this pull request. -> -> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. -> -> Thank you and happy coding. - -If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. - -## Moderating GitHub Issues - -freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. - -### Types of GitHub Issues - -1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. - > - > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. - > - > Thank you and happy coding. - -2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: - -- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. -- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. - -3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -### Closing Stale, Outdated, Inactive Issues and Pull Requests - -- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. - -- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. - -- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. - -### Other guidelines for Moderators on GitHub - -Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. - -Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. - -If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. - -# Moderating the Forum - -As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. - -Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." - -![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) - -These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. - -### Deleting forum posts - -Forum moderators have the ability to delete user's posts. You should only do this for the following instances: - -1. Someone has posted a pornographic or graphically violent image. -2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -3. Someone has flooded a thread with lots of spam messages. - -### Dealing with spam - -For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." - -You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). - -### Dealing with off-topic conversations - -Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. - -In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. - -Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. - -### Underage Users - -Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. - -```markdown -SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service - -It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. - -Please rejoin once you have reached at least 13 years of age. - -Thank you for understanding. -``` - -# Moderating Facebook - -If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. - -Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. - -But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. - -# Moderating Discord - -Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: - -1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. - -2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** - -- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: - -``` -This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. - -I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: - -1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ -2. Message me back confirming that you have finished reading it. -3. Explain to me why you think I suspended you, and why I should remove your suspension. -``` - -- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: - -``` -Suspended: _@username_ -Reason(s): _Spamming, trolling_ -Evidence: _One or more links to the offending message(s)_ -CoC: _Sent_ -``` - -- A report for removing a suspension should look like: - -``` -I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. -``` - -- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". - -3. **How to ban and/or unban** - -- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. -- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". - -Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. - -4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: - -- Someone has posted a pornographic or graphically violent image. -- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. -- Someone has posted advertisement and / or a self-promoting message / image (social media). - -In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. - -5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. - -6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: - -- Camper posts a wall of code to request help - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. - -- Or if you really have to explain why: - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. - -- For mild and unintentional violations of the code of conduct - - Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ - -7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. - -8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. - -9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! - -10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. - -# How to become a moderator - -If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. - -If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. - -# How we retire inactive moderators - -Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: - -> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. - -> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. - -# How our Contributors room works - -Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. - -Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. - -# Dealing with solicitors - -You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). - -# Dealing with (mental) health inquiries - -You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! - -If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: - -- The user is guaranteed some privacy -- Public chat is no longer disrupted -- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself - -> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! - -If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: - -> Reference medical advice: - -After that, you can remove the Suspension from the user as you normally do. - -Helpful URLs: - -http://www.suicide.org/international-suicide-hotlines.html - -# A note on free speech - -Sometimes people will defend something offensive or incendiary that they said as "free speech." - -This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. - -
                - -Thanks for reading this, and thanks for helping the developer community! diff --git a/docs/i18n/Hungarian/flight-manuals/using-reply-templates.md b/docs/i18n/Hungarian/flight-manuals/using-reply-templates.md deleted file mode 100644 index ced39a3641..0000000000 --- a/docs/i18n/Hungarian/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Using Reply Templates - -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. - -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. - -### Thank you - -```markdown -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Thank you and congrats - -> For thanking and encouraging first-time contributors. - -```markdown -Hi @username. Congrats on your first pull request (PR)! 🎉 - -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Build Error - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -Once you resolve these issues, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -``` - -### Syncing Fork - -> When PR is not up to date with the `master` branch. - -``````markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. - -To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. - -Using the command line, you can do this in three easy steps: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. - -Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` - -### Merge Conflicts - -> When PR has merge conflicts that need to be resolved.¹ - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ - -Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 - ---- - -> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` -¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. - -### Duplicate - -> When PR is repetitive or a duplicate. - -```markdown -Hey @username - -It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 - -If you feel you have more to add, please feel free to open up a new PR. - -Thanks again! 😊 - ---- - -> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬 -``` - -### Closing invalid pull requests - -> When PR is invalid. - -```markdown -Hey @username - -You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️ - -Feel free to open another PR though! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Hungarian/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Hungarian/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Hungarian/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

                https://amplify.nginx.com

                -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Hungarian/how-to-open-a-pull-request.md b/docs/i18n/Hungarian/how-to-open-a-pull-request.md index ced6082c8a..2729cd6237 100644 --- a/docs/i18n/Hungarian/how-to-open-a-pull-request.md +++ b/docs/i18n/Hungarian/how-to-open-a-pull-request.md @@ -1,6 +1,6 @@ # How to open a Pull Request (PR) -A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. ## Prepare a good PR title @@ -72,7 +72,7 @@ Some examples of good PRs titles would be: Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. diff --git a/docs/i18n/Hungarian/how-to-setup-freecodecamp-locally.md b/docs/i18n/Hungarian/how-to-setup-freecodecamp-locally.md index 1b5573ce07..619db733cf 100644 --- a/docs/i18n/Hungarian/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Hungarian/how-to-setup-freecodecamp-locally.md @@ -1,18 +1,18 @@ Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > > [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare your local machine +### How to prepare your local machine Start by installing the prerequisite software for your operating system. -We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). @@ -147,7 +147,7 @@ Now that you have a local copy of freeCodeCamp, you can follow these instruction If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/pFspAhS), for quick queries. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > @@ -541,6 +541,6 @@ The first time setup can take a while depending on your network bandwidth. Be pa ## Getting Help -If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Hungarian/how-to-work-on-coding-challenges.md b/docs/i18n/Hungarian/how-to-work-on-coding-challenges.md index 568913de3b..2b95545e91 100644 --- a/docs/i18n/Hungarian/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Hungarian/how-to-work-on-coding-challenges.md @@ -2,11 +2,15 @@ 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, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like 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. -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. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions. +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/). + +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 [our Discord server](https://discord.gg/pFspAhS). With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. @@ -210,12 +214,15 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an Here are specific formatting guidelines for challenge text and examples: - Language keywords go in `` tags. For example, HTML tag names or CSS property names -- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags - References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: -- Use parseInt to convert the variable realNumber into an integer. -- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -See example below: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md The following is an example of code: @@ -229,7 +236,9 @@ The following is an example of code: - Additional information in the form of a note should be formatted `Note: Rest of note text...` - If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. -- Use double quotes where applicable +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests @@ -246,9 +255,81 @@ Here are specific formatting guidelines for the challenge seed code: - Use two spaces to indent - JavaScript statements end with a semicolon - Use double quotes where applicable -- Comments made should have a space between the comment characters and the comment themselves - `// Fix this line` +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
                + { /* Change code below this line */ } + + { /* Change code above this line */ } +

                {this.state.text}

                +
                + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions @@ -261,7 +342,7 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca Take the following steps when adding a new challenge hints/solutions related topic. 1. Start by following the same steps for creating a new topic but review the next for creating the title. -2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". 3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. 4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. diff --git a/docs/i18n/Hungarian/how-to-work-on-the-docs-theme.md b/docs/i18n/Hungarian/how-to-work-on-the-docs-theme.md index 8de043746f..bf8bf8f6c9 100644 --- a/docs/i18n/Hungarian/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Hungarian/how-to-work-on-the-docs-theme.md @@ -20,21 +20,35 @@ Typically you would not need to change any configuration or build the site local Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` Install `docsify`: -```sh +```console npm install -g docsify ``` and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Hungarian/how-to-work-on-the-news-theme.md b/docs/i18n/Hungarian/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Hungarian/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Hungarian/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Hungarian/index.md b/docs/i18n/Hungarian/index.md index 93e97fae8d..1c4add4ab3 100644 --- a/docs/i18n/Hungarian/index.md +++ b/docs/i18n/Hungarian/index.md @@ -1,45 +1,43 @@ -The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. We welcome any and all contributions to the community and are excited to welcome you aboard. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. Happy contributing. You are welcome to: -- Create, update and fix bugs in our [coding challenges](#coding-challenges). +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). - _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Coding Challenges +## Curriculum -All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** ## Learning Platform -Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Broadly, +Broadly, we use -- We have a Node.js based API server. -- A set of React-based client applications. -- A script that we use to evaluate our front-end projects. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. +If you want to help us improve our codebase... -**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts a ready-to-code dev environment for freeCodeCamp in your browser.) +Or you can... -OR - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Hungarian/moderator-handbook.md b/docs/i18n/Hungarian/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Hungarian/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
                + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Italian/FAQ.md b/docs/i18n/Italian/FAQ.md index 0735f33b93..e6ef4fed0d 100644 --- a/docs/i18n/Italian/FAQ.md +++ b/docs/i18n/Italian/FAQ.md @@ -1,95 +1,76 @@ -### Sono nuovo di GitHub e Open Source, da dove dovrei iniziare? +### I am new to GitHub and Open Source. Where should I start? -Leggi la nostra ["Come contribuire alla Guida Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). È una risorsa compresiva di progetti e linee guida amichevoli per il primo timer. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Posso tradurre il curriculum di freeCodeCamp? +### Can I translate freeCodeCamp's curriculum? -Inizieremo gli sforzi di localizzazione su freeCodeCamp a partire dal **cinese** prima. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Intendiamo rendere il curriculum disponibile in più lingue, ma non possiamo ancora impegnarci per nessuna scadenza. Diversi limiti operativi, come il personale, i contributori attivi e i costi dei server, svolgono un ruolo nella guida degli sforzi di internazionalizzazione (i18n). +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Intendiamo iniziare gli sforzi di i18n in queste lingue: arabo, portoghese, Russo e spagnolo (in nessun ordine particolare) dopo aver pubblicato il curriculum in cinese. +### How can I report a new bug? -**Perché ti stai concentrando sul curriculum cinese?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -La Cina è la più grande regione demografica, nel nostro pubblico non nativo di lingua inglese. Attualmente, abbiamo centinaia di migliaia di utenti che utilizzano una vecchia versione della piattaforma. Concentrandosi sul curriculum cinese ci darà una stima della logistica coinvolta nel i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Ci concentreremo sull'America latina come regione demografica per il portoghese e lo spagnolo. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -Non abbiamo alcun piano per i18n ad altre lingue diverse da quelle di cui sopra per il prossimo futuro. +### How can I report a security issue? -Non vi incoraggiamo a lavorare su i18n nelle lingue di cui sopra. Possiamo accettare le richieste di pull, senza alcuna aspettativa di alcuna tempistica su dispiegamenti. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Come posso segnalare un nuovo bug? +### I am a student. Can I work on a feature for academic credits? -Se pensi di aver trovato un bug, leggi l'articolo ["Aiuta a trovare un bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) e segui le sue istruzioni. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Se sei sicuro che sia un nuovo bug, vai avanti e crea un nuovo problema GitHub. Assicurati di includere il maggior numero di informazioni possibile in modo da poter riprodurre il bug. Abbiamo un modello di problema predefinito per aiutarti attraverso questo. +We request you to plan ahead and work on code contributions with this in mind. -Si prega di notare che tutti i problemi che cercano aiuto di codifica su una sfida saranno chiusi. Il tracker dei problemi è rigorosamente per le questioni correlate al codebase e le discussioni. In caso di dubbio, si dovrebbe [cercare assistenza sul forum](https://forum.freecodecamp.org) prima di fare un rapporto. +### What do these different labels that are tagged on issues mean? -### Come posso segnalare un problema di sicurezza? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Non creare problemi GitHub per problemi di sicurezza. Invece, si prega di inviare una e-mail a `security@freecodecamp.org` e lo esamineremo immediatamente. +### Where do I start if I want to work on an issue? -### Sono uno studente, posso io o il nostro team lavorare su una caratteristica per i crediti accademici? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Sì, certo. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -Mentre siamo aperti a tutti i contributi, si prega di notare che non siamo in grado di impegnarsi in qualsiasi timeline che possono essere un requisito presso il vostro college o università. Riceviamo molte richieste e contributi di codice da parte di sviluppatori volontari, e rispettiamo il loro tempo e sforzi. Non saremo in grado di dare alcuna particolare attenzione PR per essere equo a tutti. +### I found a typo. Should I report an issue before I can make a pull request? -Vi chiediamo di pianificare il futuro e di lavorare su una funzione con questo in mente. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Cosa significano queste diverse etichette che vengono etichettate sui problemi? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -I manutentori del codice [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) problemi e richieste di pull in base alla loro priorità, gravità e altri fattori. Puoi [trovare un glossario completo dei loro significati qui](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Da dove comincio se voglio lavorare su un problema? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Dovresti passare attraverso [**`aiuto desiderato`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) o [**`primi timer solo`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) problemi per una rapida panoramica di ciò su cui puoi lavorare. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`help wanted`** issues are up to grabs, and you do not need to seek permission before working on them. Tuttavia, i problemi con l'etichetta **`del primo timer solo`** sono riservati a persone che non hanno precedentemente contribuito al codice freeCodeCamp. Se queste questioni non sono chiare su ciò che è necessario fare, sentitevi liberi di porre domande nei commenti. +### I am stuck on something that is not included in this documentation. -### Ho trovato un tipo, dovrei segnalare un problema prima di poter fare una richiesta di richiamo? - -Per gli errori di battitura e altre modifiche di formulazione, è possibile aprire direttamente le richieste di pull senza creare prima un problema. Le questioni sono più importanti per discutere problemi più ampi connessi con il codice o gli aspetti strutturali del curriculum. - -Tuttavia, si prega di menzionare dettagli, contesto ecc nell'area di descrizione della richiesta di pull per aiutarci a capire e rivedere il vostro contributo anche per modifiche minori. - -### Come posso ottenere un problema assegnato a me? - -Di solito non assegniamo problemi a nessuno diverso dai contributori di lunga data per evitare ambigui no-show. Invece, seguiamo la seguente politica per essere equo per tutti: - -1. La prima pull request per qualsiasi problema è preferibile essere unita. -2. Nel caso di richieste di richiamo multiple per lo stesso problema, diamo priorità alla qualità del codice nelle richieste di richiamo. - - Hai incluso dei test? - - Avete preso tutte le usecases? - - Hai assicurato che tutti i test passano, e hai confermato tutto funziona localmente? -3. Infine, siamo favorevoli alle richieste di pull che seguono le nostre linee guida consigliate. - - Hai seguito la checklist pull request? - - Hai nominato in modo significativo il tuo titolo pull request? - -Non hai bisogno di alcun permesso per i problemi che sono marcati `aiuto voluto` o `primi timer solo` come spiegato in precedenza. - -Seguire attentamente le linee guida e aprire una richiesta di richiamo. - -### Sono bloccato su qualcosa che non è incluso in questa documentazione. - -**Sentitevi liberi di chiedere aiuto in:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Siamo entusiasti di aiutarvi a contribuire a uno qualsiasi degli argomenti su cui vorreste lavorare. Sentitevi liberi di porci domande sui relativi thread tema, e saremo lieti di chiarire. Assicurati di cercare la tua interrogazione prima di pubblicarne una nuova. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Sii gentile e paziente. La nostra comunità di volontari e moderatori è sempre intorno per guidarvi attraverso le vostre domande. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Assistenza Supplementare:** +**Additional Assistance:** -Se avete domande sulla pila, architettura del codebase, sentitevi liberi di contattare il nostro staff dev team: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Personale | Invia messaggio sul Forum | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | | Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | @@ -98,4 +79,4 @@ Se avete domande sulla pila, architettura del codebase, sentitevi liberi di cont | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | | Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Puoi inviare un'email al nostro staff di sviluppatori su: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Italian/_sidebar.md b/docs/i18n/Italian/_sidebar.md index 39f627bf36..1b5bda2bdc 100644 --- a/docs/i18n/Italian/_sidebar.md +++ b/docs/i18n/Italian/_sidebar.md @@ -1,36 +1,39 @@ -- **Per Iniziare** - - [Introduzione](index 'Contribuire alla comunità freeCodeCamp.org') - - [Domande Frequenti](FAQ.md) -- **Contributo Al Codice** -- - [Configura il freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md) - - [Apri una pull request](how-to-open-a-pull-request.md) - - [Lavori sulle sfide della codifica](how-to-work-on-coding-challenges.md) - - [Lavorare sulle sfide del video](how-to-help-with-video-challenges.md) - - [Lavori sul tema delle notizie](how-to-work-on-the-news-theme.md) - - [Lavora sul tema dei documenti](how-to-work-on-the-docs-theme.md) -- **Guide Opzionali** - - [Cattura le email in uscita localmente](how-to-catch-outgoing-emails-locally.md) - - [Impostare freeCodeCamp su WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Manuali di volo** (per il personale & Mod) - - [Manuale Moderatore](flight-manuals/moderator-handbook.md) - - [Modelli Di Risposta](flight-manuals/using-reply-templates.md) - - [Panoramica DevOps](devops.md) - - [Lavorare sui server](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **La Nostra Community** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Forum Discorso**](https://freecodecamp.org/forum/c/contributors) - - [**Chat Gitter**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Italian/devops.md b/docs/i18n/Italian/devops.md index 6d303ff97c..46fb8b5382 100644 --- a/docs/i18n/Italian/devops.md +++ b/docs/i18n/Italian/devops.md @@ -1,75 +1,75 @@ -# Operazioni sviluppatore su freeCodeCamp.org +# DevOps Handbook -Questa guida ti aiuterà a capire il nostro stack di infrastrutture e come gestiamo le nostre piattaforme. Anche se questa guida non ha dettagli esaustivi per tutte le operazioni, potrebbe essere utilizzato come riferimento per la vostra comprensione dei sistemi. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Facciamo sapere, se avete feedback o domande, e saremo felici di chiarire. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Come costruiamo, testiamo e distribuiamo il codebase? +# Flight Manual - Code deployments -Questo repository è continuamente costruito, testato e distribuito su **insiemi separati di infrastrutture (Servers, Databases, CDN, ecc.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Si tratta di tre fasi da seguire in sequenza: +This involves three steps to be followed in sequence: -1. Le nuove modifiche (correzioni e funzionalità) sono unite nel nostro ramo di sviluppo primario (`master`) tramite richieste di pull. -2. Queste modifiche sono eseguite attraverso una serie di test automatizzati. -3. Una volta che i test passano, rilasciamo i cambiamenti (o aggiornarli se necessario) alle distribuzioni sulla nostra infrastruttura. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Costruire il codebase - Mapping Git Branches to Deployments. +#### Building the codebase - Mapping Git Branches to Deployments. -Tipicamente, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (il ramo di sviluppo predefinito) è unito nel ramo [`produzione-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) una volta al giorno e viene rilasciato in un'infrastruttura isolata. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Questa è una release intermedia per i nostri sviluppatori e collaboratori volontari. E 'anche noto come il nostro "staging" o "beta" rilascio. +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -È identico al nostro ambiente di produzione live a `freeCodeCamp.org`, diverso da quello che utilizza un set separato di database, server, web-proxies, ecc. Questo isolamento ci permette di testare lo sviluppo continuo e le caratteristiche in una "produzione" come scenario, senza influenzare gli utenti regolari delle principali piattaforme di freeCodeCamp.org. Questo isolamento ci permette di testare lo sviluppo continuo e le caratteristiche in una "produzione" come scenario, senza influenzare gli utenti regolari delle principali piattaforme di freeCodeCamp.org. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Una volta che il team di sviluppatori [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) è soddisfatto dei cambiamenti sulla piattaforma di stadio, questi cambiamenti vengono spostati ogni pochi giorni nel ramo [`della produzione-corrente`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current). +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -Questa è la versione finale che sposta le modifiche alle nostre piattaforme di produzione su freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Testare le modifiche - Integrazione e Test di accettazione dell'utente. +#### Testing changes - Integration and User Acceptance Testing. -Adottiamo vari livelli di integrazione e test di accettazione per verificare la qualità del codice. Tutti i nostri test sono effettuati attraverso software come [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) e [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Abbiamo test unitari per testare le nostre soluzioni di sfida, API server e interfacce utente client. Questi ci aiutano a testare l'integrazione tra i diversi componenti. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!NOTA] Siamo anche in fase di scrittura di test utente finale che aiuterà a replicare scenari del mondo reale come l'aggiornamento di una e-mail o una chiamata all'API o servizi di terze parti. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Insieme questi test aiutano a evitare che i problemi si ripetano e assicurati di non introdurre un bug mentre si lavora su un altro bug o una funzione. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. #### Deploying Changes - Pushing changes to servers. -Abbiamo configurato un software di consegna continua per inviare modifiche ai nostri server di sviluppo e produzione. +We have configured continuous delivery software to push changes to our development and production servers. -Una volta che le modifiche sono spinte ai rami di rilascio protetti, una pipeline di build viene attivata automaticamente per il ramo. Le condotte di costruzione sono responsabili della costruzione di manufatti e di conservarli in un deposito frigorifero per un uso successivo. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -La pipeline di build continua ad attivare una corrispondente pipeline di rilascio se completa un'esecuzione riuscita. Le pipeline di rilascio sono responsabili della raccolta degli artefatti di costruzione, spostandoli sui server e andando dal vivo. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Lo stato delle build e delle release sono [disponibili qui](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Attivando una costruzione, un test e una distribuzione. +## Trigger a build, test and deploy -Attualmente, solo i membri del team di sviluppo possono spingere ai rami di produzione. Le modifiche alle filiali `production-*` possono atterrare solo tramite la fusione veloce a [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!NOTA] Nei prossimi giorni miglioreremmo questo flusso da fare tramite pull-requests, per una migliore gestione degli accessi e trasparenza. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Invio delle modifiche alle applicazioni di stadio. +### Pushing changes to Staging Applications. -1. Configurare correttamente i tuoi remoti. +1. Configure your remotes correctly. ```sh git remote -v ``` - **Risultati:** + **Results:** ``` - origin git@github.com:raisedadead/freeCodeCamp.git (fetch) - origin git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Assicurati che il tuo ramo `master` sia incontaminato e sincronizzato con quello a monte. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master @@ -77,24 +77,24 @@ Attualmente, solo i membri del team di sviluppo possono spingere ai rami di prod git reset --hard upstream/master ``` -3. Controllare che la Travis CI stia passando sul ramo `master` per a monte. +3. Check that the Travis CI is passing on the `master` branch for upstream. - I [test di integrazione continua](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) dovrebbero essere verdi e PASSING per la sezione `master`. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
                Controllo dello stato su Travis CI (screenshot) +
                Checking status on Travis CI (screenshot)
                - ![Controlla lo stato di compilazione su Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
                - Se questo non funziona, dovresti fermarti e investigare gli errori. + If this is failing you should stop and investigate the errors. -4. Confermare di essere in grado di costruire il repository localmente. +4. Confirm that you are able to build the repository locally. ``` npm run clean-and-develop ``` -5. Sposta le modifiche da `master` a `production-staging` tramite una fusione veloce in avanti +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` git checkout production-staging @@ -102,26 +102,26 @@ Attualmente, solo i membri del team di sviluppo possono spingere ai rami di prod git push upstream ``` - > [!NOTA] Non sarai in grado di forzare il push e se hai riscritto la cronologia in ogni caso questi comandi si erreranno. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Se lo fanno, si può aver fatto qualcosa in modo errato e si dovrebbe solo ricominciare da capo. + > If they do, you may have done something incorrectly and you should just start over. -I passaggi precedenti attiveranno automaticamente un'esecuzione sulla pipeline di generazione per il ramo `production-staging`. Una volta completata la generazione, gli artefatti vengono salvati come file `.zip` in un archivio frigorifero da recuperare e utilizzare in seguito. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -La pipeline di rilascio viene attivata automaticamente quando un nuovo artefatto è disponibile dalla pipeline di generazione connessa. Per le piattaforme di staging questo processo non comporta l'approvazione manuale e gli artefatti vengono spinti al client CDN e server API. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> :Stime] Tipicamente la build run impiega ~20-25 minuti per completare seguita dalla release run che impiega ~15-20 minuti per il client, e ~5-10 minuti per l'API di essere disponibile dal vivo. Dal push del codice per essere in diretta sulle piattaforme di staging l'intero processo richiede **~ 35-45 minuti** in totale. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Inviare le modifiche alle applicazioni di produzione. +### Pushing changes to Production Applications. -Il processo è per lo più lo stesso delle piattaforme di stadio, con alcuni controlli aggiuntivi in atto. Questo è solo per essere sicuri, non rompiamo nulla su freeCodeCamp.org che può vedere centinaia di utenti che lo utilizzano in qualsiasi momento. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| NON eseguire questi comandi a meno che non sia stato verificato che tutto funziona sulla piattaforma di stadio. Non si dovrebbe bypassare o saltare alcun test di staging prima di procedere ulteriormente. | -|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Assicurati che il tuo ramo `production-staging` sia incontaminato e sincronizzato con il ramo upstream. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh git checkout production-staging @@ -129,7 +129,7 @@ Il processo è per lo più lo stesso delle piattaforme di stadio, con alcuni con git reset --hard upstream/production-staging ``` -2. Sposta le modifiche da `production-staging` a `production-current` tramite una fusione veloce +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` git checkout production-current @@ -137,91 +137,572 @@ Il processo è per lo più lo stesso delle piattaforme di stadio, con alcuni con git push upstream ``` - > [!NOTA] Non sarai in grado di forzare il push e se hai riscritto la cronologia in ogni caso questi comandi si erreranno. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Se lo fanno, si può aver fatto qualcosa in modo errato e si dovrebbe solo ricominciare da capo. + > If they do, you may have done something incorrectly and you should just start over. -I passaggi precedenti attiveranno automaticamente un'esecuzione sulla pipeline di generazione per il ramo `produzione-corrente`. Una volta che un artefatto di build è pronto, attiverà una corsa sulla pipeline di rilascio. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> :Stime] Tipicamente la build run richiede ~20-25 minuti per completare. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Misure supplementari per l'azione del personale** +**Additional Steps for Staff Action** -Una release run viene attivata, i membri del team dello staff dello sviluppatore riceveranno un'e-mail di intervento manuale automatizzata. Possono _approvare_ o _rifiutare_ l'esecuzione del rilascio. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Se le modifiche funzionano bene e sono state testate sulla piattaforma di stadio, allora può essere approvato. L’approvazione deve essere rilasciata entro 4 ore dall’attivazione del rilascio prima di essere respinta automaticamente. Uno staff può riattivare il rilascio manualmente per le corse rifiutate, o attendere il prossimo ciclo di rilascio. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Per uso del personale: +For staff use: -| Controlla la tua email per un link diretto o [vai alla dashboard di rilascio](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) dopo che la build run è completata. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Una volta che uno dei membri dello staff approva un rilascio, la pipeline spingerà le modifiche dal vivo ai server CDN e API di produzione di freeCodeCamp.org. Di solito prendono ~15-20 minuti per il cliente, e ~5 minuti per i server API per essere disponibili dal vivo. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> label:Estimates] L'esecuzione del rilascio richiede tipicamente ~15-20 minuti per ogni istanza client e ~5-10 minuti per ogni istanza API per essere disponibile dal vivo. Dal codice push per essere in diretta sulle piattaforme di produzione l'intero processo richiede **~ 90-120 minuti** in totale (senza contare il tempo di attesa per l'approvazione del personale). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Stato di compilazione, test e distribuzione +## Build, Test and Deployment Status -Ecco lo stato attuale di test, build e deployment del codebase. +Here is the current test, build and deployment status of the codebase. -| Tipo | Ramo | Stato | Dashboard | -|:-------------------- |:--------------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------------------- | -| Ci Prove | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Stato Build Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Vai alla dashboard di stato](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Ci Prove | [`produzione-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Stato Build Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Vai alla dashboard di stato](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Costruisci Pipeline | [`produzione-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Stato Build](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Vai alla dashboard di stato](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Gasdotto Di Rilascio | [`produzione-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Vai alla dashboard di stato](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| Ci Prove | [`produzione-corrente`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Stato Build Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Vai alla dashboard di stato](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Costruisci Pipeline | [`produzione-corrente`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Stato Build](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Vai alla dashboard di stato](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Gasdotto Di Rilascio | [`produzione-corrente`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Vai alla dashboard di stato](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Accesso anticipato e beta test +## Early access and beta testing -Vi diamo il benvenuto a testare queste versioni in una modalità **"beta testing"** e ottenere l'accesso anticipato alle funzionalità imminenti delle piattaforme. A volte queste funzionalità/modifiche sono indicate come **successivo, beta, staging,** ecc. in modo intercambiabile. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -I tuoi contributi tramite feedback e segnalazioni di segnalazioni ci aiuteranno a realizzare le piattaforme di produzione su `freeCodeCamp. rg` more **resilient**, **consistent** and **stable** for everyone. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Vi ringraziamo per aver segnalato i bug che incontrate e aiutate a migliorare il freeCodeCamp.org. Sei roccioso! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Identificare la prossima versione delle piattaforme +### Identifying the upcoming version of the platforms -Attualmente una versione beta test pubblica è disponibile al seguente indirizzo: +Currently a public beta testing version is available at:

                freecodecamp.dev

                -> [!NOTA] Il nome del dominio è diverso da **`freeCodeCamp.org`**. Questo è intenzionale per prevenire l'indicizzazione dei motori di ricerca ed evitare confusione per gli utenti regolari della piattaforma. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identificare la versione attuale delle piattaforme +### Identifying the current version of the platforms -**La versione attuale della piattaforma è sempre disponibile su [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -Il dev-team unisce i cambiamenti dal branch `production-staging` a `production-current` quando cambiano il rilascio. Il commit superiore dovrebbe essere quello che si vede dal vivo sul sito. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -È possibile identificare la versione esatta distribuita visitando i registri di compilazione e distribuzione disponibili nella sezione stato. In alternativa puoi anche inserirci nella chat room [dei collaboratori](https://gitter.im/FreeCodeCamp/Contributors) per una conferma. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Limitazioni Noto +### Known Limitations -Ci sono alcune limitazioni e compromessi noti quando si utilizza la versione beta della piattaforma. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### Tutti i dati / progressi personali su queste piattaforme beta `NON saranno salvati o riportati` alla produzione. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Gli utenti nella versione beta avranno un account separato dalla produzione.** La versione beta utilizza un database fisicamente separato dalla produzione. Questo ci dà la capacità di prevenire qualsiasi perdita accidentale di dati o modifiche. Il team di dev può eliminare il database su questa versione beta se necessario. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Non ci sono garanzie sull'uptime e l'affidabilità delle piattaforme beta. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - La diffusione dovrebbe essere frequente e in iterazioni rapide, talvolta più volte al giorno. Di conseguenza ci saranno tempi di inattività inaspettati a volte o funzionalità rotte sulla versione beta. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Non inviare utenti regolari a questo sito come misura per confermare una correzione +- #### Do not send regular users to this site as a measure of confirming a fix - Il sito beta è ed è sempre stato quello di aumentare lo sviluppo locale e testing, nient'altro. Non è una promessa di ciò che sta arrivando, ma un assaggio di ciò che si sta lavorando. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### La pagina di firma può sembrare diversa dalla produzione +- #### Sign page may look different than production - Usiamo un inquilino di prova per freecodecamp.dev su Auth0, e quindi non abbiamo la possibilità di impostare un dominio personalizzato. Questo lo rende in modo che tutti i callback reindirizzati e la pagina di login appaiano su un dominio predefinito come: `https://freecodecamp-dev.auth0.com/`. Questo non influenza la funzionalità è vicina alla produzione come possiamo ottenere. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Segnalazione delle questioni e mantenimento del feedback +## Reporting issues and leaving feedback -Si prega di aprire nuovi problemi per le discussioni e la segnalazione di bug. Puoi etichettarli come **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** per triage. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Puoi inviare un'email a `dev[at]freecodecamp.org` se hai domande. Come sempre tutte le vulnerabilità di sicurezza dovrebbero essere segnalate a `security[at]freecodecamp.org` invece del tracker pubblico e del forum. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

                https://amplify.nginx.com

                +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Italian/flight-manuals/moderator-handbook.md b/docs/i18n/Italian/flight-manuals/moderator-handbook.md deleted file mode 100644 index 71905c6334..0000000000 --- a/docs/i18n/Italian/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,325 +0,0 @@ -# Il manuale ufficiale del moderatore del freeCodeCamp. - -Questo ti aiuterà a moderare luoghi diversi nella nostra comunità, tra cui: - -- Problemi GitHub & richieste pull -- Il forum, chat room, gruppi Facebook e altri luoghi di incontro online -- Eventi in persona come gruppi di studio, hackathon e conferenze - -**Tutti i moderatori freeCodeCamp sono moderatori a livello di comunità. Ciò significa che siamo fiduciosi che lei supervisioni uno di questi luoghi.** - -Ciò detto, si può servire come moderatore in qualsiasi luogo sono di maggiore interesse per voi. Alcuni moderatori aiutano solo su GitHub. Altri aiutano solo sul forum. Alcuni moderatori sono attivi ovunque. - -La linea di fondo è che vogliamo che ti piaccia essere un moderatore, e investire il vostro tempo limitato in luoghi che sono di interesse per voi. - -> [!NOTA] "Con grande potere viene grande responsabilità." - Zio Ben - -Come moderatore, il temperamento è più importante dell'abilità tecnica. - -Ascolta. Sii Aiutante. Non abusare del vostro potere. - -freeCodeCamp è una comunità inclusiva e dobbiamo mantenerla in questo modo. - -Abbiamo un codice di condotta unico che governa tutta la nostra comunità. Meno le regole, più facili sono da ricordare. Puoi leggere queste regole e inviarle alla memoria [qui](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -I moderatori hanno la capacità di chiudere i problemi e accettare o chiudere le richieste di richiamo. - -I moderatori hanno due responsabilità primarie nei confronti di GitHub: - -1. QA'ing and merging pull requests -2. Valutazione e risposta alle questioni - -## Moderare Le Richieste Di Tiro - -Pull Requests (PR) sono come i contributori inviano le modifiche al repository di freeCodeCamp. È importante eseguire Garanzia di Qualità (QA) sulle richieste di pull prima di decidere se unirle o chiuderle. - -### Tipi di richieste Pull - -1. **Modifiche alle istruzioni per la sfida** Queste sono modifiche al testo delle sfide - la descrizione, le istruzioni o il testo di prova. Puoi anche rivedere questi diritti su GitHub e decidere se unirli. Dobbiamo essere un po' più attenti su questi aspetti, perché milioni di persone incontreranno questo testo mentre lavorano attraverso il programma di studi freeCodeCamp. La richiesta pull rende il testo più chiaro senza allungarlo molto? Le modifiche sono pertinenti e non eccessivamente pedantiche? Ricordate che il nostro obiettivo è che le sfide siano il più possibile chiare e brevi. Non sono il posto per dettagli oscuri. Inoltre, i contributori possono cercare di aggiungere link alle risorse per le sfide. È possibile chiudere queste richieste di pull e rispondere con questo: - - > Grazie per la vostra richiesta di pull. - > - > Chiudo questa richiesta di richiamo. Si prega di aggiungere link e altri dettagli al corrispondente articolo guida della sfida. - > - > Se pensi che io abbia torto nel chiudere questo problema, riaprilo e aggiungi ulteriori chiarimenti. Grazie e codifica felice. - -2. **Modifica codice Sfida** Queste sono modifiche al codice in una sfida - Sfida Seed, Challenge Solution, e Stringhe di prova. Queste richieste di pull devono essere tirate giù da GitHub e testate sul computer locale per assicurarsi che i test di sfida possano ancora essere passati con la soluzione corrente, e il nuovo codice non introduce alcun errore. Alcuni contributori possono cercare di aggiungere ulteriori test per coprire i casi angolari pedantici. Dobbiamo stare attenti a non rendere la sfida troppo complicata. Queste sfide e i loro test dovrebbero essere il più possibile semplici e intuitivi. A parte le sfide dell'algoritmo e la sezione di preparazione dell'intervista, gli studenti dovrebbero essere in grado di risolvere ogni sfida in circa 2 minuti. - -3. **Modifiche del Codebase** Queste modifiche del codice cambiano la funzionalità della piattaforma freeCodeCamp stessa. A volte i collaboratori cercano di apportare modifiche senza molte spiegazioni, ma per i cambiamenti di codice abbiamo bisogno di assicurarsi che ci sia una vera e propria necessità di cambiamento. Quindi queste richieste pull dovrebbero fare riferimento a un problema esistente di GitHub in cui vengono discusse le ragioni del cambiamento. Poi è possibile aprire la pull request sul computer e testarli localmente. Dopo averlo fatto, se i cambiamenti sembrano buono, non unirli abbastanza ancora. Puoi commentare la pull request dicendo "LGTM", poi menzionare @raisedadead in modo che possa dare un'occhiata finale. - -### Come unire o chiudere le richieste di pull - -Prima di tutto, quando si sceglie una pull request per QA, si dovrebbe assegnarsi ad esso. Puoi farlo cliccando sul link "Assegnati" sotto la parte "assegnati" sulla colonna destra dell'interfaccia di GitHub. - -A seconda del tipo di pull request che è, seguire le regole corrispondenti sopra elencate. - -Prima di unire qualsiasi richiesta di pull, assicurati che GitHub abbia segni di spunta verdi per tutto. Se ci sono X's, indagare prima e capire come farli trasformare in segni di controllo verdi prima. - -A volte ci sarà un Conflitto di fusione. Ciò significa che un'altra pull request ha apportato una modifica a quella stessa parte dello stesso file. GitHub ha uno strumento per affrontare questi conflitti di fusione proprio su GitHub. Puoi provare ad affrontare questi conflitti. Basta usare il tuo giudizio migliore. Le modifiche della richiesta di pull saranno in cima e le modifiche del ramo Master saranno in basso. A volte ci saranno informazioni ridondanti in lì che possono essere cancellate. Prima di finire, assicurati di eliminare il `<<<<<<`, `======`, e `>>>>>>` che Git aggiunge per indicare aree di conflitto. - -Se la pull request sembra pronta per unire (e non richiede l'approvazione da @raisedadead), puoi andare avanti e unirla. Assicurati di utilizzare la funzionalità predefinita "Squash and Merge" su GitHub. Questo schiaccierà tutte le richieste di pull verso il basso in un singolo commit, che rende la storia di Git molto più facile da leggere. - -Dovresti quindi commentare la pull request ringraziando il contributore a modo tuo. - -Se l'autore della pull request è un "contributore per la prima volta" dovresti anche congratularti con loro per la loro prima pull request unita al repository. È possibile guardare l'angolo in alto a destra del corpo del PR, per determinare un contributore per la prima volta. Mostrerà `Prima volta contributore` come mostrato di seguito: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp 690x281](https://i.imgur.com/dTQMjGM.png) - -Se la pull request non sembra pronta per unirsi, puoi gentilmente rispondere dicendo all'autore cosa dovrebbe fare per prepararla. Speriamo che risponderanno e ottenere la loro richiesta di richiamo più vicino a pronti. - -Spesso, una richiesta di pull sarà ovviamente uno sforzo basso. Spesso puoi dirlo immediatamente quando il collaboratore non ha infastidito controllando le caselle di controllo nel modello di richiesta Pull o usato un titolo generico pull request come "modifiche fatte" o "Aggiorna indice. - -Ci sono anche situazioni in cui il contributore sta cercando di aggiungere un link al proprio sito web, o includere una libreria che essi stessi hanno creato, o ha una modifica frivola che non serve ad aiutare nessuno tranne se stessi. - -In entrambe queste situazioni, si dovrebbe andare avanti e chiudere la loro pull request e rispondere con questo messaggio standard: - -> Grazie per aver aperto questa pull request. -> -> Questo è un messaggio standard che ti avvisa che abbiamo esaminato la tua pull request e abbiamo deciso di non unirla. Accoglieremmo con favore le future richieste di richiamo da parte vostra. -> -> Grazie e codifica felice. - -Se avete bisogno di un secondo parere su una pull request andate avanti e lasciate i vostri commenti sulla pull request poi aggiungere l'etichetta "discussione" alla richiesta di pull. - -## Moderare Problemi GitHub - -freeCodeCamp è un progetto open source attivo. Riceviamo ogni giorno nuove questioni, tutte da sperimentare ed etichettare. - -### Tipi di problemi di GitHub - -1. **Code Help Requests**, che le persone hanno erroneamente creato problemi GitHub per. Se qualcuno sta chiedendo aiuto, incolla il seguente messaggio, quindi chiudi il problema. - - > Grazie per aver segnalato questo problema. - > - > Questo è un messaggio standard che ti avvisa che questo problema sembra essere una richiesta di aiuto. Invece di chiedere aiuto qui, clicca sul pulsante \*\*"Aiuto"\*\* sulla sfida su freeCodeCamp, che vi aiuterà a creare una domanda nella parte destra del forum. I volontari sul forum di solito rispondono alle domande entro poche ore e possono aiutare a determinare se c'è un problema con il tuo codice o con i test della sfida. - > - > Se i membri del forum determinano che non c'è nulla di sbagliato nel tuo codice, puoi richiedere che questo problema venga riaperto. - > - > Grazie e codifica felice. - -2. **Problemi di errore o chiarificazione** Prova a riprodurre il bug se puoi. In caso contrario, chiedere loro i passaggi per riprodurre il bug, e se hanno uno screenshot, video, o ulteriori dettagli che possono aiutare a riprodurre il problema. Una volta che è possibile riprodurre il problema - o almeno confermare che è un problema legit - etichetta `ha confermato`. Allora: - -- Se si tratta di un semplice cambiamento a una sfida esistente, etichetta come solo `primi timer`, altrimenti etichetta come `aiuto desiderato`. Usare altre etichette a seconda dei casi. -- Se il problema è più significativo, flag come `bug`.   Se c'è qualche ambiguità sul corretto corso di azione su un problema, sentitevi liberi di tag @raisedadead sul problema ottenere la sua opinione su di esso, quindi aggiungere l'etichetta `Discussione`. - -3. **Problemi duplicati** Se un problema è lo stesso di un altro problema segnalato, il precedente problema segnalato dovrebbe avere la precedenza. Contrassegna come `Duplica`, incolla il seguente messaggio sostituendo `#XXXXX` con il numero di rilascio, quindi chiudi il problema. - - > Grazie per aver segnalato questo problema. - > - > Questo è un messaggio standard che ti avvisa che questo problema sembra essere molto simile al problema #XXXXX, così lo sto chiudendo come un duplicato. - > - > Se pensi che io abbia torto nel chiudere questo problema, riaprilo e aggiungi ulteriori chiarimenti. Grazie e codifica felice. - -4. **Risolto nello staging** Alcuni problemi potrebbero essere già stati risolti nello staging, ma non c'è un problema GitHub associato a loro. Se questo è il caso, è possibile incollare il seguente messaggio, chiudere il problema e aggiungere un `stato: risolto/shipping` etichetta: - - > Grazie per aver segnalato questo problema. - > - > Questo è un messaggio standard che ti informa che il problema che hai menzionato qui è presente nella produzione, ma che è già stato fissato in staging. Ciò significa che la prossima volta che spingeremo il nostro ramo di staging alla produzione, questo problema dovrebbe essere risolto. Per questo motivo, sto chiudendo questo problema. - > - > Se pensi che io abbia torto nel chiudere questo problema, riaprilo e aggiungi ulteriori chiarimenti. Grazie, e la codifica felice. - -### Stale di chiusura, problemi non attivi, obsoleti e richieste di ritiro - -- Problemi temporanei o PR sono quelli che non hanno visto alcuna attività dal PO per 21 giorni (3 settimane dall'ultima attività), ma solo dopo che un moderatore ha richiesto maggiori informazioni/modifiche. Questi possono essere chiusi in uno script automatizzato/bot o dai moderatori stessi. - -- L'attività è definita come: Commenti che richiedono un aggiornamento sulla PR e triages come `status: aggiornamento necessario` etichetta ecc. - -- Se il PO richiede assistenza supplementare o anche tempo, quanto sopra può essere rilassato e rivisitato dopo una risposta è dato. In ogni caso le mod dovrebbero utilizzare il loro giudizio migliore per risolvere lo status di PR. - -### Altre linee guida per i Moderatori su GitHub - -Anche se avrai accesso in scrittura al repository di freeCodeCamp, **non dovresti mai inviare il codice direttamente ai repository freeCodeCamp**. Tutto il codice dovrebbe inserire il codebase di freeCodeCamp sotto forma di una pull request da un fork del repository. - -Inoltre, non dovresti mai accettare i tuoi PR. Devono essere QA'd da un altro moderatore, proprio come con qualsiasi altra PR. - -Se noti che qualcuno infrange il [codice di condotta](https://code-of-conduct.freecodecamp.org) sui problemi di GitHub, o apertura di richieste pull con contenuti o codice dannosi, email dev@freecodecamp. rg con un link alla richiesta di pull offensiva e possiamo prendere in considerazione la possibilità di vietarli completamente dall'organizzazione GitHub di freeCodeCamp. - -# Moderazione del Forum - -Come moderatore, aiutate a mantenere la nostra comunità un luogo piacevole per chiunque impara e ottenere aiuto. Si occuperà di messaggi contrassegnati e gestire spam, off-topic, e altre conversazioni inappropriate. - -Nota che una volta che sei un moderatore sul forum, inizierai a vedere i suggerimenti del moderatore blu sui membri del forum, come "questa è la prima volta [person] ha pubblicato - diamo il benvenuto alla comunità! o "[person] non ha pubblicato da molto tempo - diamo loro il benvenuto indietro." - -![Un messaggio di testo blu che dice "questa è la prima volta [person] ha pubblicato - diamo il benvenuto alla comunità!](https://i.imgur.com/mPmVgzK.png) - -Queste sono opportunità per voi di accoglierli e farli sentire extra speciale. Non si sa mai quale persona è marginalmente coinvolta può diventare il nostro prossimo super-aiutante, aiutando molte altre persone nel loro viaggio di programmazione. Anche la più piccola gentilezza può innescare una cascata di buone azioni. - -### Eliminazione dei post del forum - -I moderatori del forum hanno la possibilità di eliminare i post dell'utente. Si dovrebbe fare questo solo per le seguenti istanze: - -1. Qualcuno ha pubblicato un'immagine pornografica o graficamente violenta. -2. Qualcuno ha pubblicato un link o un codice che è dannoso in natura, e potrebbe danneggiare altri campeggiatori che cliccano su di esso. -3. Qualcuno ha inondato un thread con molti messaggi di spam. - -### Affrontare lo spam - -Per il primo post spam di un utente, inviare loro un messaggio che spieghi il problema e rimuovere il link o post a seconda dei casi. Lascia una nota sul profilo dell'utente che spiega l'azione intrapresa. Se il problema persiste, seguire il processo di cui sopra. Blocca silenziosamente l'utente dalla pubblicazione (utilizzando l'opzione di silenzio sul pannello di amministrazione utente), quindi invia un avviso con il Codice di condotta. Seleziona la casella nel messaggio privato che indica che il tuo messaggio è un "avviso formale". - -Puoi fare domande e segnalare gli incidenti nella sezione [del forum dello staff](https://forum.freecodecamp.com/c/staff). - -### Affrontare conversazioni off-topic - -I post o gli argomenti che sembrano essere nel posto sbagliato possono essere riclassificati o rinominati in qualsiasi cosa sarebbe appropriato. - -In circostanze eccezionali, può essere opportuno che un moderatore condiscenda una discussione in più discussioni. - -Ancora una volta, se hai problemi o domande, fai un post con le tue azioni nella categoria Staff, e tagga un altro moderatore se vuoi che riveda le tue azioni moderatrici. - -### Utenti Minori - -I nostri Termini di Servizio richiedono che gli utenti di freeCodeCamp abbiano almeno 13 anni di età. Nel caso in cui un utente riveli che sono sotto i 13 anni, invia loro il messaggio seguente e cancella il loro account del forum (se la cancellazione non è disponibile, sospendere l'account è sufficiente). Quindi email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) o [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) per eliminare anche l'account freeCodeCamp dell'utente. - -```markdown -OGGETTO: Gli utenti sotto i 13 anni non possono utilizzare il forum per i Termini di Servizio - -È venuto alla nostra attenzione che tu abbia meno di 13 anni. Per [freeCodeCamp termini di servizio](https://www.freecodecamp.org/news/terms-of-service), devi avere almeno 13 anni per utilizzare il sito o il forum. Elimineremo sia il tuo account freeCodeCamp che il tuo account del forum. Questa restrizione ci mantiene nel rispetto delle leggi statunitensi. - -Si prega di ricollegarsi una volta che hai raggiunto almeno 13 anni di età. - -Grazie per la comprensione. -``` - -# Moderazione Di Facebook - -Se vedi qualcosa che sembra infrangere il nostro [Codice di Condotta](https://code-of-conduct.freecodecamp.org/), dovresti eliminarlo immediatamente. - -A volte la gente pubblicherà cose che pensano siano divertenti. Non si rendono conto che quello che hanno detto o quello che hanno condiviso potrebbe essere interpretato come offensivo. In questi casi, il loro post dovrebbe essere cancellato, ma la persona che lo ha postato non deve necessariamente essere vietato. Ottenendo il loro post eliminato, si spera di venire a capire che ciò che hanno pubblicato era inappropriato. - -Ma se si tratta di un'offesa egregia che non può essere ragionevolmente attribuita ad una differenza culturale o ad un malinteso della lingua inglese, allora si dovrebbe considerare fortemente di bloccare il membro dal gruppo Facebook. - -# Discord Moderatore - -Ecco come i moderatori affrontano le violazioni del nostro [Codice di condotta](https://code-of-conduct.freecodecamp.org/) su Discord: - -1. **Assicurarsi che fosse destinato a violare il Codice di condotta.** Non tutte le violazioni del CoC erano intese come tali. Un nuovo camper potrebbe postare una grande quantità di codice per aiuto, ignaro che questo può essere considerato spamming. In questi casi, puoi solo chiedere loro di incollare il loro codice con servizi come Codepen o Pastebin. - -2. **Se il camper viola chiaramente il Codice di condotta, il moderatore procederà come segue:** - -- Sospendere il camper offensivo, ma non avvertirli o minacciarli. Invece, tranquillamente dare loro il ruolo Sospeso su Discord, quindi inviare loro il seguente messaggio: - -``` -Questo è un messaggio standard che ti avvisa che ho dovuto temporaneamente sospenderti dal parlare sul server freeCodeCamp Discord. - -Sono un moderatore che agisce a nome della nostra comunità open source. Posso considerare di rimuovere la tua sospensione, ma ho bisogno che tu prenda prima i seguenti 3 passi: - -1. Leggi il nostro codice di condotta: https://code-of-conduct.freecodecamp.org/ -2. Inviami un messaggio confermando che hai finito di leggerlo. 3. Spiegami perché pensi di averti sospeso e perché dovrei rimuovere la tua sospensione. -``` - -- Segnala un breve riassunto dell'evento e come hanno risposto ad esso nel canale #admin. Ecco un esempio di come potrebbe apparire un tale riassunto: - -``` -Sospeso: _@username_ -Motivo(i): _Spamming, trolling_ -Evidenza: _Uno o più link ai messaggi offensivi_ -CoC: _Sent_ -``` - -- Un rapporto per la rimozione di una sospensione dovrebbe assomigliare: - -``` -Ho rimosso la sospensione da ` @username `. Ho inviato loro il Codice di condotta. Proprio oggi si sono resi conto di essere stati sospesi e scusati per quello che hanno fatto. -``` - -- Sulla base della risposta dei trasgressori, il moderatore deciderà se rimuovere la sospensione dal camper offensivo. Se sembrano rispettosi e apologetici, il moderatore può rimuovere la sospensione. Per quanto riguarda la politica, i moderatori saranno educati durante questo processo, non importa quanto male il camper offendente si sia comportato. Se non sono rispettosi o non disposti ad accettare il CdC, la sospensione dovrebbe essere seguita con un divieto dal server di Discord. Utilizzare lo stesso riassunto di cui sopra, ma sostituire "Sospendiato:" con "Banned:". - -3. **Come bandire e/o non vietare** - -- Per vietare qualcuno, fare clic con il tasto destro sul nome utente/immagine del profilo e selezionare "Ban ". Ti verrà data l'opzione di eliminare i messaggi precedenti - selezionare "Non eliminare alcuni", poiché i messaggi devono rimanere presenti come record storico. -- Se si decide di vietare qualcuno, significa che non sono disposti a rispettare il nostro codice di condotta. Quindi lo sviamento di un Camper dovrebbe raramente accadere. Tuttavia, se si verifica la necessità, è possibile farlo facendo clic sul nome del server, scegliendo "Impostazioni server", scegliendo "Bans", selezionando l'utente che si desidera smettere e facendo clic su "Revoca Ban". - -Discord Bans sono globali - non è possibile vietare un utente da un canale specifico, solo da tutto il server. - -4. **Eliminazione dei messaggi** I moderatori hanno la possibilità di eliminare i messaggi su Discord. Essi dovrebbero esercitare questa capacità solo in quattro situazioni molto specifiche: - -- Qualcuno ha pubblicato un'immagine pornografica o graficamente violenta. -- Qualcuno ha pubblicato un link o un codice che è dannoso in natura, e potrebbe danneggiare altri campeggiatori che cliccano su di esso. -- Qualcuno ha inondato la chat con un sacco di messaggi di spam in una misura così estrema (di solito coinvolgendo bot) da rendere la chat completamente inutilizzabile. -- Qualcuno ha pubblicato pubblicità e / o un messaggio / immagine di auto-promozione (social media). - -In tutte le altre situazioni - anche in quelle in cui il codice di condotta è violato - i moderatori non dovrebbero cancellare il messaggio in quanto si tratta di un importante record storico. Quando si elimina un messaggio, assicurarsi di prendere prima uno screenshot di esso! Lo screenshot può essere registrato nel canale #mod-log, ma per il #activity-log è sufficiente dire che le prove sono state "rimosse a causa di contenuti sensibili". Nota: Se il messaggio contiene materiale che sarebbe illegale prendere uno screenshot di, copia invece il link del messaggio - inserisci quel link a @raisedadead per inoltrare al team di Discord Trust and Safety. - -5. **Non usare @all o @here** Non usare @all o @here in nessuna circostanza! Ogni singola persona in quella stanza di chat riceverà una notifica. In alcuni casi, decine di migliaia di persone. Invece, se si desidera che le persone vedano un annuncio, si può pin al canale per consentire a tutti di leggerlo. - -6. **Non minacciare di bandire o sospendere** Se un camper sta violando il codice di condotta, non minacciare di bandirli o sospenderli, e non metterli mai in guardia in pubblico. Invece, parlare con loro in privato, o inviare loro un DM e emettere una sospensione (per il protocollo di cui sopra). Nessun altro in quel canale deve sapere che hai bannato / sospeso la persona - i campeggiatori possono visualizzare il riassunto nel canale #activity-log se vogliono tenere il passo su tali informazioni. Se una violazione era chiaramente involontaria e non garantisce una sospensione o una conversazione privata, rendere il camper offendente consapevole della sua / le sue azioni senza farlo venire attraverso come un avvertimento. Per esempio: - -- Camper pubblica un muro di codice per richiedere aiuto - - Moderatore: @username Si prega di utilizzare Codepen o Pastebin quando si pubblicano grandi quantità di codice. - -- O se dovete davvero spiegare perché: - - Moderatore: @username Si prega di utilizzare Codepen o Pastebin quando si pubblicano grandi quantità di codice, perché interrompe la chat per tutti e potrebbe essere considerato spamming secondo il nostro Codice di condotta. - -- Per violazioni lievi e involontarie del codice di condotta - - Moderatore: Questo è un promemoria amichevole per tutti di seguire il codice di condotta: https://code-of-conduct.freecodecamp.org/ - -7. **Non vantarsi di essere un moderatore** Non vederti come sopra la comunità. Tu sei la comunità. E la comunità si è fidata di te per aiutare a proteggere qualcosa di raro che tutti condividiamo - un posto _accogliente_ per i nuovi sviluppatori. Se ti vanti di essere un moderatore, le persone possono sentirsi a disagio intorno a te, allo stesso modo in cui le persone possono sentirsi a disagio intorno a un agente di polizia, anche se non stanno facendo nulla di sbagliato. Questa è solo la natura umana. - -8. **Non contraddire altri moderatori** Se non sei d'accordo con l'azione di un moderatore, parlare con loro in privato o portarlo in su nel canale #mod-chat. Non sovrascrivere mai un divieto, e non contraddire mai gli altri moderatori pubblicamente. Invece, avere una discussione a testa fredda in mod-chat e convincere il moderatore che essi stessi dovrebbero invertire il loro divieto o modificare il loro punto di vista. Ricorda: siamo tutti nella stessa squadra. Vogliamo dignizzare il ruolo dei moderatori e presentare un fronte unitario. - -9. **Parla con altri moderatori** Abbiamo una stanza solo per i moderatori. Usalo! Se ti senti a disagio con come gestire una certa situazione, chiedi aiuto ad altri moderatori. Se pensate che qualcosa dovrebbe essere discusso, fatelo. Fai parte del team e apprezziamo il contributo di ogni membro del team! Anche se si è completamente in disaccordo con nulla in queste linee guida o il Codice di condotta! - -10. **Temporaneamente inattivo** Se non vuoi essere attivo come Moderatore per un po' a causa delle vacanze, malattia o qualsiasi altro motivo, assicurati di far sapere agli altri nel canale #mod-chat. Questo è quindi sappiamo se possiamo contare su di voi per essere regolarmente attivi nel server o no. - -# Come diventare un moderatore - -Se stai aiutando costantemente le persone della comunità nel corso del tempo, il nostro Team Moderatore alla fine prenderà nota, e uno di loro vi menzionerà come un possibile moderatore per [il nostro staff](https://forum.freecodecamp.org/g/Team). Non ci sono scorciatoie per diventare un moderatore. - -Se sei approvato, ti aggiungeremo ai nostri Team Moderatori su [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), ecc. - -> [!NOTA] > **Per GitHub:** Dopo essere stato accettato come moderatore, riceverai un invito al repository Github. Dovrai dirigerti verso [Free CodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) per poter accettare l'invito. Questo è necessario per noi per essere in grado di darti accesso in scrittura su alcuni dei nostri depositi. - -# Come ritiriamo moderatori inattivi - -Si prega di notare che rimuoveremo frequentemente le mod che pensiamo siano inattive. Quando lo faremo invieremo il seguente messaggio: - -> Questo è un messaggio standard che ti avvisa che, dal momento che non sembri essere stato un moderatore attivo di recente, ti stiamo rimuovendo dal nostro team di Moderatori. Apprezziamo profondamente il vostro aiuto in passato. - -> Se pensi che abbiamo fatto questo per errore, o una volta che sei pronto a tornare e contribuire di più, rispondi a questo messaggio che mi fa sapere. - -# Come funziona la nostra sala Contributori - -Chiunque è benvenuto nella sala [Contributori sul nostro Discord](https://discord.gg/KVUmVXA). È la stanza di chat designata per moderatori e altri campeggiatori che stanno contribuendo alla nostra comunità in qualsiasi modo, anche attraverso gruppi di studio. - -Il nostro presupposto è che i collaboratori leggeranno qualsiasi cosa in questa stanza che li menziona direttamente con un `@username`. Tutto il resto è opzionale. Ma sentitevi liberi di leggere tutto ciò che chiunque scrive lì e interagire. - -# Trattare con gli avvocati - -Potresti essere contattato da organizzazioni che vogliono collaborare o co-brand con freeCodeCamp in qualche modo. Una volta che ti rendi conto che questo è quello che sono dopo, smettere di parlare con loro e dire loro per e-mail quincy@freecodecamp.org. Egli ottiene proposte come questo tutto il tempo ed è nella posizione migliore per valutare se un tale rapporto vale la pena per la nostra comunità (e raramente). - -# Affrontare le indagini sanitarie (mentali) - -Si possono incontrare situazioni in cui gli utenti stanno cercando consulenza medica o stanno affrontando problemi di salute mentale e sono alla ricerca di supporto. Per quanto riguarda la politica, si dovrebbe evitare di parlare privatamente di questi temi. Se la situazione a un certo punto riflettesse indietro a fCC, vogliamo avere la conversazione(i) sul record. Rendere chiaro che non siamo professionisti medici e che si incoraggia l'utente a trovare aiuto professionale. Come difficile come a volte può essere, evitare di dare consigli o consigli diversi da indicare l'utente nella direzione di aiuto professionale! - -Se questo accade su Discord: Sospendi l'utente. Questo non è quello di punirli! Sospendendo un utente creerà un canale privato accessibile solo dall'utente e dal team. Ciò andrà a vantaggio sia dell'utente che della fCC in diversi modi: - -- L'utente è garantito un po' di privacy -- La chat pubblica non è più interrotta -- Altri membri del team possono piazzare in, se si è a disagio affrontare la situazione da soli - -> [!NOTA] Sospendere un utente dà loro automaticamente un messaggio sulla lettura del nostro Codice di condotta. Assicurati di informare l'utente che li hai sospesi per dare loro una certa privacy e che non vengono puniti. Questo è molto importante! Vogliamo assolutamente evitare di dare agli utenti l'idea che sono puniti per aver raggiunto per ottenere aiuto! - -Se credi che l'utente sia in grado di ricongiungersi alla comunità, fai clic con il tasto destro sul canale privato e copia l'ID. Inserisci il seguente messaggio in #mod-log: - -> Consulenza medica di riferimento: - -Dopo di che, è possibile rimuovere la sospensione dall'utente come si fa normalmente. - -URL utili: - -http://www.suicide.org/international-suicide-hotlines.html - -# Una nota sulla libertà di parola - -A volte le persone difenderanno qualcosa di offensivo o incendiario che hanno detto come "discorso libero". - -Questo fumetto XKCD riassume perfettamente i pensieri della maggior parte delle comunità sulla libertà di parola. Quindi, se qualcuno difende qualcosa che sta dicendo come "discorso libero" sentitevi liberi di inviarlo a loro. - -
                - -Grazie per aver letto questo, e grazie per aver aiutato la comunità degli sviluppatori! diff --git a/docs/i18n/Italian/flight-manuals/using-reply-templates.md b/docs/i18n/Italian/flight-manuals/using-reply-templates.md deleted file mode 100644 index 7b68a4f316..0000000000 --- a/docs/i18n/Italian/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,128 +0,0 @@ -# Usare I Modelli Di Risposta - -Questi sono alcuni dei modelli di risposta standard che puoi utilizzare durante la revisione delle richieste di pull e dei problemi di triaging. - -> Puoi crearti con la funzionalità integrata di GitHub [**Risposte salvate**](https://github.com/settings/replies/) o utilizzare quelle qui sotto. - -### Grazie - -```markdown -Grazie per il tuo contributo alla pagina! 👍 -Siamo felici di accettare questi cambiamenti e aspettiamo con ansia i contributi futuri. 🎉 -``` - -### Grazie e complimenti - -> Per aver ringraziato e incoraggiato i primi contributori. - -```markdown -Ciao @username. Complimenti per la tua prima pull request (PR)! 🎉 - -Grazie per il tuo contributo alla pagina! 👍 -Siamo felici di accettare questi cambiamenti e aspettiamo con ansia i contributi futuri. 📝 -``` - -### Errore Di Generazione - -```markdown -Ehi @username - -Ci piacerebbe essere in grado di unire le tue modifiche, ma sembra che ci sia un errore con la build Travis CI. ⚠️ - -Una volta risolti questi problemi, saremo in grado di rivedere la tua PR e unirla. 😊 - ---- - -> Sentiti libero di fare riferimento alla [Guida stile per scrivere articoli](https://github. om/freeCodeCamp/freeCodeCamp#article-title) per questo repo sulla formattazione di un articolo correttamente così il tuo Travis CI build passa. ✅ -> -> Inoltre, è buona pratica su GitHub scrivere una breve descrizione dei cambiamenti durante la creazione di una PR. 📝 -``` - -### Sincronizzazione Fork - -> Quando PR non è aggiornato con la filiale `master`. - -``````markdown -Ehi @username - -Ci piacerebbe essere in grado di unire le tue modifiche, ma sembra che ci sia un errore con la build Travis CI. ⚠️ - -```bash -Errore: ENOTDIR: non una directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -Questo particolare errore non è stato causato dal tuo file, ma è stato un vecchio errore causato dalla fusione del codice difettoso nel ramo `master`. Da allora è stata risolta. - -Per passare la generazione, dovrai sincronizzare le ultime modifiche dal ramo `master` del repo `freeCodeCamp/freeCodeCamp`. - -Utilizzando la riga di comando, puoi farlo in tre semplici passaggi: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -Se stai usando una GUI, puoi semplicemente `Aggiungi un nuovo remoto...` e utilizzare il link `git://github.com/freeCodeCamp/freeCodeCamp.git` dall'alto. - -Una volta che sincronizzi il fork e passerai la build, saremo in grado di rivedere la tua PR e unirla. 😊 - ---- - -> Sentiti libero di fare riferimento all'articolo [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) su GitHub per avere maggiori informazioni su come mantenere il tuo fork aggiornato con il repository a monte. 🔄 -> -> Inoltre, è buona pratica su GitHub scrivere una breve descrizione dei cambiamenti durante la creazione di un PR. 📝 -`````` - -### Unisci i conflitti - -> Quando PR ha conflitti di fusione che devono essere risolti.1 - -```markdown -Hey @username - -Ci piacerebbe essere in grado di unire i tuoi cambiamenti, ma sembra che tu abbia alcuni conflitti di fusione. - -⚠️ - -Una volta risolti questi conflitti, saremo in grado di rivedere la tua PR e unirla. 😊 - ---- - -> Se non hai familiarità con il processo di fusione, non esitate a guardare la guida di GitHub su ["Risolvere un conflitto di fusione"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> Inoltre, è buona pratica su GitHub scrivere una breve descrizione dei cambiamenti durante la creazione di una PR. 📝 -`````` -1 Se un primo contributore di tempo ha un conflitto di fusione, i manutentori risolveranno il conflitto per loro. - -### Duplicate - -> Quando PR è ripetitivo o un duplicato. - -```markdown -Ehi @username - -Sembra che modifiche simili siano già state accettate prima per questo articolo che stai modificando, mi dispiace per questo. 😓 - -Se senti di avere più da aggiungere, sentiti libero di aprire un nuovo PR. - -Grazie ancora! 😊 - ---- - -> Se hai domande, sentiti libero di contattarti attraverso [Gitter](https://gitter.im/FreeCodeCamp/Contributors) o commentando qui sotto. 💬 -``` - -### Chiudere richieste pull non valide - -> Quando PR non è valido. - -```markdown -Hey @username - -Non hai aggiunto nessun contenuto, chiuderemo questa PR e contrassegneremo come `non valido`. 😓 - -Sentitevi liberi di aprire un'altra PR però! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Italian/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Italian/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 8c445fa6b9..0000000000 --- a/docs/i18n/Italian/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,482 +0,0 @@ -# Flight Manual for working on Virtual Machines - -Come membro del personale o del dev-team, potresti aver avuto accesso ai nostri fornitori di servizi cloud come Azure, Digital Ocean, ecc. - -Ecco alcuni comandi utili che puoi usare per lavorare sulle macchine virtuali (VM), per esempio eseguire aggiornamenti di manutenzione o fare houeskeeping generale. - -# Get a list of the VMs - -> [!NOTA] Mentre si può già avere accesso SSH ai VM, che da solo non ti permetterà di elencare i VM a meno che non sia stato concesso l'accesso ai portali cloud. - -## Azure - -Installa Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Installa Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Autenticazione e cambio contesto: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. Questo assicurerà che la macchina virtuale sia patchata con le ultime correzioni di sicurezza. - -> [!WARNING] Before you run these commands: -> -> - Assicurarsi che la VM sia stata fornita completamente e che non ci siano passi post-installazione in esecuzione. -> - Se stai aggiornando i pacchetti su una VM che sta già servendo un'applicazione, assicurati che l'applicazione sia stata arrestata / salvata. Gli aggiornamenti dei pacchetti causeranno picchi di utilizzo della banda di rete, della memoria e/o della CPU che causeranno interruzioni su applicazioni in esecuzione. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -Stiamo eseguendo le istanze di carico bilanciate (Azure Load Balancer) per i nostri server web . Questi server stanno eseguendo NGINX che inverte il proxy di tutto il traffico a freeCodeCamp.org da varie applicazioni in esecuzione sulle proprie infrastrutture. - -La configurazione di NGINX è disponibile su [questo repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH e apportano le modifiche necessarie per i casi particolari. - -Se non hai usato la configurazione cloud-init precedentemente usa la seguente per la configurazione manuale di NGINX e le pagine di errore: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Ottieni i certificati di origine Cloudflare dallo storage sicuro e installa in posizioni richieste. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. Potrebbe essere necessario aggiungere i VM per caricare il pool di backend del bilanciatore, se necessario. - -## Aggiornamento Istanze (Manutenzione) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

                https://amplify.nginx.com

                -## Updating Instances (Maintenance) - -Le modifiche di configurazione alle nostre istanze NGINX sono mantenute su GitHub, queste dovrebbero essere distribuite su ogni istanza in questo modo: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Prova e ricarica la configurazione [con i segnali](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Aggiornamento Istanze (Manutenzione) - -```console -## Registrazione e monitoraggio - -```console -log pm2 -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. Può essere un aggiornamento o un aggiornamento manuale. Il più tardi è essenziale quando si cambiano le dipendenze o si aggiungono variabili di invidio. - -> [!PERICOLO] Le pipeline automatiche non gestiscono gli aggiornamenti delle dipendenze al minuto. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Avvia le istanze del segnaposto per il web client, queste verranno aggiornate con artefatti dalla piplina Azure. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary. h - pm2 delete client-primary - pm2 start . client-start-primary.sh --name client-primary - echo "serve -c . /../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary. h - pm2 cancella client-secondario - pm2 start ./client-start-secondary.sh --name client-secondario -``` - -## Aggiornamento Istanze (Manutenzione) - -```console -## Registrazione e monitoraggio - -```console -log pm2 -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. Può essere un aggiornamento o un aggiornamento manuale. Il più tardi è essenziale quando si cambiano le dipendenze o si aggiungono variabili di invidio. - -> [!PERICOLO] Le pipeline automatiche non gestiscono gli aggiornamenti delle dipendenze al minuto. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Italian/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Italian/how-to-catch-outgoing-emails-locally.md index a8b989b57f..397ea3382a 100644 --- a/docs/i18n/Italian/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Italian/how-to-catch-outgoing-emails-locally.md @@ -1,67 +1,67 @@ -> **Nota:** Questo è un **passaggio opzionale** ed è richiesto solo quando si lavora con flussi di lavoro email +> **Note:** This is an **optional** step and is required only when working with email workflows -## Introduzione +## Introduction -Alcuni flussi di lavoro di posta elettronica, come l'aggiornamento dell'email di un utente, richiedono l'api-server back-end per inviare email in uscita. Un'alternativa all'utilizzo di un provider di servizi di posta elettronica per inviare messaggi di posta elettronica effettivi, Mailhog è uno strumento di sviluppo per il test di posta elettronica che catturerà i messaggi di posta elettronica inviati dalla tua istanza freeCodeCamp. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Installazione Di MailHog +## Installing MailHog -MailHog può essere installato su macOS, Windows e Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Introduzione](#introduction) -- [Installazione Di MailHog](#installing-mailhog) - - [Installazione di MailHog su macOS](#installing-mailhog-on-macos) - - [Installazione di MailHog su Windows](#installing-mailhog-on-windows) - - [Installazione di MailHog su Linux](#installing-mailhog-on-linux) -- [Uso Di Mailhog](#using-mailhog) -- [Link Utili](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Installazione di MailHog su macOS +### Installing MailHog on macOS -Installa MailHog su macOS con [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash brew install mailhog brew services start mailhog ``` -I comandi di cui sopra avvieranno un servizio mailhog in background. +The above commands will start a mailhog service in the background. -Quando l'installazione è completata, è possibile avviare [utilizzando MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Installazione di MailHog su Windows +### Installing MailHog on Windows -Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Individuare e fare clic sul link per la versione di Windows (32 o 64 bit) e un file .exe verrà scaricato sul computer. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Al termine del download, fare clic per aprire il file. Potrebbe apparire una notifica firewall di Windows, richiedendo l'autorizzazione di accesso per MailHog. Un prompt a riga di comando di Windows standard si aprirà dove MailHog sarà in esecuzione una volta concesso l'accesso al firewall. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Chiudi MailHog chiudendo la finestra del prompt dei comandi. Per riavviare MailHog cliccare sull'eseguibile MailHog (. xe) file che è stato scaricato inizialmente - non è necessario scaricare un nuovo file di installazione MailHog. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Inizia [usando MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Installazione di MailHog su Linux +### Installing MailHog on Linux -Innanzitutto, installa [Go](https://golang.org). +First, install [Go](https://golang.org). -Eseguire i seguenti comandi per installare GO su sistemi basati su Debian come Ubuntu e Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Eseguire i seguenti comandi per installare GO su sistemi basati su RPM come CentOS, Fedora, Red Hat Linux, ecc. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -In alternativa, eseguire i seguenti comandi per installare GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Ora imposta il percorso per Go con i seguenti comandi. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile @@ -69,7 +69,7 @@ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile source ~/.profile ``` -Infine, inserisci i comandi qui sotto per installare ed eseguire MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Inizia [usando MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Uso Di Mailhog +## Using MailHog -Apri una nuova scheda o finestra del browser e vai su [http://localhost:8025](http://localhost:8025) per aprire la tua casella di posta di MailHog quando l'installazione di MailHog è completata e MailHog è in esecuzione. La posta in arrivo apparirà simile alla schermata qui sotto. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![Screenshot MailHog 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -Le email inviate dalla tua installazione freeCodeCamp appariranno come di seguito +Emails sent by your freeCodeCamp installation will appear as below -![Screenshot MailHog 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -Due schede che consentono di visualizzare il testo semplice o il contenuto sorgente saranno disponibili quando apri una data email. Assicurati che la scheda di testo semplice sia selezionata come sotto. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![Screenshot MailHog 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Tutti i link nell'email dovrebbero essere cliccabili e risolvere al loro URL. +All links in the email should be clickable and resolve to their URL. -## Link Utili +## Useful Links -- Controlla il repository [MailHog](https://github.com/mailhog/MailHog) per ulteriori informazioni relative a MailHog. Ulteriori informazioni sono disponibili anche per quanto riguarda le configurazioni personalizzate di MailHog. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Italian/how-to-help-with-video-challenges.md b/docs/i18n/Italian/how-to-help-with-video-challenges.md index 06174c9995..0724aaef02 100644 --- a/docs/i18n/Italian/how-to-help-with-video-challenges.md +++ b/docs/i18n/Italian/how-to-help-with-video-challenges.md @@ -1,195 +1,199 @@ -# Come aiutare con le sfide del video +# How to help with video challenges -Le sfide del video sono un nuovo tipo di sfida nel programma di studi freeCodeCamp. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -Una sfida video è una piccola sezione di un corso video a tutta lunghezza su un argomento particolare. Una pagina di sfida video incorpora un video di YouTube. Ogni pagina di sfida ha una singola domanda a scelta multipla relativa al video. Un utente deve rispondere correttamente alla domanda prima di passare alla prossima videosfida del corso. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -Le pagine della sfida video sono create dai membri del team freeCodeCamp. I video di YouTube sono anche caricati dai membri del team freeCodeCamp. Molte delle sfide video non hanno ancora domande ad esse associate. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Si può aiutare creando domande a scelta multipla relative alle sezioni video e aggiungendo le domande ai file markdown per le sfide del video. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Template Sfida +## Challenge Template -Di seguito è riportato un modello di come appaiono i file markdown della sfida. +Below is a template of what the challenge markdown files look like. ````md --- -id: Identificatore unico (alfanumerico, MongoDB_id) +id: Unique identifier (alphanumerical, MongoDB_id) title: Challenge Title challengeType: 11 videoId: 'YouTube videoId for video challenge' --- -## Descrizione +## Description
                -Una descrizione opzionale con informazioni utili relative al video. +An optional description with helpful information related to the video.
                -## Test +## Tests
                ```yml -domanda: - testo: 'Domanda' - risposte: - - 'Rispondi uno' - - 'Rispondi due' - - 'Rispondi tre' - soluzione: 3 +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
                ```` -## Creare domande per le sfide video +## Creating questions for video challenges -### Accedere ai file di markdown della sfida video +### Access the video challenge markdown files -Nel curriculum puoi trovare i file di markdown per le sfide video nelle seguenti posizioni: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Analisi dei dati con il corso Python](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) -- [TensorFlow 2.0 Course](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) - [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) - [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -Scegli un file di sfida dalle opzioni qui sopra. +Pick a challenge markdown file from the options above. -### Skim attraverso il video associato alla sfida e crea una domanda a scelta mutua +### Skim through the video associated with the challenge and create a mutiple choice question -Per prima cosa, trova l'Id. +First, find the videoId. -Ad esempio, nel seguente codice dall'intestazione di un file di markdown di sfida video, l'Id video è "nVAaxZ34khk". - -Ad esempio, nel seguente codice dall'intestazione di un file di markdown di sfida video, l'Id video è "nVAaxZ34khk". Su GitHub, le informazioni devono essere disposte in un formato di tabella. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d title: Analisi dei dati Esempio A challengeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -Successivamente, accedi al video YouTube con quel videoId. L'url per il video sarà: -https://www.youtube. om/watch?v=[videoId] (aggiungi videoId all'URL senza parentesi quadre) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -Nell'esempio sopra, l'url è https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim il video di YouTube con quel videoId e pensare a una domanda a scelta multipla basata sul contenuto del video. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Aggiungere la domanda al file markdown +### Add the question to the markdown file -È possibile aggiungere la domanda localmente o direttamente attraverso l'interfaccia GitHub. Per aggiungere la domanda localmente, è necessario [impostare freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). Puoi anche trovare il file su GitHub e fare clic sul pulsante Modifica per aggiungere la domanda nel tuo browser. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Se una domanda non è ancora stata aggiunta a una determinata sfida video, avrà la seguente domanda predefinita: - -````yml -domanda: - testo: - Domanda - risposte: - - - uno - - - due - - - tre - soluzione: 3 -``` - -Aggiorna la parola “Domanda” con la tua domanda. Aggiornare il “uno”, “due” e “tre” con le possibili risposte. Assicurarsi di aggiornare il numero di soluzione con cui la risposta è corretta. È possibile aggiungere più risposte possibili utilizzando lo stesso formato. La domanda e le risposte possono essere circondate da virgolette. - -#### Usa markdown per formattare la tua domanda - -Il testo della domanda è interpretato come contrassegno. Il modo più semplice per garantire che sia formattato correttamente è iniziare la domanda con `testo: `, come questo: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -domanda: - testo: - Domanda +question: + text: | + Question + answers: + - | + one + - | + two + - | + three + solution: 3 ``` -Allora devi assicurarti che la tua domanda sia su una nuova linea e che un livello sia tornato più di `testo: `. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -Lo stesso approccio può essere utilizzato per le risposte, così l'intera domanda diventa +#### Use markdown to format your question + +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -domanda: - testo: - Domanda - risposte: - - - Prima risposta - - - Seconda - - - Terza soluzione - : 2 +question: + text: | + Question ``` -Assicurarsi che ogni risposta sia plausibile, ma c'è solo una risposta corretta. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -#### Uso di HTML +The same approach can be used for the answers, so the entire question becomes -Domande e risposte possono contenere alcuni tag HTML come `
                ` per una nuova riga. I tag HTML dovrebbero essere usati con parsimonia, quando le domande non possono essere espresse senza di esse. +```yml +question: + text: | + Question + answers: + - | + First answer + - | + Second + - | + Third + solution: 2 +``` -### Esempi di domande +Make sure each answer is plausible but there is only one correct answer. -#### Esempi senza HTML +#### Use of HTML + +Questions and answers can contain certain HTML tags like `
                ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. + +### Question examples + +#### Examples without HTML ````yml -domanda: - testo: - Che cosa fa questo JavaScript code log alla console? +question: + text: | + What does this JavaScript code log to the console? ```js - console.log('ciao worldd'); + console.log('hello world'); ```` - Seleziona una risposta! - risposte: - - ciao *mondo* - - **ciao** mondo - - ciao mondo soluzione: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -domanda: - testo: - Cosa stamperà dopo aver eseguito questo codice: +question: + text: | + What will print out after running this code: ```py - larghezza = 15 - altezza = 12. stampa(altezza/3) + width = 15 + height = 12.0 + print(height/3) ```` - risposte: + answers: - | 39 - | 4 - - 4.0 - - 5.0 - - 5 : 3 + - | 4.0 + - | 5.0 + - | 5 solution: 3 ```` -#### Esempio con HTML +#### Example with HTML ```yml -domanda: - testo: - Cosa stamperà dopo aver eseguito questo codice: -
                larghezza = 15
                altezza = 12.
                print(height/3)
                - risposte: - - +question: + text: | + What will print out after running this code: +
                width = 15
                height = 12.0
                print(height/3)
                + answers: + - | 39 - - + - | 4 - - - 4. + - | + 4.0 + - | + 5.0 + - | + 5 + solution: 3 ```` -L'esempio finale dimostra che l'HTML può essere usato, ma che non è così leggibile come la versione senza di esso. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Per ulteriori esempi, è possibile guardare i file markdown per il seguente corso video. Tutte le sfide hanno già domande: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Apri una pull request +## Open a pull request -Dopo aver creato una o più domande, è possibile eseguire il commit delle modifiche a un nuovo ramo e [aprire una pull request](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Italian/how-to-open-a-pull-request.md b/docs/i18n/Italian/how-to-open-a-pull-request.md index 94fe2d111b..2729cd6237 100644 --- a/docs/i18n/Italian/how-to-open-a-pull-request.md +++ b/docs/i18n/Italian/how-to-open-a-pull-request.md @@ -1,121 +1,121 @@ -# Come aprire una richiesta Pull (PR) +# How to open a Pull Request (PR) -Una pull request consente di inviare modifiche dal tuo fork su GitHub al repository principale di freeCodeCamp.org. Una volta che hai fatto delle modifiche al codice o sfide di codifica dovresti seguire queste linee guida per inviare una PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Preparare un buon titolo PR +## Prepare a good PR title -Si consiglia di utilizzare [titolo convenzionale e messaggi](https://www.conventionalcommits.org/) per i commit e pull request. La convenzione ha il seguente formato: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([ambito facoltativo(i)]): ` +> `([optional scope(s)]): ` > -> Per esempio: +> For example: > -> `fix(learn): test per il do...while loop challenge` +> `fix(learn): tests for the do...while loop challenge` -Quando si apre una Pull Request(PR), è possibile utilizzare il sottostante per determinare il tipo, l'ambito (opzionale) e la descrizione. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**Tipo:** +**Type:** -| Tipo | Quando selezionare | -|:----- |:------------------------------------------------------------------------------------ | -| fix | Funzionalità modificata o aggiornata/migliorata, test, verbiage di una lezione, ecc. | -| feat | Solo se si aggiungono nuove funzionalità, test, ecc. | -| chore | Modifiche che non sono correlate a codice, test o verbiage di una lezione. | -| docs | Modifiche alla directory `/docs` o alle linee guida contributive, ecc. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Ampiezza:** +**Scope:** -È possibile selezionare un ambito da [questo elenco di etichette](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Descrizione:** +**Description:** -Mantenere breve (meno di 30 caratteri) e semplice, è possibile aggiungere ulteriori informazioni nella casella di descrizione PR e commenti. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Alcuni esempi di buoni titoli PRS sarebbero: +Some examples of good PRs titles would be: -- `fix(a11y): miglioramento del contrasto della barra di ricerca` -- `feat: aggiungi altri test alle sfide html e css` -- `fix(api,client): prevenire gli errori CORS nella presentazione del modulo` -- `docs(i18n): traduzione cinese della configurazione locale` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Proporre una richiesta Pull +## Proposing a Pull Request -1. Una volta che le modifiche sono state effettuate, ti verrà chiesto di creare una pull request sulla pagina GitHub della tua fork. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Immagine - Confronta il prompt delle richieste di pull su GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Per impostazione predefinita, tutte le richieste di pull dovrebbero essere contro il ramo principale freeCodeCamp, `master`. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Assicurati che la tua Forchetta di Base sia impostata su freeCodeCamp/freeCodeCamp durante il sollevamento di una richiesta di estrazione. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Immagine - Confrontare le forcelle quando si effettua una pull request](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Invia la richiesta di pull dal tuo ramo al ramo `master` di freeCodeCamp. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. Nel corpo del vostro PR includere un riepilogo più dettagliato delle modifiche apportate e perché. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Sarai presentato con un modello pull request. Questa è una lista di controllo che si sarebbe dovuto seguire prima di aprire la pull request. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Compila i dettagli come ritieni più adatti. Queste informazioni saranno esaminate e i revisori decideranno se la tua pull request è accettata. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Se la PR ha lo scopo di affrontare un problema GitHub esistente, alla fine del corpo di descrizione della PR, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and unged](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Esempio: `Chiude #123` chiuderà il numero 123 + > Example: `Closes #123` will close issue 123 -5. Indicare se si è testato su una copia locale del sito o no. +5. Indicate if you have tested on a local copy of the site or not. - Questo è molto importante quando si apportano modifiche che non sono solo modifiche al contenuto del testo come la documentazione o una descrizione della sfida. Esempi di cambiamenti che necessitano di test locali includono JavaScript, CSS, o HTML che potrebbero cambiare la funzionalità o il layout di una pagina. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Feedback sulle richieste pull +## Feedback on pull requests -> Congratulazioni! :tada: per aver fatto una PR e grazie mille per aver impiegato il tempo per contribuire. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -I nostri moderatori ora daranno un'occhiata e ti lasceranno un feedback. Si prega di essere pazienti con i colleghi moderatori e rispettare il loro tempo. Tutte le richieste di pull sono riviste a tempo debito. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Se hai bisogno di assistenza per favore discuta nella [chat room dei collaboratori](https://gitter.im/FreeCodeCamp/Contributors), siamo più che felici di aiutarti. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!SUGGERIMENTO] Se vuoi contribuire a più richieste di pull, ti consigliamo di leggere le linee guida [di apportare modifiche e sincronizzare](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) per evitare di dover eliminare il fork. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Conflitti su una pull request +## Conflicts on a pull request -I conflitti possono sorgere perché molti contributori lavorano sul repository e le modifiche possono rompere il PR che è in attesa di una revisione e di una fusione. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Più spesso non si può richiedere un rebase, perché schiacciamo tutti i commit tuttavia se è richiesto un rebase qui è quello che si dovrebbe fare. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Per le solite correzioni di bug e funzionalità +### For usual bug fixes and features -Quando si sta lavorando su bug regolari e funzionalità sul nostro ramo `master`di sviluppo, si è in grado di fare una semplice base: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Ricostruisci la tua copia locale: +1. Rebase your local copy: ```console git checkout git pull --rebase upstream master ``` -2. Risolvi eventuali conflitti e aggiungi / modifica i commit +2. Resolve any conflicts and add / edit commits ```console - # O + # Either git add . - git commit -m "chore: risolvere i conflitti" + git commit -m "chore: resolve conflicts" - # O + # Or git add . git commit --amend --no-edit ``` -3. Ritorna le modifiche al PR +3. Push back your changes to the PR ```console git push --force origin ``` -### Per il prossimo curriculum e caratteristiche +### For upcoming curriculum and features -Quando stai lavorando su funzionalità per il nostro prossimo curriculum `prossimo-*` rami, hai fatto una selezione di ciliegie: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Assicurati che il tuo upstream sia sincronizzato con il tuo locale: +1. Make sure your upstream comes in sync with your local: ```console git checkout master @@ -124,9 +124,9 @@ Quando stai lavorando su funzionalità per il nostro prossimo curriculum `prossi git reset --hard upstream/next-python-projects ``` -2. Prendere backup +2. Take backup - a. Eliminare il ramo locale dopo aver effettuato un backup (se lo hai ancora localmente): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout @@ -137,28 +137,28 @@ Quando stai lavorando su funzionalità per il nostro prossimo curriculum `prossi git checkout -b # example: - # git checkout -b backup-feat/add-numpy-video-question + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - b. O solo un backup del ramo pr (se non lo hai localmente): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # esempio: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Inizia con una lastra pulita: +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Risolvere eventuali conflitti e pulire, installare test di esecuzione +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean @@ -168,11 +168,11 @@ Quando stai lavorando su funzionalità per il nostro prossimo curriculum `prossi # example: - # npm run test:curriculum --superblock=python-for-all + # npm run test:curriculum --superblock=python-for-everybody ``` -6. Se tutto sembra una buona spinta indietro alla PR +6. If everything looks good push back to the PR ```console git push --force origin diff --git a/docs/i18n/Italian/how-to-setup-freecodecamp-locally.md b/docs/i18n/Italian/how-to-setup-freecodecamp-locally.md index 06edffa572..619db733cf 100644 --- a/docs/i18n/Italian/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Italian/how-to-setup-freecodecamp-locally.md @@ -1,326 +1,326 @@ -Segui queste linee guida per impostare freeCodeCamp localmente sul tuo sistema. Questo è altamente raccomandato se si desidera contribuire regolarmente. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Per alcuni dei flussi di lavoro di contributo, è necessario avere freeCodeCamp in esecuzione localmente. Ad esempio, l'anteprima delle sfide di codifica o il debug e la correzione dei bug nel codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!SUGGERIMENTO] Se non sei interessato a configurare freeCodeCamp localmente considera di utilizzare Gitpod, un ambiente dev online gratuito. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Apri in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Avvia un ambiente dev ready-to-code per freeCodeCamp nel tuo browser.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepara la tua macchina locale +### How to prepare your local machine -Inizia installando il software prerequisito per il tuo sistema operativo. +Start by installing the prerequisite software for your operating system. -Sosteniamo principalmente lo sviluppo sui sistemi **\*nix**. Il nostro staff e collaboratori della community lavorano regolarmente con il codebase utilizzando strumenti installati su Ubuntu e macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Supportiamo anche Windows 10 via WSL2, che puoi preparare [leggendo questa guida](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Alcuni membri della comunità sviluppano anche su Windows 10 nativamente con Git per Windows (Git Bash) e altri strumenti installati su Windows. Al momento non disponiamo di un supporto ufficiale per una tale configurazione, si consiglia invece di utilizzare WSL2. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Prerequisiti:** +**Prerequisites:** -| Prerequisito | Versione | Note | -| --------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | -| npm (viene fornito in bundle con node) | `6.x` | Non ha LTS rilasci, utilizziamo la versione in bundle con Node LTS | -| [Server Community MongoDB](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Note di rilascio](https://docs.mongodb.com/manual/release-notes/), Nota: Siamo attualmente su `3.6`, è previsto un [aggiornamento](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!PERICO] Se hai una versione diversa, installa la versione consigliata. Possiamo supportare solo i problemi di installazione per le versioni consigliate. Vedi [risoluzione dei problemi](#troubleshooting) per i dettagli. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Se Node.js è già installato sulla macchina, eseguire i seguenti comandi per convalidare le versioni: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console node -v npm -v ``` -> [!SUGGERIMENTO] Consigliamo vivamente di aggiornare le ultime versioni stabili del software sopra elencato, note anche come versioni a lungo termine (LTS). +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Una volta che avete i prerequisiti installati, è necessario preparare il vostro ambiente di sviluppo. Questo è comune per molti flussi di lavoro di sviluppo, e si dovrà fare solo una volta. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Segui questi passaggi per preparare il tuo ambiente di sviluppo:** +**Follow these steps to get your development environment ready:** -1. Installa [Git](https://git-scm.com/) o il tuo client Git preferito, se non lo hai già. Aggiornamento alla versione più recente; la versione che è venuto in bundle con il vostro sistema operativo potrebbe essere obsoleta. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Facoltativo ma consigliato) [Imposta una chiave SSH](https://help.github.com/articles/generating-an-ssh-key/) per GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Installa un editor di codice a tua scelta. +3. Install a code editor of your choice. - Consigliamo vivamente di utilizzare [Visual Studio Code](https://code.visualstudio.com/) o [Atom](https://atom.io/). Questi sono grandi, liberi e open source editor di codice. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Impostare linting per l'editor di codice. +4. Set up linting for your code editor. - Dovresti avere [ESLint in esecuzione nel tuo editor](http://eslint.org/docs/user-guide/integrations.html), e metterà in evidenza tutto ciò che non è conforme a [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!SUGGERIMENTO] Per favore non ignorare alcun errore di linting. Essi sono destinati a **aiutare** e per garantire un codice pulito e semplice. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Fork il repository su GitHub +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (alias _repo_) on GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Questo è essenziale, in quanto consente di lavorare sulla propria copia di freeCodeCamp su GitHub, o per scaricare (clonare) il tuo repository per lavorare localmente. Più tardi, potrai richiedere modifiche da tirare nel repository principale dal tuo fork tramite una pull request (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] Il repository principale su `https://github.com/freeCodeCamp/freeCodeCamp` è spesso indicato come il repository `upstream`. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Il tuo fork su `https://github.com/YOUR_USER_NAME/freeCodeCamp` è spesso indicato come il repository `origin`. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Segui questi passaggi per effettuare il fork del repository `https://github.com/freeCodeCamp/freeCodeCamp`:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Vai al repository freeCodeCamp su GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. Fare clic sul pulsante "Fork" nell'angolo in alto a destra dell'interfaccia ([Maggiori dettagli qui](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Dopo che il repository è stato forked, sarai portato alla tua copia del repository freeCodeCamp su `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
                - Come effettuare il fork freeCodeCamp su GitHub (screenshot) + How to fork freeCodeCamp on GitHub (screenshot)
                - Come fork freeCodeCamp su GitHub + How to fork freeCodeCamp on GitHub
                -## Clona il tuo fork da GitHub +## Clone your fork from GitHub -[Clonazione](https://help.github.com/articles/cloning-a-repository/) è dove **scarichi** una copia di un repository da una `posizione remota` che è di proprietà di te o di qualcun altro. Nel tuo caso, questa posizione remota è il tuo `fork` del repository di freeCodeCamp che dovrebbe essere disponibile su `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Esegui questi comandi sulla tua macchina locale: +Run these commands on your local machine: -1. Apri un terminale / prompt dei comandi / Shell nella directory dei progetti +1. Open a Terminal / Command Prompt / Shell in your projects directory - _cioè: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. Clona il tuo fork di freeCodeCamp, sostituendo `YOUR_USER_NAME` con il tuo nome utente GitHub +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Questo scaricherà l'intero repository freeCodeCamp nella directory dei tuoi progetti. +This will download the entire freeCodeCamp repository to your projects directory. -Nota: `--depth=1` crea un clone superficiale del fork, con solo la cronologia più recente/commit. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Imposta la sincronizzazione dal genitore +## Set up syncing from parent -Ora che hai scaricato una copia del fork, dovrai configurare un remoto `upstream` nel repository padre. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Come accennato poc'anzi](#fork-the-repository-on-github), il repository principale si riferisce al repository `upstream`. Il tuo fork si riferisce al repository `origin`. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Hai bisogno di un riferimento dal tuo clone locale al repository `upstream` oltre al repository `origin`. Questo è in modo che è possibile sincronizzare le modifiche dal repository principale senza il requisito di forking e clonazione ripetutamente. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Cambia la directory nella nuova directory freeCodeCamp: +1. Change directory to the new freeCodeCamp directory: ```console cd freeCodeCamp ``` -2. Aggiungi un riferimento remoto al repository freeCodeCamp principale: +2. Add a remote reference to the main freeCodeCamp repository: ```console git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Assicurati che la configurazione sia corretta: +3. Ensure the configuration looks correct: ```console git remote -v ``` - L'output dovrebbe apparire come sotto: + The output should look something like below: ```console - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Eseguire freeCodeCamp localmente +## Running freeCodeCamp locally -Ora che si dispone di una copia locale di freeCodeCamp, è possibile seguire queste istruzioni per eseguirlo localmente. Questo vi permetterà di: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Anteprima delle modifiche alle pagine come apparirebbero sulla piattaforma di apprendimento. -- Lavori su questioni e miglioramenti relativi all'interfaccia utente. -- Debug e correzione dei problemi con i server delle applicazioni e le app client. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Se si esegue un problema, prima di eseguire una ricerca web per il tuo problema e vedere se è già stato risposto. Se non riesce a trovare una soluzione, si prega di cercare la nostra [GitHub problemi](https://github.com/freeCodeCamp/freeCodeCamp/issues) pagina per una soluzione e segnalare il problema se non è ancora stato segnalato. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -E come sempre, sentiti libero di salire sul nostro [Contributori Chat room su Gitter](https://gitter.im/FreeCodeCamp/Contributors) o [il nostro server Discord](https://discord.gg/pFspAhS), per domande rapide. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!SUGGERIMENTO] Puoi saltare l'esecuzione di freeCodeCamp localmente se stai semplicemente modificando i file. Ad esempio, eseguendo un `rebase`o risolvendo `unioni` conflitti. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Puoi sempre tornare a questa parte delle istruzioni più tardi. Dovresti **solo** saltare questo passaggio se non hai bisogno di eseguire le app sulla tua macchina. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Salta per apportare modifiche](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Configurare le dipendenze +### Configuring dependencies -#### Passo 1: Impostare il file variabile di ambiente +#### Step 1: Set up the environment variable file -Le chiavi API predefinite e le variabili di ambiente sono memorizzate nel file `sample.env`. Questo file deve essere copiato in un nuovo file chiamato `.env` a cui si accede dinamicamente durante la fase di installazione. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Creare una copia del "sample.env" e nominarlo ".env". -# Popolare con le chiavi API e i segreti necessari: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp esempio. nv .env +cp sample.env .env # Windows copy sample.env .env ``` -Le chiavi nel file `.env` non sono __ necessarie per essere modificate per eseguire l'applicazione localmente. Puoi lasciare i valori predefiniti copiati da `sample.env` come-is. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!SUGGERIMENTO] Tenete a mente se volete utilizzare servizi come Auth0 o Algolia, dovrai acquisire le tue chiavi API per questi servizi e modificare le voci di conseguenza nel `. nv` file. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Passo 2: Installa dipendenze +#### Step 2: Install dependencies -Questo passaggio installerà le dipendenze richieste per l'esecuzione dell'applicazione: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Passo 3: Avvia MongoDB e semina il database +#### Step 3: Start MongoDB and seed the database -Prima di poter eseguire l'applicazione localmente, è necessario avviare il servizio MongoDB. +Before you can run the application locally, you will need to start the MongoDB service. -> [!NOTA] A meno che non si abbia MongoDB in esecuzione in una configurazione diversa da quella predefinita, l'URL memorizzato come valore `MONGOHQ_URL` nel `. nv` file dovrebbe funzionare bene. Se si utilizza una configurazione personalizzata, modificare questo valore come necessario. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Avviare il server MongoDB in un terminale separato: +Start the MongoDB server in a separate terminal: -- Su macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- Su Windows, è necessario specificare il percorso completo del binario `mongod` +- On Windows, you must specify the full path to the `mongod` binary ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Assicurati di sostituire `3.6` con la versione che hai installato + Make sure to replace `3.6` with the version you have installed -> [!SUGGERIMENTO] Puoi evitare di avviare MongoDB ogni volta installandolo come servizio in background. Puoi [saperne di più su di esso nella loro documentazione per il tuo sistema operativo](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Successivamente, cerchiamo di seminare il database. In questo passaggio, eseguiamo il comando sottostante che riempie il server MongoDB con alcuni set di dati iniziali richiesti dai servizi. Tra questi figurano alcuni schemi, tra le altre cose. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console npm run seed ``` -#### Passo 4: Avviare l'applicazione client freeCodeCamp e il server API +#### Step 4: Start the freeCodeCamp client application and API server -Ora è possibile avviare il server API e le applicazioni client. +You can now start up the API server and the client applications. ```console npm run develop ``` -Questo singolo comando attiverà tutti i servizi, compreso il server API e le applicazioni client disponibili su cui lavorare. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!NOTA] Una volta pronto, apri un browser web e **visita **. Se l'app si carica, congratulazioni – sei tutto impostato! Ora hai una copia dell'intera piattaforma di apprendimento di freeCodeCamp in esecuzione sulla tua macchina locale. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] Il server API serve le API su `http://localhost:3000`. L'app Gatsby serve l'applicazione client su `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Se visiti dovresti vedere le API disponibili. +> If you visit you should see the available APIs. -## Accedi con un utente locale +## Sign in with a local user -La tua configurazione locale popola automaticamente un utente locale nel database. Facendo clic sul pulsante `Accedi` ti autenticerà automaticamente nell'applicazione locale. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Tuttavia, accedere alla pagina del portafoglio utente è un po 'difficile. In fase di sviluppo, Gatsby si occupa di servire le pagine lato client e quindi si otterrà una pagina `404` per il portafoglio di utenti quando si lavora localmente. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Basta cliccare sul pulsante **"Anteprima personalizzata 404 Page"** ti inoltrerà alla pagina corretta. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
                - Come accedere quando si lavora localmente (screenshot) + How to sign in when working locally (screenshot)
                - Come accedere quando si lavora localmente + How to sign in when working locally
                -## Apportare modifiche a livello locale +## Making changes locally -Ora è possibile apportare modifiche ai file e inviare le modifiche al clone locale del fork. +You can now make changes to files and commit your changes to your local clone of your fork. -Segui questi passaggi: +Follow these steps: -1. Convalida che sei nel ramo `master`: +1. Validate that you are on the `master` branch: ```console git status ``` - Si dovrebbe ottenere un output come questo: + You should get an output like this: ```console - Sul branch master - Il tuo branch è aggiornato con 'origin/master'. + On branch master + Your branch is up-to-date with 'origin/master'. - niente da commit, directory di lavoro pulita + nothing to commit, working directory clean ``` - Se non sei su master o la tua directory di lavoro non è pulita, risolvi qualsiasi file/commit e controlla `master`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console git checkout master ``` -2. Sincronizza le ultime modifiche dal ramo `master` di freeCodeCamp a monte del ramo principale locale: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!ATTENZIONE] Se hai una richiesta di pull in sospeso che hai fatto dal ramo `master` del tuo fork, li perderai alla fine di questo passaggio. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Dovresti assicurarti che la tua pull request sia unita da un moderatore prima di eseguire questo passaggio. Per evitare questo scenario, dovresti **sempre** lavorare su un ramo diverso dal `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Questo passaggio **sincronizzerà le ultime modifiche** dal repository principale di freeCodeCamp. È importante che si rebase il ramo in cima all'ultimo `upstream/master` il più spesso possibile per evitare i conflitti in seguito. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Aggiorna la tua copia locale del repository upstream freeCodeCamp: + Update your local copy of the freeCodeCamp upstream repository: ```console git fetch upstream ``` - Hard reset il ramo principale con il master freeCodeCamp: + Hard reset your master branch with the freeCodeCamp master: ```console git reset --hard upstream/master ``` - Spingere il ramo principale alla tua origine per avere una cronologia pulita sul tuo bivio su GitHub: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console git push origin master --force ``` - Puoi convalidare il tuo master attuale corrisponde a upstream/master eseguendo una diff: + You can validate your current master matches the upstream/master by performing a diff: ```console git diff upstream/master ``` - L'output risultante dovrebbe essere vuoto. + The resulting output should be empty. -3. Crea un nuovo ramo: +3. Create a fresh new branch: - Lavorare su un ramo separato per ogni problema ti aiuta a mantenere pulita la tua copia di lavoro locale. Non dovresti mai lavorare sul `maestro`. Questo sarà terreno la tua copia di freeCodeCamp e potrebbe essere necessario ricominciare da capo con un nuovo clone o forchetta. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Verificare di essere il `master` come spiegato in precedenza, e diramarsi da lì: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Il nome del ramo dovrebbe iniziare con un `fix/`, `feat/`, `docs/`, ecc. Evitare di utilizzare i numeri di problema nei rami. Evitare di utilizzare i numeri di problema nei rami. Tienili brevi, significativi e unici. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Alcuni esempi di buoni nomi dei rami sono: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,156 +330,156 @@ Segui questi passaggi: translate/add-spanish-basic-html ``` -4. Modifica le pagine e lavora sul codice nel tuo editor di testo preferito. +4. Edit pages and work on code in your favorite text editor. -5. Una volta che sei soddisfatto delle modifiche, dovresti opzionalmente eseguire freeCodeCamp localmente per visualizzare in anteprima le modifiche. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Assicurati di correggere eventuali errori e controlla la formattazione delle modifiche. +6. Make sure you fix any errors and check the formatting of your changes. -7. Controlla e conferma i file che stai aggiornando: +7. Check and confirm the files you are updating: ```console git status ``` - Questo dovrebbe mostrare un elenco di `file non preparati` che hai modificato. + This should show a list of `unstaged` files that you have edited. ```console - Su branch feat/documentation - Il ramo è aggiornato con 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Modifiche non organizzate per commit: - (usa "git add/rm ... per aggiornare ciò che sarà impegnato) - (usa "git checkout -- . ." per scartare le modifiche nella directory di lavoro) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - modificato: CONTRIBUTING. d - modificato: docs/README.md - modificato: docs/how-to-setup-freecodecamp-locally. d - modificato: docs/how-to-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Fase delle modifiche e commettere un impegno: +8. Stage the changes and make a commit: - In questo passaggio, dovresti contrassegnare solo i file che hai modificato o aggiunto te stesso. È possibile eseguire un reset e risolvere i file che non avete intenzione di modificare, se necessario. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console git add path/to/my/changed/file.ext ``` - Oppure puoi aggiungere tutti i file `non preparati` all'area di stadio: + Or you can add all the `unstaged` files to the staging area: ```console git add . ``` - Solo i file che sono stati spostati nell'area di staging verranno aggiunti quando si effettua un commit. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Uscita: + Output: ```console - Su branch feat/documentation - Il ramo è aggiornato con 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Modifiche da inviare: - (usa "git reset HEAD ..." to unstage) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - modified: CONTRIBUTING.md - modified: docs/README.md - modified: docs/how-to-setup-freecodecamp-locally.md - modified: docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Ora, è possibile eseguire il commit delle modifiche con un breve messaggio come questo: + Now, you can commit your changes with a short message like so: ```console git commit -m "fix: my short commit message" ``` - Alcuni esempi: + Some examples: ```md - correzione: aggiornamento articolo guida per Java - per ciclo - caratteristica: aggiungi articolo guida per le abilità alexa + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - Facoltativo: + Optional: - Consigliamo vivamente di inviare un messaggio di commit convenzionale. Questa è una buona pratica che vedrete su alcuni dei popolari repository Open Source. Come sviluppatore, questo ti incoraggia a seguire le pratiche standard. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Alcuni esempi di messaggi di commit convenzionali sono: + Some examples of conventional commit messages are: ```md - correzione: aggiorna l'articolo guida HTML - correzione: aggiorna gli script di build per Travis-CI - funzione: aggiungi l'articolo per JavaScript hoisting - docs: aggiorna le linee guida per contribuire + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - Mantieni questi brevi, non più di 50 caratteri. È sempre possibile aggiungere ulteriori informazioni nella descrizione del messaggio di commit. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Questo non richiede tempo aggiuntivo rispetto a un messaggio non convenzionale come 'file di aggiornamento' o 'add index.md' + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Puoi saperne di più sul perché dovresti usare i commit convenzionali [qui](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Se ti rendi conto che è necessario modificare un file o aggiornare il messaggio di commit dopo aver fatto un commit puoi farlo dopo aver modificato i file con: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console git commit --amend ``` - Questo aprirà un editor di testo predefinito come `nano` o `vi` dove è possibile modificare il titolo del messaggio di commit e aggiungere/modificare la descrizione. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Successivamente, è possibile inviare le modifiche al fork: +10. Next, you can push your changes to your fork: ```console git push origin branch/name-here ``` -## Proporre una richiesta Pull (PR) +## Proposing a Pull Request (PR) -Dopo aver effettuato le modifiche, controlla qui per [come aprire una richiesta Pull](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Riferimento comandi rapidi +## Quick commands reference -Un rapido riferimento ai comandi di cui avrai bisogno quando lavorerai localmente. +A quick reference to the commands that you will need when working locally. -| comando | descrizione | -| -------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `npm ci` | Installa / reinstalla tutte le dipendenze e avvia i diversi servizi. | -| `npm run seed` | Analizza tutti i file di markdown della sfida e li inserisce in MongoDB. | -| `npm run develop` | Avvia il server API freeCodeCamp e le applicazioni client. | -| `npm test` | Eseguire tutti i test JS nel sistema, inclusi i test client, server, lint e challenge . | -| `npm run test:client` | Eseguire la suite di test client. | -| `npm run test:curriculum` | Eseguire la suite di test curriculum. | -| `npm run test:curriculum --block='Basic HTML e HTML5'` | Prova un Blocco specifico. | -| `npm run test:curriculum --superblock='responsive-web-design'` | Prova un SuperBlock specifico. | -| `npm run test-curriculum-full-output` | Eseguire il curriculum test suite, senza bailing dopo il primo errore | -| `npm run test:server` | Eseguire la suite di test del server. | -| `npm run e2e` | Eseguire il Cypress end per terminare i test. | -| `npm run clean` | Disinstalla tutte le dipendenze e pulisce le cache. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Risoluzione Dei Problemi +## Troubleshooting -### Problemi con l'installazione dei prerequisiti raccomandati +### Issues with installing the recommended prerequisites -Sviluppiamo regolarmente sui più recenti o più popolari sistemi operativi come macOS 10.15 o successivi, Ubuntu 18.04 o più tardi e Windows 10 (con WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Si consiglia di ricercare il vostro problema specifico su risorse come Google, Stack Overflow e Stack Exchange. C'è una buona probabilità che qualcuno abbia affrontato lo stesso problema e c'è già una risposta alla tua domanda specifica. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Se si è su un sistema operativo diverso e/o si stanno ancora eseguendo problemi, vedere [ottenere aiuto](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!ATTENZIONE] +> [!WARNING] > -> Si prega di evitare di creare problemi GitHub per i problemi prerequisiti. Sono al di fuori del campo di applicazione di questo progetto. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Problemi con l'UI, i Caratteri, gli errori di compilazione ecc. +### Issues with the UI, Fonts, build errors etc. -Se si verificano problemi con l'interfaccia utente, i caratteri o vedere gli errori di compilazione una pulizia può essere utile: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean @@ -488,17 +488,17 @@ npm run seed npm run develop ``` -O +OR -Usa il collegamento +Use the shortcut ``` npm run clean-and-develop ``` -Se continui ad affrontare problemi con la costruzione, si consiglia di ripulire lo spazio di lavoro. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Usa `git clean` in modalità interativa: +Use `git clean` in interative mode: ``` git clean -ifdX @@ -506,41 +506,41 @@ git clean -ifdX
                - Come pulire i file git non tracciati (screenshot) + How to clean git untracked files (screenshot)
                - Come pulire i file git non tracciati + How to clean git untracked files
                -### Problemi con le API, l'accesso, le presentazioni della sfida, ecc. +### Issues with API, Login, Challenge Submissions, etc. -Se non riesci ad accedere e invece vedi un banner con un messaggio di errore che verrà segnalato a freeCodeCamp, si prega di controllare che la porta locale `3000` non sia in uso da un programma diverso. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**Su Linux / macOS / WSL su Windows - Dal terminale:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console -netstat -ab grep "3000" +netstat -ab | grep "3000" -tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**Su Windows - Da Elevated PowerShell:** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab Select-String "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Problemi nell'installazione delle dipendenze +### Issues installing dependencies -Se si ottengono errori durante l'installazione delle dipendenze, assicurati di non essere in una rete ristretta o le impostazioni del firewall non ti impediscono di accedere alle risorse. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -La prima configurazione può richiedere un po' di tempo a seconda della larghezza di banda di rete. Sii paziente, e se sei ancora bloccato abbiamo raccomandato di utilizzare GitPod invece di una configurazione offline. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Ottenere Aiuto +## Getting Help -Se sei bloccato e hai bisogno di aiuto, fatecelo sapere chiedendo nella categoria ['Contributori' sul nostro forum](https://forum.freecodecamp.org/c/contributors) o la [stanza di chat dei contributori](https://gitter.im/FreeCodeCamp/Contributors) su Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Potrebbe esserci un errore nella console del browser o in Bash / Terminal / Linea di comando che aiuterà a identificare il problema. Fornire questo messaggio di errore nella descrizione del problema in modo che gli altri possano identificare più facilmente il problema e aiutarvi a trovare una risoluzione. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Italian/how-to-setup-wsl.md b/docs/i18n/Italian/how-to-setup-wsl.md index c4b937498b..68bce6dde6 100644 --- a/docs/i18n/Italian/how-to-setup-wsl.md +++ b/docs/i18n/Italian/how-to-setup-wsl.md @@ -1,26 +1,26 @@ -# Impostare freeCodeCamp sul sottosistema Windows per Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!NOTA] Prima di seguire queste istruzioni assicurarsi che il sistema soddisfi i requisiti +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 a 64 bit (Versione 2004, Costruisci 19041 o superiore) - disponibile per tutte le distribuzioni tra cui Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop for Windows**: Vedi i rispettivi requisiti per [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) e [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Questa guida copre alcuni passi comuni con la configurazione di WSL2. Una volta affrontati alcuni dei problemi comuni con il WSL2, si dovrebbe essere in grado di seguire la nostra guida di configurazione locale per lavorare con freeCodeCamp su Windows in esecuzione una distro WSL come Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Abilita WSL +## Enable WSL -Segui le istruzioni sulla [documentazione ufficiale](https://docs.microsoft.com/en-us/windows/wsl/install-win10) per installare WSL1 e seguiti dall'aggiornamento a WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Si consiglia l'uso di Ubuntu-18.04 o superiore con WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!NOTA] + > [!NOTE] > - > Mentre si può utilizzare altre distanze non debiane basate, tutti vengono con i loro gotcha e sono al di là della portata di questa guida. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Aggiorna le dipendenze per il sistema operativo +2. Update the dependencies for the OS ```console sudo apt update @@ -30,51 +30,51 @@ Segui le istruzioni sulla [documentazione ufficiale](https://docs.microsoft.com/ sudo apt autoremove -y ``` -## Imposta Git +## Set up Git -Git viene preinstallato con Ubuntu 18.04, verifica che la tua versione Git con `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ - git --version -git versione 2.25.1 +❯ git --version +git version 2.25.1 ``` -(Facoltativo ma consigliato) Ora puoi procedere alla [impostazione dei tuoi tasti ssh](https://help.github.com/articles/generating-an-ssh-key) con GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Installazione di un editor di codice +## Installing a Code Editor -Consigliamo vivamente di installare [Visual Studio Code](https://code.visualstudio.com) su Windows 10. Ha un grande supporto per WSL e installa automaticamente tutte le estensioni necessarie sul vostro distro WSL. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -Essenzialmente, modificherai e memorizzerai il tuo codice su Ubuntu-18.04 con il codice VS installato su Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Installazione Del Docker Desktop +## Installing Docker Desktop -**Docker Desktop for Windows** consente di installare ed eseguire database e servizi come MongoDB, NGINX, ecc. Questo è utile per evitare insidie comuni con l'installazione di MongoDB o altri servizi direttamente su Windows o WSL2. Questo è utile per evitare insidie comuni con l'installazione di MongoDB o altri servizi direttamente su Windows o WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Segui le istruzioni sulla [documentazione ufficiale](https://docs.docker.com/docker-for-windows/install) e installa Docker Desktop per la tua distribuzione di Windows. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Ci sono alcuni requisiti hardware minimi per la migliore esperienza. +There are some minimum hardware requirements for the best experience. -## Configura Docker Desktop per WSL +## Configure Docker Desktop for WSL -Una volta installato Docker Desktop, [segui queste istruzioni](https://docs.docker.com/docker-for-windows/wsl) e configuralo per utilizzare l'installazione Ubuntu-18.04 come backend. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Questo lo rende in modo che i contenitori funzionino sul lato WSL invece di funzionare su Windows. Potrai accedere ai servizi su `http://localhost` sia su Windows che su Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Installa MongoDB da Docker Hub +## Install MongoDB from Docker Hub -Una volta configurato Docker Desktop per lavorare con WSL2, seguire questi passaggi per avviare un servizio MongoDB: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Avvia un nuovo terminale Ubuntu-18.04 +1. Launch a new Ubuntu-18.04 terminal -2. Tirare `MongoDB 3.6` dal dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Avvia il servizio MongoDB alla porta `27017`e configuralo per essere eseguito automaticamente sul riavvio del sistema +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console docker run -it \ @@ -85,18 +85,18 @@ Una volta configurato Docker Desktop per lavorare con WSL2, seguire questi passa -d mongo:3 ``` -4. Ora puoi accedere al servizio sia da Windows che da Ubuntu a `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Installazione di Node.js e npm +## Installing Node.js and npm -Si consiglia di installare la versione LTS per Node.js con un gestore di versioni dei nodi - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Una volta installato utilizzare questi comandi per installare e utilizzare la versione Node.js come necessario +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts -# O +# OR # nvm install nvm install 14 @@ -107,23 +107,23 @@ nvm install 14 nvm use 12 ``` -Node.js viene fornito in bundle con `npm`, è possibile aggiornare alle ultime versioni di `npm` con: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console npm install -g npm@latest ``` -## Imposta freeCodeCamp localmente +## Set up freeCodeCamp locally -Ora che hai installato i pre-requisiti, segui [la nostra guida di configurazione locale](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) per clonare, installare e configurare freeCodeCamp localmente sulla tua macchina. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!ATTENZIONE] +> [!WARNING] > -> Si prega di notare che, in questo momento, la configurazione per i test Cypress (e le relative esigenze GUI) sono un lavoro in corso. Si dovrebbe ancora essere in grado di lavorare sulla maggior parte del codebase. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Link Utili +## Useful Links -- [Un WSL2 Dev Setup con Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - un articolo di Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) -- Domande frequenti su: - - [Sottosistema Windows per Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Docker Desktop per Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Italian/how-to-use-docker-on-windows-home.md b/docs/i18n/Italian/how-to-use-docker-on-windows-home.md index 84fdce7c82..85ac65a3e3 100644 --- a/docs/i18n/Italian/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Italian/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Come usare Docker su Windows Home +# How to use Docker on Windows Home -Ci sono alcuni insidie da evitare quando si imposta docker su Windows Home. Prima di tutto devi usare [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) come amministratore. Purtroppo Windows Home non supporta Docker per Windows Desktop, quindi gli strumenti devono essere usati. Deve essere eseguito come Amministratore in quanto l'installazione utilizza collegamenti simbolici che non possono essere creati altrimenti. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Una volta installato il pannello degli strumenti, eseguire Docker Quickstart Terminal come amministratore. Questo creerà una macchina virtuale `predefinita` se non esiste già. Una volta che è accaduto, chiudere il terminale e aprire VirtualBox (ancora come Amministratore). Dovresti essere in grado di vedere la `macchina predefinita`. Il sito è abbastanza intensivo di risorse, quindi fermare la macchina virtuale e aumentare le impostazioni per quanto è possibile - memoria in particolare. È stato confermato di lavorare con 4GB di montone. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Una volta che sei felice che Docker stia funzionando, clonare il repository freeCodeCamp a una directory all'interno di `C:\Users`. Queste directory sono condivise dando accesso Docker alle directory locali, di cui ha bisogno durante l'installazione. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Se vedi messaggi come +If you see messages like ```shell -bash: change_volumes_owner.sh: Nessun file o directory +bash: change_volumes_owner.sh: No such file or directory ``` when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Italian/how-to-work-on-coding-challenges.md b/docs/i18n/Italian/how-to-work-on-coding-challenges.md index b606c69f49..2b95545e91 100644 --- a/docs/i18n/Italian/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Italian/how-to-work-on-coding-challenges.md @@ -1,136 +1,140 @@ -# Come lavorare sulle sfide della codifica +# How to work on coding challenges -Il nostro obiettivo è quello di sviluppare un'esperienza di apprendimento interattiva divertente e chiara. +Our goal is to develop a fun and clear interactive learning experience. -Progettare le sfide di codifica interattiva è difficile. Sarebbe molto più facile scrivere una spiegazione lunga o creare un video tutorial, e c'è un posto per quelli su Medium e YouTube. Tuttavia, per il nostro curriculum di base, ci atteniamo a ciò che funziona meglio per la maggior parte delle persone - un'esperienza completamente interattiva, come il videogioco. +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. -Vogliamo che i camper raggiungano uno stato di flusso. Vogliamo che costruiscano slancio e sfondino attraverso il nostro curriculum con il minor numero di intoppi possibile. Vogliamo che entrino nei progetti con fiducia e che si espongano ampiamente ai concetti di programmazione. +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. -La creazione di queste sfide richiede un'immensa creatività e attenzione ai dettagli. C'è un sacco di aiuto disponibile. Avrai il supporto di un intero team di collaboratori a cui puoi rimbalzare le idee e demo le tue sfide. Rimani attivo nella [sala contributori](https://gitter.im/freecodecamp/contributors) e fai molte domande. +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/). -Con il vostro aiuto possiamo progettare un curriculum di programmazione interattivo che aiuterà milioni di persone a imparare a programmare per gli anni a venire. +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. -Il contenuto di ogni sfida viene memorizzato nel proprio file markdown. Questo file markdown viene successivamente convertito in HTML utilizzando i nostri strumenti per creare pagine web interattive. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Puoi trovare tutti i contenuti curriculari di freeCodeCamp.org nella directory [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges). +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. -## Imposta lo strumento per il curriculum +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Prima di lavorare sul curriculum, è necessario impostare alcuni strumenti per aiutarti a testare le modifiche. È possibile utilizzare qualsiasi opzione dal sotto: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- È possibile [impostare freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). Questo è **altamente raccomandato** per contributi regolari/ripetuti. Questa configurazione ti permette di lavorare e testare le modifiche. -- Usa Gitpod, un ambiente dev online gratuito. Facendo clic sul pulsante qui sotto si avvierà un ambiente dev ready-to-code per freeCodeCamp nel tuo browser. Ci vogliono solo pochi minuti. +## Set up the tooling for the curriculum - [![Apri in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Modificare i file sull'interfaccia di GitHub facendo clic sull'icona della matita per il file corrispondente. Mentre questo è il modo più veloce, è **non raccomandato**, perché non sei in grado di testare le modifiche su GitHub. Se i nostri manutentori concludono che le modifiche apportate devono essere testate localmente, è necessario seguire i metodi sopra invece di nuovo. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Template Sfida + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Di seguito è riportato un modello di come i file markdown sfida assomigliano attualmente. Per vedere il modello semplificato che adotteremo vedi [sotto](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: Identificatore unico (alfanumerico, MongoDB_id) +id: Unique identifier (alphanumerical, MongoDB_id) title: Challenge Title challengeType: 0 -videoUrl: 'url of video spiegation' +videoUrl: 'url of video explanation' --- -## Descrizione +## Description
                -Una descrizione della sfida e di ciò che è necessario per passare +A Description of the challenge and what is required to pass
                -## Istruzioni +## Instructions
                -Istruzioni su cosa è necessario fare. +Instructions about what exactly needs to be done.
                -## Test +## Tests
                ```yml -test: - - testo: Dovrebbe restituire "foo" - testStringa di test: 'Una funzione stringified possibilmente utilizzando Chai asserts' +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
                -## Seme Sfida +## Challenge Seed
                ```{ext} -Codice visualizzato nell'editor per impostazione predefinita. +Code displayed in the editor by default. -Questa è una sezione necessaria per la sfida. +This is a required section for the challenge. ```
                -### Prima Del Test +### Before Test
                ```{ext} -Codice di configurazione del test opzionale. +Optional Test setup code. ```
                -### Dopo Il Test +### After Test
                ```{ext} -Codice opzionale di abbattimento del test. +Optional Test tear down code. ```
                -## Soluzione +## Solution
                ```{ext} -// soluzione richiesta +// solution required ```
                ```` -> [!NOTA] +> [!NOTE] > -> 1. Nelle sezioni precedenti, esempi di `{ext}` sono: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Per la sezione `Tests` sopra, `text` e `testString` dovrebbero essere stringhe YAML valide. `testString` può essere una funzione o espressione stringified usando che potrebbe usare gli assert di Chai. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Sfide di numerazione +## Numbering Challenges -Ogni sfida ha bisogno di un `id`. Se non ne specifichi uno, MongoDB ne creerà una nuova casuale quando salva i dati; tuttavia, non vogliamo che lo faccia, dal momento che vogliamo che gli id della sfida siano coerenti in diversi ambienti (staging, produzione, un sacco di diversi sviluppatori, ecc.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -Per generarne uno nuovo in una shell (supponendo che MongoDB sia in esecuzione separatamente): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Esegui il comando `mongo`. -2. Esegui il comando `ObjectId()`. +1. Run `mongo` command. +2. Run `ObjectId()` command. -Per esempio: +For example: -``bash +```bash $ mongo MongoDB shell version v3.6.1 connecting to: mongodb://127.0.0.1:27017 @@ -140,249 +144,327 @@ $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Il risultato è un nuovo id, ad esempio `5a474d78df58bafeb3535d34` sopra. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -Una volta che hai il tuo id, mettilo nel file markdown come il campo `id` in alto, ad es. +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- -id: 5a474d78df58bafeb35d34 +id: 5a474d78df58bafeb3535d34 title: Challenge Title ``` ## Naming challenges -Nominare le cose è difficile. Abbiamo reso più facile imponendo alcuni vincoli. +Naming things is hard. We've made it easier by imposing some constraints. -Tutti i titoli di sfida dovrebbero essere espliciti e seguire questo modello: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[clausola oggetto\] +\[verb\]\[object clause\] -Ecco alcuni nomi di sfida di esempio: +Here are some example challenge names: -- Usa Notazione in senso orario per specificare la Padding di un Elemento -- Array densi con .reduce -- Usa la notazione parentesi per trovare il primo carattere in una stringa +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Descrizioni/istruzioni della sfida +## Challenge descriptions/instructions -Le frasi devono essere chiare e concise con il gergo minimo. Se usato, il gergo deve essere immediatamente definito in inglese semplice. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Mantenere i paragrafi brevi (circa 1-4 frasi). Le persone hanno più probabilità di leggere diversi brevi paragrafi di un muro di testo. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Il testo della sfida dovrebbe usare la seconda persona ("tu") per contribuire a dargli un tono di conversazione. In questo modo il testo e le istruzioni sembrano parlare direttamente al camper che lavora attraverso la sfida. Cercate di evitare di usare la prima persona ("I", "noi", "noi", e "noi"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Non utilizzare link in uscita. Questi interrompono il flusso. I campeggiatori non dovrebbero mai dover cercare nulla durante queste sfide. Se ci sono risorse da cui pensi che i campeggiatori trarrebbero beneficio, aggiungerli all'articolo Guida della sfida. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -È possibile aggiungere diagrammi se assolutamente necessario. +You can add diagrams if absolutely necessary. -Non usare emoji o emoticon nelle sfide. freeCodeCamp ha una comunità globale, e il significato culturale di un emoji o emoticon può essere diverso in tutto il mondo. Inoltre, gli emoji possono renderli in modo diverso su sistemi diversi. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -I sostantivi appropriati dovrebbero usare la capitalizzazione corretta quando possibile. Di seguito è riportato un elenco di parole come dovrebbero apparire nelle sfide. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (lettere maiuscole in "J" e "S" e senza abbreviazioni) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Lo sviluppo front-end (modulo aggettivo con un trattino) è quando si sta lavorando sul front-end (forma nun senza trattino). Lo stesso vale per "back end", "full stack", e molti altri termini composti. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### Regola di 2 minuti +### The 2-minute rule -Ogni sfida dovrebbe essere risolvibile entro 120 secondi da un madrelingua inglese che ha completato le sfide che ci portano. Questo include la quantità di tempo che ci vuole per leggere le direzioni/istruzioni per capire il codice di semina, scrivere il proprio codice e ottenere tutti i test da passare. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Se ci vogliono più di due minuti per completare la sfida, hai due opzioni: +If it takes longer than two minutes to complete the challenge, you have two options: -- Semplificare la sfida, o -- Dividi la sfida in due sfide. +- Simplify the challenge, or +- Split the challenge into two challenges. -La regola di 2 minuti ti costringe, il progettista della sfida, a rendere le tue direzioni concise, il tuo codice del seme chiaro e i tuoi test immediati. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Tracciamo quanto tempo ci vuole per i campeggiatori per risolvere i cambiamenti e utilizzare queste informazioni per identificare le sfide che devono essere semplificate o divise. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modularità +### Modularity -Ogni sfida dovrebbe insegnare esattamente un concetto, e questo concetto dovrebbe essere evidente dal nome della sfida. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Possiamo rafforzare i concetti precedentemente coperti attraverso ripetizioni e varianti - per esempio, introdurre elementi h1 in una sfida, poi elementi h3 alcune sfide più tardi. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Il nostro obiettivo è quello di avere migliaia di sfide di 2 minuti. Questi possono confluire insieme e ribadire concetti precedentemente coperti. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Formattazione testo sfida +### Formatting challenge text -Ecco le linee guida di formattazione specifiche per il testo della sfida ed esempi: +Here are specific formatting guidelines for challenge text and examples: -- Le parole chiave della lingua vanno in `` tag. Ad esempio, nomi di tag HTML o nomi di proprietà CSS -- La prima istanza di una parola chiave quando è in fase di definizione, o parole chiave generali (cioè "object" o "immutabile") vanno in `` tag -- I riferimenti alle parti di codice (cioè funzione, metodo o nomi di variabili) dovrebbero essere inseriti in tag ``. Vedi esempio sotto: -- Usa parseInt per convertire la variabile realNumber in un numero intero. -- I blocchi di codice multi-riga **devono essere preceduti da una riga vuota**. La riga successiva deve iniziare con tre backticks seguiti immediatamente da una delle [lingue supportate](https://prismjs.com/#supported-languages). Per completare il blocco di codice, è necessario avviare una nuova riga che ha solo tre backticks e **un'altra riga vuota**. **Nota:** Se hai intenzione di utilizzare un codice di esempio in YAML, usa `yaml` invece di `yml` per la lingua a destra dei backtick. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Vedi esempio sotto: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Di seguito è riportato un esempio di codice: +The following is an example of code: ```{language} -[IL TUO CODICE QUI] +[YOUR CODE HERE] ```` ```` -- Ulteriori informazioni nella forma di una nota dovrebbero essere formattate `Nota: Riposo del testo della nota... - Se sono necessarie più note, quindi elenca tutte le note in frasi separate usando il formato `Note: Testo prima nota. Seconda nota testo.`. -- Usa virgolette doppie se del caso +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Test di scrittura +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Le sfide dovrebbero avere il numero minimo di test necessari per verificare che un camper capisca un concetto. +## Writing tests -Il nostro obiettivo è quello di comunicare il singolo punto che la sfida sta cercando di insegnare, e di verificare che hanno capito quel punto. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -I test di sfida possono fare uso delle librerie di asserzione Node.js e Chai.js. Inoltre, se necessario, è possibile accedere al codice generato dall'utente nella variabile `code`. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Formattazione del seed code +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Ecco le linee guida specifiche per la formattazione del seed code: +## Formatting seed code -- Usa due spazi per indentare -- Le istruzioni JavaScript terminano con un punto e virgola -- Usa le virgolette doppie dove applicabile -- I commenti fatti dovrebbero avere uno spazio tra i caratteri del commento e il commento essi stessi +Here are specific formatting guidelines for the challenge seed code: - `// Correggi questa riga` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Suggerimenti e soluzioni +### Seed code comments -Ogni sfida ha un pulsante `Ottieni un Hint`, così un utente può accedere a qualsiasi suggerimento/soluzione creata per la sfida. Gli argomenti del curriculum hints/solutions si trovano sul [nostro forum](https://forum.freecodecamp.org/c/guide) nella categoria `Guide`. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Se trovi un problema con l'argomento suggerimenti/soluzioni di una sfida esistente, puoi fare suggerimenti nella [categoria contributori](https://forum.freecodecamp.org/c/contributors) sul forum. I moderatori e gli utenti con livello di fiducia 3 esamineranno i commenti e decideranno se includere o meno le modifiche nell'argomento suggerimento/soluzioni corrispondenti. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Aggiungere nuovi suggerimenti/soluzioni Sfida Argomenti +Example of valid single line JavaScript comment: -Adottare i seguenti passi quando si aggiunge un nuovo argomento relativo ai suggerimenti/alle soluzioni. +```js +// Only change code below this line +```` -1. Inizia seguendo gli stessi passaggi per creare un nuovo argomento, ma rivedi il successivo per creare il titolo. -2. Il titolo dell'argomento dovrebbe iniziare con la `freeCodeCamp Challenge Guide: ` concatenata con il titolo effettivo della sfida del curriculum. Ad esempio, se la sfida è chiamata "`Chunky Monkey`", il titolo dell'argomento sarebbe "`freeCodeCamp Challenge Guide: Chunky Monkey`". -3. `camperbot` dovrebbe essere il proprietario di questi argomenti/post, quindi dovrai richiedere a un amministratore di cambiare la proprietà del post principale in `camperbot`. -4. Una volta creato il nuovo argomento, viene creato un ID topic del forum. Si trova alla fine dell'URL dell'argomento del forum. Questo id deve essere aggiunto alla parte frontale del file di sfida del curriculum tramite il normale processo di pull request per il pulsante `Get a Hint` per collegarsi all'argomento. +Example of a valid CSS comment: -### Linee guida per il contenuto di suggerimenti e soluzioni +```js +/* Only change code above this line */ +``` -Quando si propone una soluzione per un argomento relativo alla sfida dei programmi di studio, deve essere aggiunto il codice completo. Questo include tutto il codice di seed originale più eventuali modifiche necessarie per superare tutti i test di sfida. Il seguente modello dovrebbe essere usato quando si creano nuovi suggerimenti/soluzioni argomenti: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
                + { /* Change code below this line */ } + + { /* Change code above this line */ } +

                {this.state.text}

                +
                + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: ````md -# Sfida Nome va qui +# Challenge Name Goes Here --- -## Problema Spiegazione +## Problem Explanation -Questo riassume ciò che deve essere fatto senza semplicemente riformulare la descrizione della sfida e/o le istruzioni. Questa è una sezione opzionale +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section -#### Link rilevanti +#### Relevant Links - [Link Text](link_url_goes_here) - [Link Text](link_url_goes_here) --- -## Suggerimenti +## Hints -### Suggerimenti 1 +### Hint 1 -Suggerimento va qui +Hint goes here -### Suggerimento 2 +### Hint 2 -Suggerimento va qui +Hint goes here --- -## Soluzioni +## Solutions -
                Soluzione 1 (Clicca per Mostrare/Nascondi) +
                Solution 1 (Click to Show/Hide) -````js +```js function myFunc() { - console. og('Ciao Mondo!'); + console.log('Hello World!'); } ```` -#### Spiegazione Del Codice +#### Code Explanation -- La spiegazione del codice va qui -- La spiegazione del codice va qui +- Code explanation goes here +- Code explanation goes here -#### Collegamenti Relativi +#### Relevant Links -- [Testo Collegamento](link_url_goes_here) -- [Testo Collegamento](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
                ```` -## Sfide di test +## Testing Challenges -Prima di [creare una pull request](how-to-open-a-pull-request. d) per le modifiche, è necessario convalidare che le modifiche apportate non causano inavvertitamente problemi con la sfida. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Per testare tutte le sfide esegui il comando sotto dalla directory radice +1. To test all challenges run the below command from the root directory ```` npm run test:curriculum ``` -2. Puoi anche testare un blocco o un superblocco di sfide con questi comandi +2. You can also test a block or a superblock of challenges with these commands ``` -npm run test:curriculum --block='Basic HTML e HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` npm run test:curriculum --superblock=responsive-web-design ``` -Sei anche in grado di testare una sfida individualmente eseguendo i seguenti passaggi: +You are also able to test one challenge individually by performing the following steps: -1. Passa alla directory `curriculum`: +1. Switch to the `curriculum` directory: ``` cd curriculum ``` -2. Eseguire il seguente per ogni file di sfida per il quale è stato modificato: +2. Run the following for each challenge file for which you have changed: ``` - npm run test -- -g 'il titolo inglese completo della sfida' + npm run test -- -g 'the full English title of the challenge' ``` -Una volta verificato che ogni sfida ha superato i test, [crea una pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). -> [!SUGGERIMENTO] -> Puoi impostare la variabile d'ambiente `LOCALE` nel `.env` nella lingua della sfida(e) che devi provare. +> [!TIP] +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> I valori attualmente accettati sono `english` e `chinese`, con `english` impostato per impostazione predefinita. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Prossimo modello di sfida +## Upcoming Challenge Template -Il modello di sfida in corso di aggiornamento ad una struttura più pulita e meno nidificata. Questo non è stato completamente finalizzato, ma quanto segue dovrebbe essere vicino alla struttura finale: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: ````mdx --- -id: Identificatore univoco (alfanumerico, MongoDB_id) +id: Unique identifier (alphanumerical, MongoDB_id) title: 'Challenge Title' -challengeType: Integer, definito in `client/utils/challengeTypes. s` -videoUrl: 'url of video spiegation' +challengeType: Integer, defined in `client/utils/challengeTypes.js` +videoUrl: 'url of video explanation' forumTopicId: 12345 --- -import Script da './script. dx'; +import Script from './script.mdx'; ## --step-description-- -Testo della descrizione, in markdown +Description text, in markdown ```html
                - codice di esempio + example code
                ``` @@ -390,18 +472,18 @@ Testo della descrizione, in markdown ![test-id-1] -Ci sarà un numero arbitrario di triplicazioni di ids, istruzioni (in markdown) e blocchi di codice. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Codice della prova uno +Code for test one ``` ![test-id-2] -Altre istruzioni nella sintassi di markdown +More instructions in markdown syntax ```js -Più codice +More code ``` ## --step-seed-- @@ -409,13 +491,13 @@ Più codice ### --before-user-code-- ```lang -Codice valutato prima dell’utente +Code evaluated before the user’s ``` ### --after-user-code-- ```lang -Codice valutato dopo l'utente, e poco prima dei test +Code evaluated after the user’s, and just before the tests ``` ### --seed-content-- @@ -423,15 +505,15 @@ Codice valutato dopo l'utente, e poco prima dei test ![index-html] ```html -Alcuni html +Some html ``` ```css -Alcuni css +Some css ``` ```js -Alcuni js +Some js ``` ![index-js] @@ -446,7 +528,7 @@ Alcuni js

                - Esattamente la stessa sezione dei semi + Exactly the same as the seeds section

                @@ -456,7 +538,7 @@ Alcuni js

                - Stesso di nuovo + Same again

                @@ -470,7 +552,7 @@ Alcuni js

                - La domanda sarebbe andare qui (utilizzato solo per le sfide video) + The question would go here (only used for video challenges)

                @@ -480,19 +562,19 @@ Alcuni js

                - Risposta 1 + Answer 1


                - Risposta 2 + Answer 2


                - Risposta 2 + More answers

                @@ -512,13 +594,13 @@ Alcuni js

                - Link Utili + Useful Links

                - Sfide di creazione e modifica: + Creating and Editing Challenges:

                @@ -526,14 +608,14 @@ Alcuni js
                1. - Tipi di Sfida - ciò che significano i valori del tipo di sfida numerica (enum). + Challenge types - what the numeric challenge type values mean (enum).

                2. - Contribuire a FreeCodeCamp - Writing ES6 Challenge Tests - un video che segue Ethan Arrowood in quanto contribuisce alla vecchia versione del curriculum. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

                3. diff --git a/docs/i18n/Italian/how-to-work-on-the-docs-theme.md b/docs/i18n/Italian/how-to-work-on-the-docs-theme.md index f27a5c9542..bf8bf8f6c9 100644 --- a/docs/i18n/Italian/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Italian/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Come lavorare sul tema dei documenti +# How to work on the docs theme -> [!NOTA] Un rapido promemoria che non è necessario configurare nulla per lavorare sul contenuto del sito di documentazione. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Per lavorare sulle linee guida di contributo, è possibile modificare o aggiungere file nella directory `docs` [disponibile qui](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Quando le modifiche vengono unite, saranno rese disponibili automaticamente sul sito di documentazione. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Struttura del sito docs +## Structure of the docs website -Il sito viene generato utilizzando [`docsify`](https://docsify.js.org)e servito utilizzando le pagine di GitHub. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -In genere non è necessario modificare alcuna configurazione o costruire il sito localmente. Nel caso in cui siete interessati, ecco come funziona: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- La fonte della homepage per questo sito è disponibile in [`docs/index.html`](index.html). -- Serviamo questo file come SPA usando `docsify` e GitHub Pages. -- Lo script `docsify` genera il contenuto di `file markdown` nella directory `docs` su richiesta. -- La homepage è generata dal [`_coverpage.md`](_coverpage.md). -- la navigazione della barra laterale è generata da [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Servizio locale del sito di documentazione +## Serving the documentation site locally -Clona freeCodeCamp: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -Installa `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -e serve la directory `/docs` +and serve the `/docs` directory -```sh +```console docsify serve docs ``` -In alternativa, se hai installato freeCodeCamp localmente (vedi la guida di installazione locale), impacchettiamo la CLI con gli strumenti di sviluppo in modo da poter eseguire `npm run docs:serve` dalla root del repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Italian/how-to-work-on-the-news-theme.md b/docs/i18n/Italian/how-to-work-on-the-news-theme.md index 665b22e5f9..51ad62ccf0 100644 --- a/docs/i18n/Italian/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Italian/how-to-work-on-the-news-theme.md @@ -1,8 +1,99 @@ - https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md \ No newline at end of file +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). + +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Italian/index.md b/docs/i18n/Italian/index.md index 829e091c89..1c4add4ab3 100644 --- a/docs/i18n/Italian/index.md +++ b/docs/i18n/Italian/index.md @@ -1,45 +1,43 @@ -La comunità [freeCodeCamp.org](https://freecodecamp.org) è possibile grazie a migliaia di volontari come te. Accogliamo con favore tutti i contributi alla comunità e siamo entusiasti di darvi il benvenuto a bordo. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTA] Prima di procedere, si prega di prendere un rapido 2 minuti per leggere il nostro [Codice di condotta](https://www.freecodecamp.org/code-of-conduct). Lo applichiamo rigorosamente in tutta la nostra comunità. Vogliamo contribuire a freeCodeCamp.org per essere un'esperienza sicura e inclusiva per tutti. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Buon contributo. +Happy contributing. -Siete invitati a: +You are welcome to: -- Crea, aggiorna e correggi i bug nelle nostre [sfide di codifica](#coding-challenges). -- Aiutaci a correggere i bug nella piattaforma di apprendimento [di freeCodeCamp.org](#learning-platform). -- _(Presto in arrivo)_ Aiutaci a tradurre freeCodeCamp.org nelle lingue del mondo. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Hai domande? Vai a [queste FAQ](/FAQ.md) dove rispondiamo ad alcune domande comuni sul contributo. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Sfide Di Codifica +## Curriculum -Tutte le nostre sfide di programmazione sono curate dalla comunità, portando in conoscenza esperta da volontari come te. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Puoi aiutarli ad espanderli e migliorare la loro formulazione. È inoltre possibile aggiornare le storie degli utenti per spiegare meglio il concetto o rimuovere quelli ridondanti e migliorare i test di sfida per renderli più accurati testare il codice delle persone. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Se sei interessato a migliorare queste sfide di codifica, ecco [come lavorare sulle sfide di codifica](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Piattaforma Di Apprendimento +## Learning Platform -La nostra piattaforma di apprendimento funziona su uno stack JavaScript moderno. Ha vari componenti, strumenti e librerie, tra cui, ma non solo, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, e altro ancora. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -In generale, +Broadly, we use -- Abbiamo un server API basato su Node.js. -- Un insieme di applicazioni client basate su React. -- Uno script che usiamo per valutare i nostri progetti di front-end. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contribuire a questo richiede una certa comprensione di API, Sintassi ES6 e molta curiosità. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -In sostanza, ci aspettiamo una familiarità di base con alcune delle suddette tecnologie, strumenti e biblioteche. Detto questo, non è richiesto di essere un esperto su di loro per contribuire. +If you want to help us improve our codebase... -**Se vuoi aiutarci a migliorare il nostro codebase, puoi usare Gitpod, un ambiente dev online gratuito** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Apri in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Avvia un ambiente dev ready-to-code per freeCodeCamp nel tuo browser.) +Or you can... -O - -**puoi [impostare freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md) sulla tua macchina.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Italian/moderator-handbook.md b/docs/i18n/Italian/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Italian/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
                  + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Japanese/FAQ.md b/docs/i18n/Japanese/FAQ.md index 3aee199187..e6ef4fed0d 100644 --- a/docs/i18n/Japanese/FAQ.md +++ b/docs/i18n/Japanese/FAQ.md @@ -1,95 +1,76 @@ -### GitHubとOpen Sourceは初めてですが、どこから始めるべきでしょうか? +### I am new to GitHub and Open Source. Where should I start? -["オープンソースガイドに貢献する方法"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source) を読んでください。 これは、最初のタイマーフレンドリーなプロジェクトとガイドラインの圧縮リソースです。 +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### freeCodeCampのカリキュラムを翻訳できますか? +### Can I translate freeCodeCamp's curriculum? -freeCodeCampでは、 **中国** から始まるローカライゼーションの取り組みを開始します。 +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -より多くの言語でカリキュラムを利用できるようにするつもりですが、期限にはまだコミットできません。 スタッフ、アクティブな貢献者、サーバーコストなどのいくつかの運用制限は、国際化(i18n)の取り組みを推進する役割を果たします。 +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -私たちはこれらの言語でi18nの取り組みを開始する予定です:アラビア語、ポルトガル語。 私たちは中国語でカリキュラムをリリースした後、ロシア語とスペイン語(特に順序はありません)。 +### How can I report a new bug? -**なぜ中国のカリキュラムに注目しているのですか?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -中国は、英語を母国語としない聴衆の中で最大の人口学的地域です。 現在、数十万人のユーザーが古いバージョンのプラットフォームを使用しています。 中国のカリキュラムに焦点を当てると、i18nに関連する物流の見積もりができます。 +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -私たちは、ポルトガルとスペインの人口統計地域としてラテンアメリカに焦点を当てます。 +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -上記以外の言語へのi18nの予定はありません。 +### How can I report a security issue? -上記の言語でi18nに取り組むことをお勧めしません。 展開時の任意のタイムラインを期待することなく、プルリクエストを受け入れることができます。 +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### 新しいバグを報告するにはどうすればいいですか? +### I am a student. Can I work on a feature for academic credits? -バグを見つけたと思われる場合は、最初に ["ヘルプ私はバグを見つけました"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) の記事を読んで、その指示に従ってください。 +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -新しいバグだと確信している場合は、先に進んで新しいGitHubの問題を作成してください。 バグを再現できるように、できるだけ多くの情報を含めるようにしてください。 これを支援するために事前に定義された課題テンプレートがあります。 +We request you to plan ahead and work on code contributions with this in mind. -チャレンジでコーディング支援を求める問題は解決されますのでご注意ください。 課題トラッカーは、コードベースに関連する問題や議論のために厳密に使用されます。 疑わしいときはいつでも、報告する前に [フォーラム](https://forum.freecodecamp.org) で支援を求めるべきです。 +### What do these different labels that are tagged on issues mean? -### セキュリティ問題を報告するにはどうすればいいですか? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -セキュリティ上の問題については、GitHubの課題を作成しないでください。 代わりに、 `security@freecodecamp.org` にメールを送信してください。 +### Where do I start if I want to work on an issue? -### 私は学生ですが、私たちのチームは学術的な単位のための機能に取り組むことができますか? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -はい、もちろん。 +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -私たちはすべての貢献に開放されています あなたの大学や大学で要件となるような時間軸には一切関与しません 私たちはすべての貢献に開放されています あなたの大学や大学で要件となるような時間軸には一切関与しません 私たちは、ボランティア開発者による多くのプルリクエストやコード貢献を受けており、彼らの時間と努力を尊重しています。 私たちは、PRがすべてに公平であるために特別な注意を払うことはできません。 +### I found a typo. Should I report an issue before I can make a pull request? -これを念頭に置いて、事前に計画を立て、機能に取り組むようお願いします。 +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### 課題にタグ付けされているこれらの異なるラベルはどういう意味ですか? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -コードメンテナは [](https://en.wikipedia.org/wiki/Software_bug#Bug_management) の優先度、重大度、その他の要因に基づいてリクエストをトリアージしてプルします。 [こちら](https://github.com/freecodecamp/freecodecamp/labels) では、その意味の完全な用語集を見つけることができます。 +### How can I get an issue assigned to me? -### 問題に取り組む場合は、どこから始めますか? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -[**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quickly overview of a quick overview of what is available to work. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`のヘルプは`** の問題を把握しており、作業する前に許可を求める必要はありません。 ただし、 **`の最初のタイマーのみの問題`** は、以前に freeCodeCamp コードベースに貢献していない人のために予約されています。 これらの問題が何をすべきかを明確にしていない場合は、コメントで質問してください。 +### I am stuck on something that is not included in this documentation. -### タイプミスを見つけました。 プルリクエストを行う前に問題を報告しますか? - -タイプミスやその他の文言変更の場合、最初に問題を作成せずにプルリクエストを直接開くことができます。 問題は、カリキュラムのコードや構造的な側面に関連するより大きな問題を議論するためにより多くのものです。 - -ただし、プルリクエストの説明領域に詳細、内容などを記載し、ごくわずかな変更でもあなたの貢献を理解しレビューするのに役立ちます。 - -### 課題はどのように割り当てられますか? - -我々は通常、曖昧なノーショーを避けるために、長年の貢献者以外の誰にも問題を割り当てません。 代わりに、私たちは以下の方針に従い、すべての人に公平になります。 - -1. 任意の問題に対する最初のプルリクエストをマージすることを推奨します。 -2. 同じ問題に対する複数のプルリクエストの場合、プルリクエストのコードの品質を優先します。 - - テストを含めましたか? - - ユースケースは全部捕まえましたか? - - すべてのテストが合格することを確認し、すべてのテストがローカルで動作することを確認しましたか? -3. 最後に、私たちは推奨されるガイドラインに従ったプルリクエストを好みます。 - - プルリクエストのチェックリストをフォローしましたか? - - プルリクエストのタイトルに意味のある名前を付けましたか? - -先に説明したように、 `ヘルプ` または `最初のタイマーのみ` とマークされている課題に対する権限は必要ありません。 - -ガイドラインに従い、プルリクエストを開きます。 - -### 私はこのドキュメントに含まれていない何かに引っかかっています。 - -**お気軽にお問い合わせください:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -私たちは、あなたが作業したいトピックのいずれかに貢献するお手伝いをすることを楽しみにしています。 関連する問題のスレッドで私たちに質問をお気軽に, 我々は明確に喜んでいるだろう. 新しいクエリを投稿する前に必ずクエリを検索してください。 +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -礼儀正しく、患者である。 私たちのボランティアとモデレーターのコミュニティは、常にあなたの質問をガイドしています。 +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**追加のアシスト:** +**Additional Assistance:** -スタック、コードベースのアーキテクチャについて質問がある場合は、スタッフ開発チームまでお気軽にお問い合わせください。 +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| スタッフ | フォーラムにメッセージを送信 | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | | Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | @@ -98,4 +79,4 @@ freeCodeCampでは、 **中国** から始まるローカライゼーション | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | | Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**開発者スタッフにメールでお問い合わせください: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Japanese/_sidebar.md b/docs/i18n/Japanese/_sidebar.md index 0be25904de..1b5bda2bdc 100644 --- a/docs/i18n/Japanese/_sidebar.md +++ b/docs/i18n/Japanese/_sidebar.md @@ -1,36 +1,39 @@ -- **はじめに** - - [はじめに](index 'freeCodeCamp.org コミュニティに貢献する') - - [よく寄せられる質問](FAQ.md) -- **コード貢献** -- - [freeCodeCamp をローカルで設定](how-to-setup-freecodecamp-locally.md) - - [プルリクエストを開く](how-to-open-a-pull-request.md) - - [コーディングの課題に取り組むこと](how-to-work-on-coding-challenges.md) - - [ビデオの課題に取り組むこと](how-to-help-with-video-challenges.md) - - [ニュースのテーマを操作する](how-to-work-on-the-news-theme.md) - - [ドキュメントのテーマを操作する](how-to-work-on-the-docs-theme.md) -- **オプションガイド** - - [ローカルで送信メールをキャッチする](how-to-catch-outgoing-emails-locally.md) - - [WSL で freeCodeCamp を設定](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **フライトマニュアル** (スタッフ & Mod 用) - - [モデレーターハンドブック](flight-manuals/moderator-handbook.md) - - [返信テンプレート](flight-manuals/using-reply-templates.md) - - [DevOps の概要](devops.md) - - [サーバーでの作業](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **私たちのコミュニティ** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**ディスカッションフォーラム**](https://freecodecamp.org/forum/c/contributors) - - [**Gitter チャット**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Japanese/devops.md b/docs/i18n/Japanese/devops.md index 7c6962c804..46fb8b5382 100644 --- a/docs/i18n/Japanese/devops.md +++ b/docs/i18n/Japanese/devops.md @@ -1,100 +1,100 @@ -# freeCodeCamp.orgの開発者操作 +# DevOps Handbook -このガイドは、私たちのインフラストラクチャスタックと私たちのプラットフォームをどのように維持するかを理解するのに役立ちます。 このガイドでは、すべての操作について詳しく説明されているわけではありませんが、システムを理解するための参考として使用することができます。 +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -ご意見やご質問があれば、お知らせください。 +Let us know, if you have feedback or queries, and we will be happy to clarify. -## コードベースを構築、テスト、デプロイするにはどうすればよいでしょうか? +# Flight Manual - Code deployments -このリポジトリは、継続的に構築され、テストされ、インフラストラクチャの **個別のセット(サーバー、データベース、CDNなど)**にデプロイされます。 +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -これには3つのステップが含まれます。 +This involves three steps to be followed in sequence: -1. 新しい変更(修正と機能の両方)は、プルリクエストによりプライマリ開発ブランチ(`master`)にマージされます。 -2. これらの変更は、一連の自動テストで実行されます。 -3. テストが合格すると、インフラストラクチャ上でのデプロイメントに変更をリリース(または必要に応じて更新)します。 +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### コードベースのビルド - Git ブランチのデプロイメントへのマッピング +#### Building the codebase - Mapping Git Branches to Deployments. -通常 [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (デフォルトの開発ブランチ) が [`プロダクションステージングにマージされます`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) 1日1回分岐し、孤立したインフラストラクチャに解放されます。 +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -これは開発者とボランティアの方の中間リリースです。 私たちの「ステージング」または「ベータ」リリースとも呼ばれます。 +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -それは `freeCodeCamp.org`のライブプロダクション環境と同じで、データベース、サーバー、ウェブプロキシなどの別々のセットを使用しています。 この分離により、freeCodeCamp.orgのメインプラットフォームの正規ユーザーに影響を与えることなく、シナリオのような「本番」で継続的な開発と機能をテストすることができます。 +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -こちらはfreeCodeCamp.orgで本番プラットフォームに変更を加えた最終リリースです。 +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### テストの変更 - 統合とユーザー承認テスト。 +#### Testing changes - Integration and User Acceptance Testing. -私たちは、コードの品質を確認するために、さまざまなレベルの統合と受け入れテストを採用しています。 すべてのテストは、 [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) や [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp) のようなソフトウェアを介して行われます。 +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -当社では、チャレンジソリューション、Server API、クライアントユーザーインターフェイスをテストするための単体テストを行っています。 これらは、異なるコンポーネント間の統合をテストするのに役立ちます。 +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!NOTE] また、メールの更新やAPIやサードパーティサービスへの呼び出しなど、現実世界のシナリオを再現するのに役立つエンドユーザーテストを作成しています。 +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -これらのテストを組み合わせることで、問題が繰り返されるのを防ぎ、他のバグや機能の作業中にバグを導入しないようにします。 +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### 変更をデプロイする - 変更をサーバーにプッシュします。 +#### Deploying Changes - Pushing changes to servers. -当社では、開発サーバーと本番サーバーに変更をプッシュする継続的なデリバリーソフトウェアを設定しています。 +We have configured continuous delivery software to push changes to our development and production servers. -変更が保護されたリリースブランチにプッシュされると、そのブランチに対してビルドパイプラインが自動的にトリガーされます。 ビルドパイプラインは、アーティファクトを構築し、後で使用するために冷蔵庫に保管する責任があります。 +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -ビルドパイプラインは、成功した実行が完了した場合、対応するリリースパイプラインをトリガーします。 リリースパイプラインは、ビルドアーティファクトを収集し、それらをサーバーに移動してライブ配信する責任があります。 +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -ビルドとリリースのステータスは [こちら](#build-test-and-deployment-status)からご確認いただけます。 +Status of builds and releases are [available here](#build-test-and-deployment-status). -## ビルド、テスト、デプロイをトリガーします。 +## Trigger a build, test and deploy -現時点では、開発チームのメンバーのみが本番ブランチにプッシュできます。 `production-*` ブランチへの変更は、 [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp) への早送りマージによってのみ着陸できます。 +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!NOTE] 今後、アクセス管理と透明性を向上させるために、プルリクエストを介してこのフローを改善します。 +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### ステージングアプリケーションに変更をプッシュしています。 +### Pushing changes to Staging Applications. -1. リモートを正しく構成します。 +1. Configure your remotes correctly. ```sh git remote -v ``` - **結果:** + **Results:** ``` - origin git@github.com:raisedadead/freeCodeCamp.git (fetch) - origin git@github.com:raisedad/freeCodeCamp.git (push) - upstream git@git.com:freeCodeCamp/freeCodeCamp.git (fetch) - upstream git@git@git@github.com:freeCodeCamp/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. `master` ブランチが手つかずで、上流に同期していることを確認してください。 +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master - git fetch --all -prune + git fetch --all --prune git reset --hard upstream/master ``` -3. TravisのCIが `マスター` ブランチを上流に渡していることを確認してください。 +3. Check that the Travis CI is passing on the `master` branch for upstream. - [継続的インテグレーション](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) テストは緑色で、 `マスター` ブランチのPASSINGでなければなりません。 + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
                  Travis CI (スクリーンショット) でステータスを確認中 +
                  Checking status on Travis CI (screenshot)
                  - ![Travis CIでビルド状況を確認する](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
                  - これが失敗した場合は、停止してエラーを調査する必要があります。 + If this is failing you should stop and investigate the errors. -4. リポジトリをローカルにビルドできることを確認します。 +4. Confirm that you are able to build the repository locally. ``` npm run clean-and-develop ``` -5. 早送りマージで `マスター` から `プロダクションステージ` へ変更を移動 +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` git checkout production-staging @@ -102,34 +102,34 @@ Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeC git push upstream ``` - > [!NOTE] 強制的にプッシュすることはできず、とにかく履歴を書き直した場合、これらのコマンドはエラーになります。 + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > 彼らがそうした場合、あなたは間違って何かをしたかもしれませんし、あなたはちょうどやり直す必要があります。 + > If they do, you may have done something incorrectly and you should just start over. -上記の手順は、 `production-staging` ブランチのビルド パイプラインで自動的に実行をトリガーします。 ビルドが完了すると、アーティファクトは `.zip` ファイルとして保存され、後で取得して使用されます。 +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -接続されたビルドパイプラインから新たなアーティファクトが利用可能になると、リリースパイプラインが自動的にトリガーされます。 ステージングプラットフォームでは、このプロセスには手動での承認は含まれず、アーティファクトはクライアントCDNおよびAPIサーバーにプッシュされます。 +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP|label:見積もり] リリースの実行には、通常、クライアントインスタンスごとに約15~20分、APIインスタンスごとに約5~10分かかります。 コードプッシュから本番プラットフォーム上でのライブまで、全体のプロセスは合計で **~90~120分** かかります(スタッフの承認待ち時間はカウントされません)。 +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### 本番アプリケーションへの変更のプッシュ。 +### Pushing changes to Production Applications. -プロセスはほとんどステージングプラットフォームと同じで、いくつかの追加のチェックが行われます。 これは、freeCodeCamp.orgでは何も壊さず、何百人ものユーザーがいつでも使用しているのを見ることができます。 +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| すべてがステージングプラットフォームで動作していることを確認しない限り、これらのコマンドを実行しないでください。 さらに進む前に、ステージング上のテストをバイパスまたはスキップしないでください。 | -|:------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. `production-staging` ブランチが手つかずで、上流に同期していることを確認してください。 +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh git checkout production-staging - git fetch -all --prune + git fetch --all --prune git reset --hard upstream/production-staging ``` -2. 早送りマージで `プロダクションステージング` から `プロダクションカレント` へ変更を移動 +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` git checkout production-current @@ -137,91 +137,572 @@ Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeC git push upstream ``` - > [!NOTE] 強制的にプッシュすることはできず、とにかく履歴を書き直した場合、これらのコマンドはエラーになります。 + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > 彼らがそうした場合、あなたは間違って何かをしたかもしれませんし、あなたはちょうどやり直す必要があります。 + > If they do, you may have done something incorrectly and you should just start over. -上記のステップは、 `production-current` ブランチのビルドパイプラインで自動的に実行をトリガーします。 ビルドアーティファクトの準備が完了すると、リリースパイプラインで実行がトリガーされます。 +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP|label:見積もり] 通常、ビルド実行には約20~25分かかります。 +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**スタッフアクションの追加手順** +**Additional Steps for Staff Action** -リリースの実行がトリガーされると、開発者スタッフチームのメンバーは自動的に手動介入メールを受け取ります。 彼らは __ を承認するか、 _リリースの実行を_ 拒否することができます。 +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -変更がうまく動作し、ステージングプラットフォームでテストされている場合は、それを承認することができます。 承認は、自動的に拒否される前に、リリースがトリガーされてから4時間以内に行われる必要があります。 スタッフは、拒否された実行のために手動でリリース実行を再トリガーするか、リリースの次のサイクルを待つことができます。 +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -スタッフ用: +For staff use: -| メールアドレスに直接リンクがないか、 [ビルドの実行が完了したら](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) リリースダッシュボードに移動してください。 | -|:--------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -スタッフメンバーがリリースを承認すると、パイプラインはfreeCodeCamp.orgのプロダクションCDNおよびAPIサーバーに変更を反映させます。 クライアントには通常15~20分、APIサーバーには5分ほどかかります。 +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP|label:見積もり] 通常、ビルドの実行には20~25分ほどかかり、その後はクライアントにとって15~20分ほどかかるリリースランが続きます。 APIがライブ配信されるまで5~10分ほどかかります。 コードプッシュから本番プラットフォーム上でのライブまで、全体のプロセスは合計で **~90~120分** かかります(スタッフの承認待ち時間はカウントされません)。 +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## ビルド、テスト、デプロイステータス +## Build, Test and Deployment Status -ここでは、コードベースの現在のテスト、ビルド、およびデプロイの状況を示します。 +Here is the current test, build and deployment status of the codebase. -| タイプ | ブランチ | ステータス | ダッシュボード | -|:----------- |:-------------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------- | -| CI テスト | [`マスター`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI ビルド状況](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [ステータスダッシュボードに移動](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| CI テスト | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI ビルド状況](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [ステータスダッシュボードに移動](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| パイプラインを構築する | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![ビルド状態](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [ステータスダッシュボードに移動](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| パイプラインをリリース | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [ステータスダッシュボードに移動](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| CI テスト | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI ビルド状況](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [ステータスダッシュボードに移動](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| パイプラインを構築する | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![ビルド状態](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [ステータスダッシュボードに移動](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| パイプラインをリリース | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [ステータスダッシュボードに移動](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## 早期アクセスとベータテスト +## Early access and beta testing -これらのリリースを **"パブリックベータテスト"** モードでテストし、プラットフォームへの今後の機能への早期アクセスをお届けすることを歓迎します。 場合によっては、これらの機能/変更は **、次のベータ、ステージング、** などと呼ばれます。 +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -フィードバックやレポートの発行を通じたあなたの貢献は、 `freeCodeCampでのプロダクションプラットフォームの構築に役立ちます。 rg more` **resilient**, **consistent** and **stable** for everyone. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -freeCodeCamp.orgをより良くするために出会ったバグを報告してくれてありがとうございます。 ロックしました! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### プラットフォームの今後のバージョンを特定する +### Identifying the upcoming version of the platforms -現在、パブリックベータテストバージョンは次の場所で利用できます: +Currently a public beta testing version is available at:

                  freecodecamp.dev

                  -> [!NOTE] ドメイン名は **`freeCodeCamp.org`** とは異なります。 これは、検索エンジンのインデックス作成を防止し、プラットフォームの正規ユーザーにとって混乱を避けるために意図的です。 +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### プラットフォームの現在のバージョンを特定する +### Identifying the current version of the platforms -**プラットフォームの現在のバージョンは [`freeCodeCamp.org`](https://www.freecodecamp.org) で常に利用できます。** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -開発チームは、 `production-staging` ブランチから `production-current` への変更をリリースするときにマージします。 トップコミットは、サイト上でライブで見るものでなければなりません。 +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -状況セクションで使用可能なビルドおよびデプロイのログにアクセスして、デプロイされた正確なバージョンを確認できます。 あるいは、 [投稿者のチャットルーム](https://gitter.im/FreeCodeCamp/Contributors) で確認を行うこともできます。 +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### 既知の制限 +### Known Limitations -プラットフォームのベータ版を使用する場合、いくつかの既知の制限とトレードオフがあります。 +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### これらのベータプラットフォーム上のすべてのデータ / 個人的な進捗状況は `保存されたり本番環境に` 渡されたりすることはありません。 +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **ベータ版のユーザーは本番と別のアカウントを持つことになります。 ** ベータ版は本番と物理的に分離されたデータベースを使用します。 これにより、偶発的なデータの損失や変更を防ぐことができます。 開発チームは、必要に応じてこのベータ版のデータベースを削除する可能性があります。 + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### ベータ版プラットフォームの稼働時間と信頼性については保証はありません。 +- #### There are no guarantees on the uptime and reliability of the beta platforms. - 展開は頻繁で、迅速な反復では、時には1日に複数回行われることが期待されます。 その結果、ベータ版で予期しないダウンタイムや機能が壊れることがあります。 + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### 修正を確認する手段として、このサイトに正規ユーザーを送信しないでください +- #### Do not send regular users to this site as a measure of confirming a fix - ベータサイトは、常にローカルの開発とテストを拡張することであり、他のものではありません。 それは何が来るかの約束ではありませんが、何が取り組まれているかを垣間見ることができます。 + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### サインページがプロダクションと異なる場合があります +- #### Sign page may look different than production - Auth0のfreecodecamp.dev用のテストテナントを使用しているため、カスタムドメインを設定することはできません。 これにより、すべてのリダイレクトコールバックとログインページが以下のようなデフォルトドメインに表示されるようになります: `https://freecodecamp-dev.auth0.com/`. これは、私たちが得ることができるように生産に近い機能に影響を与えません。 + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## 問題の報告とフィードバックの残す +## Reporting issues and leaving feedback -ディスカッションやバグの報告のために、新たな課題を開いてください。 **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** というラベルを付けることができます。 +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -質問があれば、 `dev[at]freecodecamp.org` にメールを送信できます。 すべてのセキュリティ脆弱性は、公開トラッカーやフォーラムではなく、 `security[at]freecodecamp.org` に報告する必要があります。 +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

                  https://amplify.nginx.com

                  +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Japanese/flight-manuals/moderator-handbook.md b/docs/i18n/Japanese/flight-manuals/moderator-handbook.md deleted file mode 100644 index 3eabd43e24..0000000000 --- a/docs/i18n/Japanese/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,328 +0,0 @@ -# 公式のfreeCodeCampモデレーターハンドブック。 - -これにより、以下を含むコミュニティのさまざまな場所を管理することができます。 - -- GitHub の問題 & pull request -- フォーラム、チャットルーム、Facebookグループ、その他のオンライン会議場所 -- 学習グループ、ハッカソン、カンファレンスなどの対人イベント - -**すべてのfreeCodeCampモデレータはコミュニティ全体のモデレータです。 つまり、私たちはあなたがこれらの場所のいずれかを監督することを信頼していることを意味します。** - -これは、あなたがあなたにとって最も興味のあるどの場所でもモデレータとして機能することができます。 一部のモデレータはGitHubでお手伝いします。 他の人はちょうどフォーラムで助ける。 モデレータの中には、どこでもアクティブなものがあります。 - -最後に、モデレータであることを楽しんでほしいということです。 あなたに興味のある場所に不足している時間を投資してください - -> [!NOTE] "偉大な力には大きな責任が伴います。 - ベンおじさん - -モデレータとして、気質は技術的スキルよりも重要です。 - -聞いてください。 役に立ちましょう。 権力を乱用してはいけません。 - -freeCodeCampは包括的なコミュニティであり、そのようにしておく必要があります。 - -私たちにはコミュニティ全体を支配する単一の行動規範があります ルールが少ないほど覚えやすくなります。 ルールが少ないほど覚えやすくなります。 これらのルールを読んでメモリにコミットすることができます [ここ](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -モデレータは、課題をクローズし、プルリクエストを受け入れるか、またはクローズすることができます。 - -モデレータは GitHub に関して主に 2 つの責任があります: - -1. プルリクエストをQAとマージする -2. 課題の評価と対応 - -## プルリクエストをモデレート中 - -プルリクエスト(PR)とは、freeCodeCampのリポジトリにコントリビューターが変更を送信する方法です。 プルリクエストをマージするか閉じるかを決定する前に、品質保証(QA)を実行することが重要です。 - -### プルリクエストの種類 - -1. **チャレンジ命令編集** チャレンジのテキスト(説明、手順、テストテキスト)への変更です。 GitHubでこれらを確認し、マージするかどうかを決定することもできます。 これらについてもう少し注意する必要があります。 なぜなら、freeCodeCampカリキュラムを通して何百万人もの人々がこのテキストに遭遇するからです。 プルリクエストは、テキストをより長くすることなく、より明確にしますか? 編集内容は、関連性が高く、過度にペダニックではありませんか? 我々の目標は、可能な限り明確かつ短期間に挑戦することであることを忘れないでください。 彼らは曖昧な詳細のための場所ではありません。 また、貢献者はチャレンジにリソースへのリンクを追加しようとすることがあります。 これらのプルリクエストを閉じて、次のように返信できます。 - - > プルリクエストありがとうございます。 - > - > 私はこのプルリクエストを終了します。 代わりに、リンクやその他の詳細をチャレンジの対応するガイド記事に追加してください。 - > - > この問題を閉じる際に私が間違っていると思われる場合は、再度開いて、さらに説明を追加してください。 ありがとう、そして幸せなコーディング。 - -2. **Challenge Code Edits** これらはチャレンジのコードに対する変更です - チャレンジシード、チャレンジソリューション、テスト文字列です。 これらのプルリクエストはGitHubからプルダウンし、現在のソリューションでチャレンジテストを受けられるようにローカルコンピュータでテストする必要があります。 新しいコードではエラーは発生しません 寄稿者の中には、追加のテストを追加しようとすることもあります。 私たちは、あまりにも複雑な挑戦をしないように注意する必要があります。 これらの課題とそのテストは可能な限りシンプルで直感的なものでなければなりません。 アルゴリズムの課題とインタビューの準備セクションは別として、学習者は約2分以内に各チャレンジを解決することができます。 - -3. **コードベースの変更** これらのコード編集はfreeCodeCampプラットフォーム自体の機能を変更します。 貢献者は説明なしに変更を加えようとすることがありますが、コードの変更については、その変更が真に必要であることを確認する必要があります。 したがって、これらのプルリクエストは、変更の理由が説明されている既存の GitHub の問題を参照する必要があります。 その後、コンピュータでプルリクエストを開き、ローカルでテストすることができます。 あなたがそうした後、変更が良く見える場合は、まだそれらをマージしないでください。 「LGTM」と言うプルリクエストにコメントし、@raisedadeadをメンションすると、最終的に見ることができます。 - -### プルリクエストをマージまたはクローズする方法 - -まず、QAへのプルリクエストを選択する際には、それを自分で割り当てる必要があります。 GitHubインターフェースの右側の列にある「担当者」の下にある「自分自身を割り当てる」リンクをクリックすることで、これを行うことができます。 - -プルリクエストの種類に応じて、上記の対応するルールに従ってください。 - -プルリクエストをマージする前に、GitHub がすべてに緑色のチェックマークを付けていることを確認してください。 Xがある場合は、まずそれらを調べて、まず緑色のチェックマークに変える方法を見つけます。 - -時にはマージ競合が発生することがあります。 つまり、別のプルリクエストが、その同じファイルの全く同じ部分に変更を加えたことになります。 GitHub には、GitHub 上でこれらのマージ競合に対処するためのツールがあります。 これらの競合に対処しようとすることができます。 あなたの最善の判断を使ってください。 プルリクエストの変更が上に表示され、Masterブランチの変更が下に表示されます。 時にはそこに冗長な情報があり、削除することができます。 Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. - -プルリクエストがマージの準備ができているように見える場合(@raisedadeadからの承認を必要としない場合)、プルリクエストをマージしてください。 GitHub でデフォルトの "Scash and Merge" 機能を使用してください。 これにより、すべてのプルリクエストがコミットされて単一のコミットにスカッシュされ、Gitの履歴が読みやすくなります。 - -それからあなた自身の方法で貢献者に感謝するプルリクエストにコメントする必要があります。 - -プルリクエストの作成者が "初めての投稿者" であれば、リポジトリへの最初のマージされたプルリクエストに対してそれらを祝福する必要があります。 PRのボディの右上隅を見て、初めてのコントリビューターを決定することができます。 以下のように、 `初めての貢献者` を表示します。 - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615__%C%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -プルリクエストがマージの準備ができていない場合は、作成者に準備をするために何をすべきかを伝えて丁寧に返信することができます。 うまくいけば、彼らは返信し、準備に近い彼らのプルリクエストを取得します。 - -多くの場合、プルリクエストは明らかに低い労力です。 コントリビューターが、プルリクエストテンプレートのチェックボックスをチェックしなくても、すぐに分かることがあります。 または、"made changes" や "Update index" のような一般的なプルリクエストタイトルを使用しました。 "d". - -コントリビューターが自分のウェブサイトへのリンクを追加しようとしている状況もあります。 自分自身で作成したライブラリや軽薄な編集をしているのです 自分自身以外の誰にも役に立ちません - -両方の状況では、先に進んでプルリクエストを閉じて、この標準メッセージに返信する必要があります。 - -> このプルリクエストを開いていただきありがとうございます。 -> -> これはプルリクエストをレビューし、マージしないことを決定したことを通知する標準的なメッセージです。 今後のプルリクエストを歓迎します。 -> -> ありがとうございました。ありがとうございます。 - -プルリクエストにセカンドオピニオンが必要な場合は、先に進んで、プルリクエストにコメントを残してください。 次に、プルリクエストに "discussing" ラベルを追加します。 - -## GitHubの問題をモデレート中 - -freeCodeCampはアクティブなオープンソースプロジェクトです。 私たちは毎日新しい問題を抱えており、それらはすべてトリアージされ、ラベル付けされる必要があります。 - -### GitHub の問題の種類 - -1. **GitHubの課題を誤って作成したコードヘルプリクエスト**。 誰かが助けを求めている場合は、次のメッセージを貼り付け、問題を閉じます。 - - > この問題を報告していただきありがとうございます。 - > - > これは、この問題がヘルプのリクエストであることを知らせる標準的なメッセージです。 こちらでヘルプを求める代わりに、freeCodeCampのチャレンジにある\*\*\*\*ボタンをクリックしてください。 フォーラムの右側に質問を作成するのに役立ちます フォーラムのボランティアは通常、数時間以内に質問に回答し、コードに問題があるかどうか、テストに問題があるかどうかを判断するのに役立ちます。 - > - > フォーラムメンバーがコードに問題がないと判断した場合は、この問題を再度開くよう要求することができます。 - > - > ありがとうございました。ありがとうございます。 - -2. **バグや明確化の問題** 可能であれば、自分でバグを再現してみてください。 そうでない場合は、バグを再現する手順とスクリーンショットがあるかどうかを尋ねます。 そうでない場合は、バグを再現する手順とスクリーンショットがあるかどうかを尋ねます。 問題を再現するのに役立つビデオや追加の詳細。 問題を再現できるようになったら - または少なくともそれが合法な問題であることを確認してください - ラベルをつけてください `確認しました`. その後: - -- 既存のチャレンジへの簡単な変更であれば、 `最初のタイマーのみ`としてラベル付けし、それ以外の場合は `ヘルプが` としてラベル付けします。 適切に他のラベルを使用してください。 -- 問題がより重要な場合は、 `バグ` としてフラグを付けてください。   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. - -3. **重複問題** 問題が別の報告された問題と同じ場合は、以前に報告された問題が優先されるべきである。 `Duplicate`としてフラグ `#XXXXX` に置き換える次のメッセージを貼り付け、問題番号を閉じます。 - - > この問題を報告していただきありがとうございます。 - > - > これは、この問題が #XXXXX と非常によく似ていることを知らせる標準的なメッセージです。 複製として閉じます。 - > - > この問題を閉じる際に私が間違っていると思われる場合は、再度開いて、さらに説明を追加してください。 ありがとうございました。ありがとうございます。 - -4. **ステージングで修正** ステージングで既に問題が修正されている可能性がありますが、GitHubに関連付けられていない問題があります。 この場合、次のメッセージを貼り付け、問題を閉じ、 `ステータスを追加することができます: resolved/shipping` ラベル: - - > この問題を報告していただきありがとうございます。 - > - > これはあなたがここで述べた問題がプロダクションに存在していることを知らせる標準的なメッセージです。 既にステージングで固定されています これは、次回ステージングブランチを本番環境にプッシュするときに、この問題を修正する必要があることを意味します。 そのために、この問題を終了します。 - > - > この問題を閉じる際に私が間違っていると思われる場合は、再度開いて、さらに説明を追加してください。 ありがとうございました。ありがとうございます。 - -### 古い、古い、無効な問題とプルリクエストを閉じる - -- 古い問題またはPRは、OPから21日間活動を見ていないものです(最後の活動から3週間)。 しかし、モデレータがより多くの情報/変更を要求した後にのみ。 これらは自動化/ボットスクリプトまたはモデレータ自身で閉じることができます。 - -- Activity is defined as: Comments required an update on the PR and triages like `status: update required` label etc. - -- OPが追加の援助を求める場合、または時間がかかる場合は、応答が与えられた後にリラックスして再訪することができます。 いずれにせよ、改造者は、優れたPRの状態を解決するために最善の判断をしなければなりません。 - -### GitHubのモデレータに関するその他のガイドライン - -freeCodeCampのリポジトリへの書き込み権限はありますが、 **freeCodeCampリポジトリに直接コードをプッシュしてはいけません**. すべてのコードは、freeCodeCampのコードベースをリポジトリのフォークからのプルリクエストという形で入力する必要があります。 - -また、あなた自身のPRを受け入れるべきではありません。 他のPRと同様に、別のモデレータがQAにする必要があります。 - -GitHubの問題で [行動規範](https://code-of-conduct.freecodecamp.org) を破っている人がいることに気付いたら または、悪意のあるコンテンツまたはコードでプルリクエストを開き、dev@freecodecampにメールします。 問題のあるプルリクエストへのリンクを持つrgと、freeCodeCampのGitHub組織から完全に禁止することを検討することができます。 - -# フォーラムをモデレート中 - -モデレーターとして、あなたは私たちのコミュニティを誰もが学び、助けを得るための楽しい場所に保つのを助けます。 フラグ付きの投稿やスパム、トピック外、その他の不適切な会話を処理します。 - -フォーラムのモデレータになると、フォーラムメンバーについてのブルーモデレータのヒントが表示されることに注意してください。 例えば「これが [person] が投稿したのは初めてです。 コミュニティへようこそ! 「[person]」や「[person] 」は長く投稿されていません。 歓迎しましょう。 - -!["これは [person] が投稿した初めてのブルーテキストメッセージです - コミュニティへようこそ!](https://i.imgur.com/mPmVgzK.png) - -これらはあなたがそれらを歓迎し、それらを特別な気分にさせる機会です。 あなたは誰がわずかに関与しているか分からないが、私たちの次のスーパーヘルパーになるかもしれない、彼らのコーディングの旅で他の多くの人々を助ける。 小さな親切でさえ、善行の連鎖を引き起こす可能性があります。 - -### フォーラムの投稿を削除中 - -フォーラムモデレータはユーザーの投稿を削除することができます。 以下の場合にのみこれを行う必要があります。 - -1. 誰かがポルノやグラフィカルに暴力的な画像を投稿しました。 -2. 誰かが本質的に悪意のあるリンクやコードを投稿し、それをクリックする他のキャンパーに害を与える可能性があります。 -3. 誰かがたくさんのスパムメッセージをスレッドに氾濫させました。 - -### スパムに対処中 - -ユーザの最初のスパム投稿については、問題を説明するメッセージを送信し、必要に応じてリンクや投稿を削除します。 取った操作を説明するユーザーのプロフィールにメモを残してください。 問題が解決しない場合は、上記の手順に従ってください。 ユーザーの投稿を静かにブロックし(format@@0パネルのformat@@1オプションを使用)、format@@2で警告を送信します。 プライベートメッセージのボックスにチェックを入れ、メッセージが「正式な警告」であることを示します。 - -質問やインシデントの報告は、 [スタッフフォーラム](https://forum.freecodecamp.com/c/staff)のセクションにあります。 - -### トピック外の会話を扱っています - -間違った場所にいるような投稿やトピックは、適切なものに再分類したり、名前を変更したりすることができます。 - -例外的な状況では、モデレータが議論を複数のスレッドにフォークすることが適切である可能性があります。 - -問題や質問がある場合は、スタッフカテゴリのアクションを投稿してください。 別のモデレータにあなたのモデレータの操作を確認してもらいたい場合はタグ付けします。 - -### 未成年のユーザー - -当社のサービス利用規約では、freeCodeCampユーザーが少なくとも13歳以上であることが必要です。 ユーザーが13歳未満であることを明らかにした場合 彼らに以下のメッセージを送信し、彼らのフォーラムアカウントを削除します(削除が利用できない場合は、アカウントを停止するだけで十分です)。 次に、 [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) または [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) にメールして、ユーザーの freeCodeCamp アカウントも削除します。 - -```markdown -SUBJECT: 13歳未満のユーザーは、利用規約ごとにフォーラムを利用することはできません - -13歳未満のユーザーは、私たちの注意を引いています。 format@@0(https://www.freecodecamp.org/news/terms-of-service)format@@1(https://www.freecodecamp.org/terms-of-service)では、サイトまたはフォーラムを使用するには13歳以上である必要があります。 無料CodeCampアカウントとフォーラムアカウントの両方を削除します。 この制限は、米国の法律を遵守し続けます。 - -13歳以上になったら、再入会してください。 - -ご理解いただきありがとうございます。 -``` - -# Facebookをモデレート中 - -私たちの [行動規範](https://code-of-conduct.freecodecamp.org/)を破るようなものがあれば、すぐに削除してください。 - -時々人々は彼らが面白いと思う事を掲示する。 彼らは、自分たちが何を言ったのか、何を分かち合ったのかが攻撃的だと解釈できるということに気づいていない。 これらの場合は削除されるべきであるが、それを投稿した人は必ずしも禁止する必要はない。 彼らの投稿を削除することによって、彼らはうまくいけば、彼らが投稿したものが不適切であったことを理解するようになるでしょう。 - -しかし、それが文化的な違いや英語の誤解に合理的に起因することができない恥ずかしい犯罪である場合。 Facebookグループからメンバーをブロックすることを強く検討すべきです - -# Discordのモデレート - -モデレータはDiscord上の [行動規範](https://code-of-conduct.freecodecamp.org/) の違反に対処する方法は次のとおりです。 - -1. **行動規範に違反することが意図されていることを確認してください。 ** CoC違反のすべてがそのように意図されていたわけではありません。 新しいキャンピングカーは、これがスパムとみなすことができることを知らないので、助けのために大量のコードを投稿するかもしれません。 これらのケースでは、CodepenやPastebinのようなサービスでコードを貼り付けるように頼むことができます。 - -2. **キャンピングカーが明確に行動規範に違反した場合、モデレーターは次のように進みます。** - -- 不愉快なキャンピングカーを停止し、警告したり脅迫したりしないでください。 代わりに、彼らにDiscordで一時停止された役割を静かに与え、次のメッセージを送信してください: - -``` -これは、freeCodeCamp Discordサーバーでの通信を一時的に停止する必要があることを知らせる標準的なメッセージです。 - -私はオープンソースコミュニティを代表してモデレーターです。 - -私はオープンソースコミュニティを代表してモデレーターです。 私はあなたの停止を取り除くことを検討することができます, しかし、私はあなたが最初に次の3つのステップを取る必要があります: - -1. 私たちの行動規範を読む: https://code-of-conduct.freecodecamp.org/ -2. 読み終わったことを確認してください。 -3. なぜ私があなたを停学にしたのか、なぜ私があなたの停学を取り除く必要があるのかを説明してください。 -``` - -- イベントの概要と対応方法を#adminチャンネルで報告します。 以下はそのような要約の例です。 - -``` -保留中: _@username_ -理由: _Spamming, trolling_ -証拠: _問題のメッセージへのリンク1つ以上_ -CoC: _Sent_ -``` - -- 一時停止を解除するためのレポートは次のようになります。 - -``` -一時停止を`@username`から削除しました。 私は彼らに行動規範を送りました。 彼らはちょうど今日自分たちが停学になっていることに気づき、謝罪しました。 -``` - -- 加害者の返信に基づいて、モデレータは、問題のキャンパーから停止を削除するかどうかを決定します。 彼らは敬意と謝罪のように見える場合は、モデレータは、サスペンションを削除することができます。 ポリシーの問題として、モデレータはこのプロセス中に礼儀正しくなります。 CoCを尊重したり受け入れたくない場合は、Discordサーバーからのアクセスを禁止する必要があります。 上記と同じ概要を使用しますが、"Suspended:" を "Banned::" に置き換えます。 - -3. **BANおよび/またはBAN解除の方法** - -- 禁止するには、ユーザー名/プロフィール画像を右クリックして「禁止」を選択します ". 以前のメッセージを削除するオプションが表示されます - 「削除しない」を選択してください。 歴史的な記録として残るべきメッセージです -- あなたが誰かを禁止することを決めた場合、彼らは私たちの行動規範に従うことを望んでいないことを意味します。 したがって、キャンパーの禁止を解くことはめったに発生しません。 ただし、必要に応じてサーバー名をクリックし、「サーバー設定」を選択することで必要に応じて行うことができます。 「禁止」を選択し、解除したいユーザーを選択し、「禁止を解除」をクリックします。 - -DiscordのBANはグローバルです。 特定のチャンネルのユーザーをサーバー全体から禁止することはできません。 - -4. **メッセージの削除** モデレータはDiscord上のメッセージを削除することができます。 彼らは4つの非常に特定の状況でのみこの能力を行使する必要があります: - -- 誰かがポルノやグラフィカルに暴力的な画像を投稿しました。 -- 誰かが本質的に悪意のあるリンクやコードを投稿し、それをクリックする他のキャンパーに害を与える可能性があります。 -- 誰かがこのような極端な範囲(通常ボットを含む)に多くのスパムメッセージでチャットを浸水させ、チャットを完全に使用不能にしました。 -- 誰かが広告および/または自己宣伝メッセージ/画像(ソーシャルメディア)を掲載しました。 - -他のすべての状況 - 行動規範が違反している場合でも、モデレータは、これらが重要な歴史的な記録であるため、メッセージを削除しないでください。 メッセージを削除する場合は、まずスクリーンショットを撮ってください! スクリーンショットは #mod-log チャンネルに記録することができます。 しかし、#activity-logでは、エビデンスが「機密性の高い内容のために削除された」と言うだけで十分である。 メモ: メッセージにスクリーンショットを撮ることが違法である材料が含まれている場合、 代わりにメッセージリンクをコピーしてください - @raisedadeadへのメッセージリンクを提供して、Discordの信頼と安全チームに転送します。 - -5. **@everyone や @here を使用しないでください** どんな状況でも@everyone や @here を使用しないでください! チャットルームにいるすべての人が通知を受け取ります。 場合によっては何万人もの人々がいます。 代わりに、人々に発表を見させたい場合は、誰もがそれを読むことができるようにチャンネルに固定することができます。 - -6. **禁止または停止を脅迫しないでください** キャンパーが行動規範を破っている場合。 禁止したり停止させたり、公に警告したりしないよう脅迫しないでください。 代わりに、プライベートに話したり、DMを送って(上記のプロトコルに従って)サスペンションを発行します。 そのチャンネルで他の誰もあなたがBAN/一時停止していることを知る必要はありません - キャンパーはその情報を維持したい場合は、#activity-logチャンネルの概要を表示できます。 違反が明らかに意図されておらず、一時停止または個人的な会話を保証しない場合。 キャンパーに警告として出くわすことなく、彼/彼女の行動を認識させます。 例: - -- キャンピングカーはヘルプを要求するコードの壁を投稿します。 - - モデレータ: @username 大量のコードを投稿する場合は、Codepen または Pastebin を使用してください。 - -- 理由を説明する必要がある場合: - - モデレータ: @username 大量のコードを投稿する場合は、Codepen または Pastebin を使用してください。 それは皆のためのチャットを混乱させ、私たちの行動規範に従ってスパムとみなされる可能性があるからです。 - -- 軽度かつ意図しない行動規範違反について - - モデレーター: これは、誰もが行動のコードをフォローするための親切なリマインダーです: https://code-of-conduct.freecodecamp.org/ - -7. **モデレータであることを自慢しないでください** コミュニティの上に自分自身を見ないでください。 あなたはコミュニティです。 そしてコミュニティは、私たちが共有する珍しいものを保護するためにあなたを信頼しています。 _新しい開発者を歓迎する_ 場所です。 司会者であることを自慢すれば、周りに不安を感じるかもしれません。 警察官の周りに不安を感じるのと同じように これが人間の本質です。 - -8. **他のモデレータと矛盾しないでください** モデレータの行動に同意しない場合。 プライベートで話すか、#mod-chat チャンネルで話してください。 BANを上書きしないでください。 他のモデレータと公に矛盾することはありません。 代わりに、モデレータ自身が自分の禁止を取り消したり、視点を変えるべきであることをモデレータに説得するクールな議論をしましょう。 忘れないでください:私たちは全員同じチームに所属しています。 モデレーターの役割を尊重し、統一された前線を提示したいと考えています。 - -9. **他のモデレータと話す** モデレータ専用のルームがあります。 ご利用ください! 特定の状況に対処する方法に不快に感じる場合は、他のモデレータに助けを求めてください。 何かが議論されるべきであると思ったら、それをしなさい。 あなたはチームの一員であり、私たちはすべてのチームメンバーの入力を大切にしています! これらのガイドラインや行動規範に全く同意しない場合でも! - -10. **一時的に非アクティブ** 休暇のためにしばらくモデレーターとしてアクティブにしない場合。 病気やその他の理由は、#mod-chat チャンネルで他の人に知らせてください。 これにより、サーバーで定期的にアクティブになるかどうかがわかります。 - -# モデレーターになるには - -コミュニティ内の人々を時間が経つにつれて一貫して支援している場合、私たちのモデレーターチームは最終的に通知を受けます。 そして、そのうちの1人が、 [当社のスタッフ](https://forum.freecodecamp.org/g/Team)へのモデレーターとしてあなたに言及します。 モデレータになるための近道はありません。 - -承認された場合、 [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [フォーラム](https://forum.freecodecamp.org/g/moderators)などでモデレーターチームにあなたを追加します。 - -> [!NOTE] > **GitHubの場合:** モデレータとして承認されると、Githubリポジトリの招待状が届きます。 招待を受け入れるには、 [freeCodeCamp GitHub Organization Invitation](https://github.com/orgs/freeCodeCamp/invitation) に向かう必要があります。 いくつかのリポジトリへの書き込みアクセスをお客様に提供できるようにするためには、これが必要です。 - -# 非アクティブなモデレータの引退方法 - -非アクティブだと思われるModを頻繁に削除しますのでご注意ください。 これを行うと、以下のメッセージを送信します: - -> これはあなたに通知する標準的なメッセージです 最近アクティブなモデレータではないようですので、モデレータチームから削除します。 過去のご協力に深く感謝いたします。 - -> 私たちが間違ってこれをしたと思われる場合、またはあなたが戻ってきてより多くの貢献をする準備ができたら。 私に知らせてくれるこのメッセージに返信してください - -# 貢献者の部屋の仕組み - -Discordの [コントリビュータールーム](https://discord.gg/KVUmVXA)では、誰でも歓迎されています。 様々な方法で私たちのコミュニティに貢献しているモデレーターや他のキャンパーのための指定されたチャットルームです。 - -私たちの仮定は、貢献者が `@username` で直接言及しているものをこの部屋で読むということです。 それ以外はすべてオプションです。 しかし、そこに誰かの投稿を読んで相互作用すること自由に感じなさい。 - -# 弁護士との取引 - -freeCodeCampと提携したい、あるいは共同ブランドを提携したいと考えている組織から、何らかの方法でアプローチされるかもしれません。 これが彼らが求めているものであることがわかったら、彼らと話すのをやめて、quincy@freecodecamp.org にメールするように伝えてください。 彼はいつもこのような提案を受けており、このような関係が私たちのコミュニティにとって価値があるのかどうかを判断するのに最適な立場にあります (そして、それはめったにありません)。 - -# (メンタル)ヘルスに関するお問い合わせに対応 - -あなたは、ユーザーが医療アドバイスを求めているか、メンタルヘルスの問題に対処しているとサポートを探している状況に遭遇するかもしれません。 政策の問題として、これらの事柄について個人的に話すことは避けるべきです。 ある時点で状況がfCCに反映された場合、我々は会話を記録したい。 私たちは医療専門家ではなく、ユーザーが専門的な助けを見つけることを奨励していることを明確にしてください。 それは時々困難であることができるように、専門家の助けの方向にユーザーを指す以外の先端か助言を与えることを避けなさい! - -これがDiscordで起きた場合: ユーザーを一時停止します。 これは彼らを罰するためではありません! 一時停止すると、ユーザーとチームがアクセスできるプライベートチャンネルが作成されます。 これはユーザーとfCCの両方にいくつかの方法で利益をもたらします: - -- ユーザーはプライバシーを保証されています -- パブリックチャットが中断されなくなりました -- 他のチームメンバーは、あなた自身が状況に対処して不快である場合、ピッチすることができます。 - -> [!NOTE] ユーザーが自動的に私たちの行動規範を読むことについてのメッセージを送信します。 プライバシーを与えるためにそれらを一時停止し、彼らが罰せられていないことをユーザーに知らせてください。 これは非常に重要です! 私たちは絶対に、ユーザーが助けを得るために手を差し伸べられたために罰せられているという考えをユーザーに与えることを避けたいと思っています! - -ユーザーがコミュニティに再参加できると思われる場合は、プライベートチャンネルを右クリックしてIDをコピーします。 #mod-logに以下のメッセージを入れてください: - -> 医療アドバイスを参照: - -その後、通常どおり、ユーザーから一時停止を削除することができます。 - -参考URL: - -http://www.consuide.org/international-sureide-hotlines.html - -# フリースピーチに関するメモ - -時々人々は彼らが"自由な発言として言った攻撃的または焼夷弾何かを弁護する。 - -このXKCD漫画は完全に自由なスピーチのほとんどのコミュニティの考えをまとめました。 誰かが何かを擁護する場合、彼らは「フリースピーチ」として言っています, 彼らにそれを送ることは自由に感じます. - -
                  - -これを読んでくれてありがとう、そして開発者コミュニティを助けてくれてありがとう! diff --git a/docs/i18n/Japanese/flight-manuals/using-reply-templates.md b/docs/i18n/Japanese/flight-manuals/using-reply-templates.md deleted file mode 100644 index b765a53a9d..0000000000 --- a/docs/i18n/Japanese/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,124 +0,0 @@ -# 返信テンプレートを使用する - -これらは、プルリクエストやトリアージの問題を確認する際に使用する標準的な返信テンプレートの一部です。 - -> GitHub のビルトインの [**Saved replies**](https://github.com/settings/replies/) 機能を使用するか、以下の機能を使用します。 - -### ありがとうございます - -```markdown -このページへの貢献ありがとうございます! 👍 -私たちは喜んでこれらの変更を受け入れ、将来の貢献を楽しみにしています。 🎉 -``` - -### ありがとうございました - -> 初めてのコントリビューターに感謝し、励まします。 - -```markdown -こんにちは、@usernameさん。 初めてのプルリクエスト(PR)おめでとうございます! 🎉 - -ページへの貢献ありがとうございます! 👍 -私たちは喜んでこれらの変更を受け入れ、将来の貢献を楽しみにしています。 📝 -``` - -### ビルドエラー - -```markdown -@username さん - -変更をマージしたいのですが、Travis CIビルドでエラーが発生したようです。 ⚠️ - -これらの問題を解決すると、PRを確認してマージすることができます。 😊 - --- - -> format@@3(https://github) このリポジトリの om/freeCodeCamp/freeCodeCamp#article-title) で記事を正しくフォーマットすることで、Travis CIのビルドパスを作成できます。 ✅ -> -> また、PRを作成する際に変更の簡単な説明をGitHubで書くことをお勧めします。 📝 -``` - -### フォークを同期中 - -> PRが `master` ブランチで最新でない場合。 - -``````markdown -@username さん - -変更をマージしたいのですが、Travis CIビルドでエラーが発生したようです。 ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -この特定のエラーはファイルによって引き起こされませんでしたが、不良コードを `マスター` ブランチにマージすることによって引き起こされた古いエラーでした。 それはそれ以来解決されました。 - -ビルドをパスするには、 `freeCodeCamp/freeCodeCamp` リポジトリの `マスター` ブランチから最新の変更を同期する必要があります。 - -コマンドラインを使用すると、3つの簡単なステップでこれを行うことができます: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -GUIを使用している場合は、 `新しいリモートを追加...` 上から `git://github.com/freeCodeCamp/freeCodeCamp.git` のリンクを使用してください。 - -フォークを同期してビルドをパスすると、私たちはあなたのPRを確認してマージすることができます。 😊 - ---- - -> 上流リポジトリとの最新のフォークを維持する方法については、GitHub上の [フォークの同期](https://help.github.com/articles/syncing-a-fork/) 記事を参照してください。 🔄 -> -> また、PR を作成するときに変更の簡単な説明を GitHub で書くことをお勧めします。 📝 -`````` - -### Merge Conflicts - -> PR で解決する必要がある競合がある場合。 - -```markdown -Hey @username - -変更をマージしたいと思っていますが、マージが競合しているようです。 ⚠️ - -これらの競合を解決すると、PRを確認してマージすることができます。 ["マージ競合の解決"](https://help)でGitHubのガイドをご覧ください。 ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> また、PRを作成する際に変更の簡単な説明をGitHubで書くことをお勧めします。 📝 -`````` -1 初回コントリビューターがコンフリクトを持つ場合、管理者はコンフリクトを解決します。 - -### Duplicate - -> PRが反復または複製の場合。 - -```markdown -Hey @username - -あなたが編集しているこの記事では、すでに同様の変更が承認されているようです。 申し訳ありません。 - -😓 - -追加する必要があると感じた場合は、新しいPRを開いてください。 - -ありがとうございます! 😊 - ---- - -> ご質問がある場合は、お気軽に [Gitter](https://gitter.im/FreeCodeCamp/Contributors) または以下のコメントでご連絡ください。 💬 -``` - -### 無効なプルリクエストを閉じる - -> PRが無効な場合。 - -```markdown -Hey @username - -あなたはコンテンツを追加していません。 このPRを閉じて`invalid`にします。 😓 - -気軽にPRを開いてください! 👍 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Japanese/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Japanese/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 51df7cc357..0000000000 --- a/docs/i18n/Japanese/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,482 +0,0 @@ -# Flight Manual for working on Virtual Machines - -スタッフまたは開発チームのメンバーとして Azure、Digital Oceanなどの クラウドサービスプロバイダーへのアクセスが許可されている可能性があります。 - -仮想マシン (VM) で作業するために使用できる便利なコマンドをいくつか紹介します。 例えばメンテナンスの更新や ハウスキーピングなどです - -# Get a list of the VMs - -> [!注:] 既にVMへのSSHアクセスがある場合があります。 クラウドポータルへのアクセスが許可されていない限り、 VMをリストすることはできません。 - -## Azure - -Azure CLI をインストール `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Digital Ocean CLI をインストールする `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -認証とコンテキストの切り替え: https://github.com/digitalocean/doctl#authenticating-with-digitalocai - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. これにより により、仮想マシンが最新のセキュリティ修正でパッチを適用されるようになります。 - -> [!WARNING] Before you run these commands: -> -> - VMが完全にプロビジョニングされており、 インストール後のステップが実行されていないことを確認してください。 -> - アプリケーションをすでに提供している VM 上のパッケージを更新している場合は、 アプリが停止/保存されていることを確認してください。 パッケージの更新により、 ネットワーク帯域幅、メモリ、CPU使用率のスパイクが発生し、 実行中のアプリケーションで停止します。 - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -Web サーバーのロードバランシング(Azure Load Balancer)インスタンスを実行しています。 これらのサーバーは、すべてのトラフィック を、独自の インフラストラクチャ上で実行されるさまざまなアプリケーションから freeCodeCamp.org にリバースプロキシする NGINX を実行しています。 - -NGINX 設定は [このリポジトリ](https://github.com/freeCodeCamp/nginx-config) で利用できます。 - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH と は特定のインスタンスに対して必要に応じて変更を加えます。 - -cloud-init 設定を以前に使用していない場合は、NGINX とエラーページの手動設定に 以下を使用します。 - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -安全なストレージからCloudflareのオリジン証明書を取得し、 必要な場所にインストールしてください。 - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. バランサバックエンドプールをロードするために、 VMを追加する必要があるかもしれません。 - -## インスタンスの更新 (メンテナンス) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

                  https://amplify.nginx.com

                  -## Updating Instances (Maintenance) - -NGINX インスタンスへの設定変更は GitHub 上でメンテナンスされています。 これらは以下のように各インスタンスに デプロイされる必要があります。 - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. [を](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx) でテストし、リロードします。 - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## インスタンスの更新 (メンテナンス) - -```console -## ロギングとモニタリング - -```console -pm2 ログ -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. は、ローリングアップデートまたはマニュアルアップデートとすることができます。 依存関係を変更したり、環境変数を追加したりする場合は、後者が重要です。 - -> [!DANGER] 自動パイプラインは 分間で依存関係の更新を処理していません。 We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. はこれらのコマンドを実行する必要はありません。 These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Web クライアントのプレースホルダー インスタンスを開始します。 これらは 個の Azure ピプラインのアーティファクトで更新されます。 - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## インスタンスの更新 (メンテナンス) - -```console -## ロギングとモニタリング - -```console -pm2 ログ -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. は、ローリングアップデートまたはマニュアルアップデートとすることができます。 依存関係を変更したり、環境変数を追加したりする場合は、後者が重要です。 - -> [!DANGER] 自動パイプラインは 分間で依存関係の更新を処理していません。 We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. はこれらのコマンドを実行する必要はありません。 These are here for documentation. diff --git a/docs/i18n/Japanese/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Japanese/how-to-catch-outgoing-emails-locally.md index 5d87677cdc..397ea3382a 100644 --- a/docs/i18n/Japanese/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Japanese/how-to-catch-outgoing-emails-locally.md @@ -1,67 +1,67 @@ -> **Note:** This is an **optional** step and is only only when with email workflow +> **Note:** This is an **optional** step and is required only when working with email workflows -## はじめに +## Introduction -ユーザーのメールを更新するなどの一部のメールワークフローでは、バックエンドの api-server が送信メールを送信する必要があります。 実際の電子メールメッセージを送信するために電子メールサービスプロバイダを使用する代わりに Mailhogはメールテスト用の開発ツールで、freeCodeCampインスタンスから送信されたメールメッセージをキャッチします。 +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## MailHog のインストール +## Installing MailHog -MailHog は macOS、Windows、Linux にインストールできます。 +MailHog can be installed on macOS, Windows and Linux. -- [はじめに](#introduction) -- [MailHog のインストール](#installing-mailhog) - - [macOSへのMailHogのインストール](#installing-mailhog-on-macos) - - [WindowsへのMailHogのインストール](#installing-mailhog-on-windows) - - [LinuxへのMailHogのインストール](#installing-mailhog-on-linux) -- [MailHog の使用](#using-mailhog) -- [有用なリンク](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### macOSへのMailHogのインストール +### Installing MailHog on macOS -[Homebrew](https://brew.sh/) を使って macOS に MailHog をインストールする : +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash brew install mailhog brew services start mailhog ``` -上記のコマンドは、バックグラウンドでmailhog サービスを開始します。 +The above commands will start a mailhog service in the background. -インストールが完了したら、MailHog [を使用して](#using-mailhog) を起動できます。 +When the installation completes, you can start [using MailHog](#using-mailhog). -### WindowsへのMailHogのインストール +### Installing MailHog on Windows -[MailHog の公式リポジトリ](https://github.com/mailhog/MailHog/releases) から最新バージョンの MailHog をダウンロードしてください。 Windows版(32ビットまたは64ビット)のリンクをクリックすると、.exeファイルがコンピュータにダウンロードされます。 +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -ダウンロードが完了したら、クリックしてファイルを開きます。 Windowsファイアウォールの通知が表示されたり、MailHogのアクセス許可を要求したりすることがあります。 ファイアウォールへのアクセスが許可されると、MailHog が実行される標準の Windows コマンドラインプロンプトが開きます。 +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -コマンドプロンプトウィンドウを閉じてMailHogを閉じます。 MailHog を再度起動するには、MailHog 実行可能ファイル (. xe) 最初にダウンロードされたファイル - 新しいMailHogインストールファイルをダウンロードする必要はありません。 +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -MailHog [を使用して](#using-mailhog) を開始します。 +Start [using MailHog](#using-mailhog). -### LinuxへのMailHogのインストール +### Installing MailHog on Linux -まず、 [Go](https://golang.org) をインストールします。 +First, install [Go](https://golang.org). -UbuntuやLinux MintなどのDebianベースのシステムにGOをインストールするには、次のコマンドを実行します。 +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -CentOS、Fedora、Red Hat LinuxなどのRPMベースのシステムにGOをインストールするには、次のコマンドを実行します。 +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -または、GOをインストールするには、次のコマンドを実行します。 +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -次のコマンドで Go のパスを設定します。 +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile @@ -69,7 +69,7 @@ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile source ~/.profile ``` -最後に、MailHog をインストールして実行するために以下のコマンドを入力します。 +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -MailHog [を使用して](#using-mailhog) を開始します。 +Start [using MailHog](#using-mailhog). -## MailHog の使用 +## Using MailHog -新しいブラウザータブまたはウィンドウを開き、 [http://localhost:8025](http://localhost:8025) に移動して、MailHog のインストールが完了し、MailHog が実行されているときに受信トレイを開きます。 受信トレイは以下のスクリーンショットと同様に表示されます。 +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![MailHog のスクリーンショット1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -freeCodeCampのインストールによって送信されたメールは以下のように表示されます +Emails sent by your freeCodeCamp installation will appear as below -![MailHog スクリーンショット2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -特定の電子メールを開くと、プレーンテキストまたはソースコンテンツのいずれかを表示できる2つのタブが表示されます。 プレーンテキストタブが以下のように選択されていることを確認します。 +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![MailHog スクリーンショット3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -メール内のすべてのリンクはクリック可能で、そのURLに解決される必要があります。 +All links in the email should be clickable and resolve to their URL. -## 有用なリンク +## Useful Links -- MailHog に関連する詳細情報については、 [MailHog](https://github.com/mailhog/MailHog) リポジトリを参照してください。 カスタム MailHog 設定に関する追加情報も入手できます。 +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Japanese/how-to-help-with-video-challenges.md b/docs/i18n/Japanese/how-to-help-with-video-challenges.md index 33b4e5507e..0724aaef02 100644 --- a/docs/i18n/Japanese/how-to-help-with-video-challenges.md +++ b/docs/i18n/Japanese/how-to-help-with-video-challenges.md @@ -1,17 +1,17 @@ -# ビデオチャレンジを支援する方法 +# How to help with video challenges -ビデオの課題は、freeCodeCampカリキュラムの新しいタイプの課題です。 +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -ビデオのチャレンジは、特定のトピックに関する全長ビデオコースの小さなセクションです。 動画チャレンジページには、YouTube 動画が埋め込まれています。 各チャレンジページには、動画に関連する複数選択の質問があります。 コース内の次のビデオチャレンジに進む前に、ユーザーが質問に正しく答える必要があります。 +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -ビデオチャレンジのページは、freeCodeCampチームのメンバーによって作成されます。 YouTube動画は、FreeCodeCampチームのメンバーによってもアップロードされます。 ビデオの課題の多くは、まだそれらに関連する質問がありません。 +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -ビデオセクションに関連する複数の選択肢の質問を作成し、ビデオ課題のマークダウンファイルに質問を追加することで助けることができます。 +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## チャレンジテンプレート +## Challenge Template -以下はチャレンジマークダウンファイルのテンプレートです。 +Below is a template of what the challenge markdown files look like. ````md --- @@ -57,32 +57,28 @@ You can find the markdown files for video challenges at the following locations Pick a challenge markdown file from the options above. -### チャレンジに関連するビデオをスキムし、複数選択の質問を作成する +### Skim through the video associated with the challenge and create a mutiple choice question -まず、ビデオIDを見つける。 +First, find the videoId. -例えば、ビデオチャレンジマークダウンファイルのヘッダから以下のコードでは、videoIdは「nVAAxZ34khk」です。 - -例えば、ビデオチャレンジマークダウンファイルのヘッダから以下のコードでは、videoIdは「nVAAxZ34khk」です。 GitHub では、情報をテーブル形式でレイアウトする必要があります。 +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d title: データ分析例 A challengeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -次に、そのビデオIDでYouTubeのビデオにアクセスします。 The url for the video will be: +Next, access the YouTube video with that videoId. The url for the video will be: https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### マークダウンファイルに質問を追加する +### Add the question to the markdown file -GitHubインターフェースを介して、ローカルまたは直接質問を追加することができます。 ローカルで質問を追加するには、format@@0(how-to-setup-freecodecamp-locally.md) が必要です。 GitHubでファイルを見つけて、編集ボタンをクリックして、ブラウザで質問を追加することもできます。 - -GitHubでファイルを見つけて、編集ボタンをクリックして、ブラウザで質問を追加することもできます。 +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. If a question has not yet been added to a particular video challenge, it will have the following default question: @@ -100,21 +96,21 @@ question: solution: 3 ``` -質問で「質問」という単語を更新します。 答えのある「one」、「two」、「three」を更新します。 答えが正しいソリューション番号を更新してください。 同じ形式でより多くの可能性のある回答を追加できます。 質問と回答は引用符で囲むことができます。 +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### マークダウンを使用して質問をフォーマットする +#### Use markdown to format your question -問題のテキストはマークダウンとして解析されます。 正しくフォーマットされていることを確認する最も簡単な方法は、質問を `text: |`で開始することです。 +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -質問: - テキスト: | - 質問 +question: + text: | + Question ``` -次に、質問が新しい行にあり、 `テキスト:|`よりも1つのレベルにインデントされていることを確認する必要があります。 +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -同じアプローチを回答に使用することができますので、質問全体が +The same approach can be used for the answers, so the entire question becomes ```yml question: @@ -126,33 +122,33 @@ question: - | Second - | - third + Third solution: 2 ``` -それぞれの答えが妥当であることを確認してくださいが、正しい答えは1つだけです。 +Make sure each answer is plausible but there is only one correct answer. -#### HTML の使用 +#### Use of HTML -質問と回答には、新しい行の `
                  ` のような特定の HTML タグを含めることができます。 HTML タグは、質問がなければ表現できない場合には控えめに使用する必要があります。 +Questions and answers can contain certain HTML tags like `
                  ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### 質問の例 +### Question examples -#### HTML のない例 +#### Examples without HTML ````yml question: text: | - この JavaScript コードはコンソールに何を記録しますか? + What does this JavaScript code log to the console? ```js console.log('hello world'); ```` - 回答を選択してください! - 回答: + Select an answer! + answers: - | hello *world* - - | **hello** ワールド + - | **hello** world - | hello world solution: 3 ```` @@ -165,7 +161,7 @@ question: height = 12.0 print(height/3) ```` - 回答: + answers: - | 39 - | 4 - | 4.0 @@ -194,10 +190,10 @@ question: solution: 3 ```` -最後の例は、HTML が使えることを示していますが、それがないバージョンほど読みやすくないことを示しています。 +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -より多くの例については、次のビデオコースのマークダウンファイルを参照できます。 すべてのチャレンジにはすでに質問があります: [Python for everyone course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## プルリクエストを開く +## Open a pull request -1つ以上の質問を作成した後、新しいブランチに変更をコミットし、 [プルリクエスト](how-to-open-a-pull-request.md) を開くことができます。 +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Japanese/how-to-open-a-pull-request.md b/docs/i18n/Japanese/how-to-open-a-pull-request.md index 302da9fff3..2729cd6237 100644 --- a/docs/i18n/Japanese/how-to-open-a-pull-request.md +++ b/docs/i18n/Japanese/how-to-open-a-pull-request.md @@ -1,134 +1,132 @@ -# プルリクエストを開く方法 (PR) +# How to open a Pull Request (PR) -プルリクエストを使用すると、GitHubのフォークからfreeCodeCamp.orgのメインリポジトリに変更を送信することができます。 コードを変更したり、コードを変更したり、課題をコーディングしたりしたら、これらのガイドラインに従ってPRを送信する必要があります。 +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## 良いPRタイトルを用意する +## Prepare a good PR title -コミットやプルリクエストには、従来のタイトルとメッセージ [](https://www.conventionalcommits.org/) を使用することをお勧めします。 規約には以下の形式があります。 +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([optional scope(s)]: ` +> `([optional scope(s)]): ` > -> 例: +> For example: > -> `fix(learn): do...while ループチャレンジのテスト` +> `fix(learn): tests for the do...while loop challenge` -プルリクエスト(PR)を開くときは、以下を使用してタイプ、スコープ(オプション)、説明を決定できます。 +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**タイプ:** +**Type:** -| タイプ | 選択した時 | -|:------ |:-------------------------------- | -| 修正 | 機能の変更または更新/改善、テスト、レッスンの検証など。 | -| feat | 新しい機能、テストなどを追加している場合にのみ。 | -| | レッスンのコード、テスト、または検証に関連しない変更。 | -| ドキュメント | `/docs` ディレクトリまたは貢献ガイドラインなどへの変更。 | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**スコープ:** +**Scope:** You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**説明:** +**Description:** -短く(30文字未満)しておき、簡単にPR記述ボックスとコメントに詳細情報を追加できます。 +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -良いPRのタイトルの例としては、次のようなものがあります。 +Some examples of good PRs titles would be: -- `fix(a11y): 検索バーのコントラストを改善` -- `feat: html と css のチャレンジにテストを追加する` -- `fix(api,client): フォーム送信時の CORS エラーの防止` -- `docs(i18n):ローカル設定の中国語翻訳` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## プルリクエストを提案する +## Proposing a Pull Request -1. 編集がコミットされると、フォークの GitHub ページにプルリクエストを作成するように求められます。 +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![画像 - GitHub でプルリクエストのプロンプトを比較](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. デフォルトでは、すべてのプルリクエストはfreeCodeCampメインリポジトリ、 `master` ブランチに反する必要があります。 +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Pull Requestを上げるときは、Base ForkがfreeCodeCamp/freeCodeCampに設定されていることを確認してください。 + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![画像 - プルリクエストを作成する際のフォークの比較](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. あなたのブランチからfreeCodeCampの `マスター` ブランチにプルリクエストを送信してください。 +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. PRの本文には、あなたが行った変更とその理由の詳細な概要が含まれています。 +4. In the body of your PR include a more detailed summary of the changes you made and why. - - プルリクエストテンプレートが表示されます。 これはプルリクエストを開く前にフォローすべきチェックリストです。 + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - 必要に応じて詳細を記入してください。 この情報は審査され、査読者はあなたのプルリクエストが受け入れられるかどうかを決定します。 + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - PRが既存のGitHubのIssueに対処することを意図している場合は、 PRの説明本文の末尾にあります。 キーワード を使用する _発行番号で_ を閉じて、PR が受け入れられてマージされた場合、 [自動的に発行を終了する](https://help.github.com/en/articles/closing-issues-using-keywords)。 + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > 例: `Closes #123` will close issue 123 + > Example: `Closes #123` will close issue 123 -5. サイトのローカルコピーでテストしたかどうかを示します。 +5. Indicate if you have tested on a local copy of the site or not. - これは、ドキュメントやチャレンジの説明のようなテキストコンテンツを編集するだけでなく、変更を加えるときに非常に重要です。 ローカルテストを必要とする変更の例としては、ページの機能やレイアウトを変更できる JavaScript、CSS、HTML などがあります。 + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## プルリクエストへのフィードバック +## Feedback on pull requests -> おめでとうございます おめでとうございます :tada: さんがPRをしてくれて、時間をかけて貢献してくれてありがとうございます。 +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -モデレータは今見て、あなたにフィードバックを残します。 仲間のモデレータに我慢して、時間を尊重してください。 すべてのプルリクエストはコースでレビューされます。 +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -サポートが必要な場合は、 [チャットルーム](https://gitter.im/FreeCodeCamp/Contributors)でご相談ください。 +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## プルリクエストで競合しています +## Conflicts on a pull request -コンフリクトは、リポジトリ上で多くのコントリビューターが動作し、変更がレビューとマージを保留中のPRを破る可能性があるために発生する可能性があります。 +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -多くの場合、あなたがリベースを必要としないことがあります。 なぜなら、私たちはすべてのコミットをスカッシュするからです。 だがここでリベースを要求されたら お前がやるべきことだ +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### 通常のバグ修正と機能について +### For usual bug fixes and features -私たちの開発ブランチ `master`の定期的なバグや機能に取り組んでいる場合は、簡単なリベースを行うことができます。 +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. ローカルコピーをリベース: +1. Rebase your local copy: ```console git checkout git pull --rebase upstream master ``` -2. 競合を解決し、コミットの追加/編集 +2. Resolve any conflicts and add / edit commits ```console - # - git add のいずれか。 - # - git add のいずれか。 - git commit -m "care: resolve conflicts" - - # または + # Either git add . - git commit --amend -no-edit + git commit -m "chore: resolve conflicts" + + # Or + git add . + git commit --amend --no-edit ``` -3. 変更を PR に押し戻します +3. Push back your changes to the PR ```console git push --force origin ``` -### 今後のカリキュラムと機能について +### For upcoming curriculum and features -今後のカリキュラム `next-*` ブランチの機能に取り組んでいる場合は、チェリーピックを行ってください: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. あなたのアップストリームがあなたのローカルと同期していることを確認してください: +1. Make sure your upstream comes in sync with your local: ```console git checkout master - git fetch -all --prune - git checkout next-python-project - git reset --hard upstream/next-python-project + git fetch --all --prune + git checkout next-python-projects + git reset --hard upstream/next-python-projects ``` -2. バックアップを取る +2. Take backup - a a バックアップを取った後にローカルブランチを削除します(ローカルにまだある場合): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout @@ -139,42 +137,42 @@ You can select a scope from [this list of labels](https://github.com/freeCodeCam git checkout -b # example: - # git checkout -b backup-feat/add-numpy-video-question + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - B B または、pr ブランチのバックアップだけです(ローカルに持っていない場合): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # 例: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. クリーンスレートで始めましょう: +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. 競合を解決し、クリーンアップ、実行テストのインストール +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean npm ci - npm run test:カリキュラム--superblock= + npm run test:curriculum --superblock= # example: - # npm run test:カリキュラム-superblock=python-for-everyone + # npm run test:curriculum --superblock=python-for-everybody ``` -6. すべてがPRに戻って良いプッシュに見える場合 +6. If everything looks good push back to the PR ```console git push --force origin diff --git a/docs/i18n/Japanese/how-to-setup-freecodecamp-locally.md b/docs/i18n/Japanese/how-to-setup-freecodecamp-locally.md index b9171215a8..619db733cf 100644 --- a/docs/i18n/Japanese/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Japanese/how-to-setup-freecodecamp-locally.md @@ -1,169 +1,168 @@ -こちらのガイドラインに従って、システム上で freeCodeCamp をローカルに設定してください。 定期的に貢献したい場合は、是非お勧めします。 +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -いくつかのコントリビューションワークフローでは、freeCodeCampをローカルで実行する必要があります。 例えば、コーディングの課題をプレビューしたり、コードベースのバグをデバッグして修正したりします。 +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!ヒント] freeCodeCampの設定に興味がない場合は、無料のオンライン開発環境であるGitpodの使用を検討してください。 +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Gitpod で開く](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (ブラウザで freeCodeCamp 用のコード対応開発環境を開始します。 +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## ローカルマシンを準備する +### How to prepare your local machine -お使いのオペレーティングシステムの前提ソフトウェアをインストールすることから開始します。 +Start by installing the prerequisite software for your operating system. -主に **\*nix** システムでの開発をサポートしています。 私たちのスタッフとコミュニティ貢献者は、UbuntuとmacOSにインストールされているツールを使用して、定期的にコードベースを使用しています。 +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -コミュニティメンバーの中には、Git for Windows(Git Bash)やWindowsにインストールされている他のツールを使用して、Windows 10でネイティブに開発する人もいます。 現時点では、このようなセットアップの公式サポートはありません。 代わりに WSL2 を使用することをお勧めします。 +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**前提条件:** +**Prerequisites:** -| 前提条件 | バージョン | メモ | -| -------------------------------------------------------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12.x` | [LTSスケジュール](https://github.com/nodejs/Release#release-schedule) | -| npm (Nodeにバンドルされています) | `6.x` | LTS リリースはありません。 Node LTS にバンドルされているバージョンを使用しています。 | -| [MongoDBコミュニティサーバー](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [リリースノート](https://docs.mongodb.com/manual/release-notes/), 注意: 現在 `3.6`にあります。 , [アップグレードが予定されています](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] 異なるバージョンの場合は、推奨バージョンをインストールしてください。 推奨バージョンのインストールに関する問題のみサポートできます。 詳細は [troubleshooting](#troubleshooting) を参照してください。 +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Node.js がすでにマシンにインストールされている場合、以下のコマンドを実行してバージョンを検証します。 +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console node -v npm -v ``` -> [!TIP] 長期サポート(LTS)リリースとも呼ばれる、上記の安定版の最新リリースにアップデートすることを強くお勧めします。 +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -必要条件がインストールされたら、開発環境を準備する必要があります。 これは多くの開発ワークフローに共通しており、一度だけこれを行う必要があります。 +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**以下の手順に従って、開発環境を準備してください。** +**Follow these steps to get your development environment ready:** -1. まだインストールしていない場合は、 [Git](https://git-scm.com/) またはお気に入りのGitクライアントをインストールしてください。 最新バージョンにアップデートすると、お使いのOSにバンドルされているバージョンが古くなる可能性があります。 +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (オプションですが推奨) [GitHub用のSSHキー](https://help.github.com/articles/generating-an-ssh-key/) を設定します。 +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. お好みのコードエディタをインストールします。 +3. Install a code editor of your choice. - [Visual Studio Code](https://code.visualstudio.com/) または [Atom](https://atom.io/) を使用することを強くお勧めします。 これらは素晴らしい、自由でオープンなソースコードエディタです。 + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. コードエディタのリンティングを設定します。 +4. Set up linting for your code editor. You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!ヒント] リンティングエラーを無視しないでください。 これらは **あなたを** 助け、クリーンでシンプルなコードベースを保証するためのものです。 + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## GitHub でリポジトリをフォーク +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) は、GitHub上でfreeCodeCampのメインリポジトリ(別名、 _repo_)のコピーを入手するステップです。 +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -GitHub上のfreeCodeCampのコピーを自分で作ることができるので、これは不可欠です。 または、ローカルで作業するためにリポジトリをダウンロード(クローン)します。 後で、プルリクエスト(PR)を介してフォークからメインリポジトリにプルする変更をリクエストすることができます。 +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] `https://github.com/freeCodeCamp/freeCodeCamp` のメインリポジトリは `アップストリーム` リポジトリと呼ばれることがあります。 +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> `https://github.com/YOUR_USER_NAME/freeCodeCamp` のフォークは、しばしば `オリジン` リポジトリと呼ばれます。 +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**以下の手順に従って、 `https://github.com/freeCodeCamp/freeCodeCamp` リポジトリをフォークしてください。** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. GitHubのfreeCodeCampリポジトリに移動: +1. Go to the freeCodeCamp repository on GitHub: -2. インターフェースの右上隅にある「フォーク」ボタンをクリックします ([詳細はこちら](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. リポジトリがフォークされると、 `https://github.com/YOUR_USER_NAME/freeCodeCamp` にある freeCodeCamp リポジトリのコピーに移動します。 +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
                  - GitHubでfreeCodeCampをフォークする方法 (スクリーンショット) + How to fork freeCodeCamp on GitHub (screenshot)
                  - GitHubでfreeCodeCampをフォークする方法 + How to fork freeCodeCamp on GitHub
                  -## GitHub からフォークを複製 +## Clone your fork from GitHub -[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. あなたの場合、このリモートの場所は freeCodeCamp の `fork` で、 `https://github.com/YOUR_USER_NAME/freeCodeCamp` で利用できるはずです。 +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -以下のコマンドをローカルマシンで実行します。 +Run these commands on your local machine: -1. Terminal / Command Prompt / Shellをプロジェクトディレクトリで開く +1. Open a Terminal / Command Prompt / Shell in your projects directory - _例えば: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. freeCodeCampのフォークをクローンし、 `YOUR_USER_NAME` をGitHub Username に置き換えます。 +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -これにより、freeCodeCampリポジトリ全体がプロジェクトディレクトリにダウンロードされます。 +This will download the entire freeCodeCamp repository to your projects directory. -注意: `--depth=1` は最新の履歴/コミットのみでフォークの浅いクローンを作成します。 +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## 親からの同期を設定 +## Set up syncing from parent -フォークのコピーをダウンロードしたので、親リポジトリに `上流の` リモートを設定する必要があります。 +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[前述の](#fork-the-repository-on-github)のように、メインリポジトリは `上流` リポジトリと呼ばれています。 フォークは `origin` リポジトリと呼ばれています。 +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -`origin` リポジトリに加えて、ローカルクローンから `upstream` リポジトリへの参照が必要です。 これは、フォークやクローンを繰り返し行うことなく、メインリポジトリからの変更を同期できるようにするためです。 +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. ディレクトリを新しいfreeCodeCampディレクトリに変更: +1. Change directory to the new freeCodeCamp directory: ```console cd freeCodeCamp ``` -2. freeCodeCampリポジトリへのリモート参照を追加します。 +2. Add a remote reference to the main freeCodeCamp repository: ```console git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. 設定が正しいことを確認してください: +3. Ensure the configuration looks correct: ```console git remote -v ``` - 出力は以下のようになります: + The output should look something like below: ```console - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## freeCodeCampをローカルで実行中 +## Running freeCodeCamp locally -freeCodeCampのローカルコピーがあるので、これらの指示に従ってローカルで実行することができます。 これにより次のことが可能になります: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- 学習プラットフォーム上に表示されるページへの編集をプレビューします。 -- UI関連の問題と機能強化に取り組む。 -- アプリケーション・サーバーとクライアント・アプリの問題をデバッグして修正します。 +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -問題が発生した場合は、最初に問題の Web 検索を実行し、すでに解決済みであるかどうかを確認します。 解決策が見つからない場合 解決策については、 [GitHubの課題](https://github.com/freeCodeCamp/freeCodeCamp/issues) ページを検索し、まだ報告されていない場合は問題を報告してください。 +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -そしていつものように お気軽に [Gitter](https://gitter.im/FreeCodeCamp/Contributors) または [Discord サーバー](https://discord.gg/pFspAhS)の貢献者チャットルームをご覧ください。 迅速な問い合わせを行います +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] ファイルを編集するだけの場合は、freeCodeCampの実行をローカルでスキップすることができます。 例えば、 `rebase`を実行したり、 `merge` の競合を解決したりします。 +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> 後でいつでもこの手順に戻ることができます。 マシンでアプリを実行する必要がない場合は、 **** だけこの手順をスキップしてください。 +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [変更を加えるにはスキップ](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### 依存関係の設定 +### Configuring dependencies -#### ステップ 1: 環境変数ファイルを設定 +#### Step 1: Set up the environment variable file -デフォルトの API キーと環境変数は、ファイル `sample.env` に格納されます。 このファイルは、インストール時に動的にアクセスされる `.env` という名前の新しいファイルにコピーする必要があります。 +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# "sample.env" のコピーを作成し、".env" という名前を付けます。 -# "sample.env" のコピーを作成し、".env" という名前を付けます。 +# Create a copy of the "sample.env" and name it ".env". # Populate it with the necessary API keys and secrets: # macOS / Linux @@ -173,222 +172,184 @@ cp sample.env .env copy sample.env .env ``` -`.env` ファイルのキーは _ローカルでアプリを実行するために変更する必要はありません_。 `sample.env` をそのままにしておくことができます。 +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. > [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### ステップ 2: 依存関係のインストール +#### Step 2: Install dependencies -このステップでは、アプリケーションを実行するために必要な依存関係をインストールします。 +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### ステップ 3: MongoDBを起動し、データベースをシードする +#### Step 3: Start MongoDB and seed the database -アプリケーションをローカルで実行する前に、MongoDBサービスを開始する必要があります。 +Before you can run the application locally, you will need to start the MongoDB service. -> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. カスタム設定を使用している場合は、必要に応じてこの値を変更してください。 +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -MongoDBサーバーを別の端末で起動します。 +Start the MongoDB server in a separate terminal: -- macOS & Ubuntuの場合: +- On macOS & Ubuntu: ```console mongod ``` -- Windows では、 `mongod` バイナリへのフルパスを指定する必要があります。 +- On Windows, you must specify the full path to the `mongod` binary ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - `3.6` をインストールしたバージョンに置き換えてください + Make sure to replace `3.6` with the version you have installed -> [!TIP] MongoDBをバックグラウンドサービスとしてインストールすることで、毎回起動する必要はありません。 [OS のドキュメント](https://docs.mongodb.com/manual/administration/install-community/) で詳しく学ぶことができます。 +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -次に、データベースをシードしましょう。 このステップでは、MongoDBサーバーにサービスによって必要とされる初期データセットを埋める以下のコマンドを実行します。 これらには、他のものの中でも、いくつかのスキーマが含まれます。 +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console npm run seed ``` -#### ステップ 4: freeCodeCampクライアントアプリケーションとAPIサーバーを開始 +#### Step 4: Start the freeCodeCamp client application and API server -APIサーバーとクライアントアプリケーションを起動できるようになりました。 +You can now start up the API server and the client applications. ```console npm run develop ``` -この単一コマンドは、APIサーバーや利用可能なクライアントアプリケーションを含むすべてのサービスを起動します。 +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!NOTE] 準備ができたら、ウェブブラウザを開き、 ** ** をご覧ください。 アプリがロードされたら、おめでとうございます - あなたはすべての準備ができています! これで、あなたのローカルマシン上で動作するfreeCodeCampの学習プラットフォーム全体のコピーがあります。 +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] APIサーバーは `http://localhost:3000` でAPIを提供します。 Gatsby アプリはクライアントアプリケーションを `http://localhost:8000` で提供します。 +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> にアクセスすると、利用可能なAPIが表示されます。 +> If you visit you should see the available APIs. -## ローカル ユーザーでサインイン +## Sign in with a local user -ローカル セットアップでは、データベース内のローカル ユーザーが自動的に入力されます。 `Sign In` ボタンをクリックすると、ローカルアプリケーションへの認証が自動的に行われます。 +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -ただし、ユーザーポートフォリオページにアクセスするのは少し難しいです。 開発中 Gatsbyは、クライアント側のページにサービスを引き継ぎ、ローカルで作業する際に、ユーザーポートフォリオの `404` ページを取得します。 +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -**"Preview Custom 404 Page"** ボタンをクリックするだけで、正しいページに移動できます。 +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
                  - ローカルで作業するときのサインイン方法(スクリーンショット) + How to sign in when working locally (screenshot)
                  - ローカルで作業しているときにサインインする方法 + How to sign in when working locally
                  -## ローカルで変更を行う +## Making changes locally -ファイルに変更を加え、フォークのローカルクローンに変更を反映できるようになりました。 +You can now make changes to files and commit your changes to your local clone of your fork. -以下の手順に従ってください: +Follow these steps: -1. `master` ブランチにいることを確認してください。 +1. Validate that you are on the `master` branch: ```console git status ``` - 次のような出力を得る必要があります。 + You should get an output like this: ```console - ブランチマスター - のブランチは 'origin/master' で最新です。 + On branch master + Your branch is up-to-date with 'origin/master'. - コミットする必要はありません。 - - 作業ディレクトリをクリーンアップします。 + nothing to commit, working directory clean ``` - マスターにいない場合、または作業ディレクトリがきれいでない場合は、未処理のファイル/コミットとチェック アウトを解決します `マスター`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console git checkout master ``` -2. freeCodeCamp上流の `マスター` ブランチからの最新の変更をローカルのマスターブランチに同期します: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!WARNING] フォークの `master` ブランチから行った未処理のプルリクエストがある場合。 このステップの最後にそれらを失うことになります + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > この手順を実行する前に、プルリクエストがモデレータによってマージされていることを確認してください。 このシナリオを回避するには、 **マスター** 以外のブランチで `常に`作業する必要があります。 + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - この手順 **は、freeCodeCampのメインリポジトリから最新の変更** を同期します。 最新の `上流/マスター` の上に、コンフリクトを回避するためにできるだけ頻繁にブランチをリベースにすることが重要です。 + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - freeCodeCamp上流リポジトリのローカルコピーを更新してください: + Update your local copy of the freeCodeCamp upstream repository: ```console git fetch upstream ``` - フリーCodeCampマスターでマスターブランチをハードリセット: + Hard reset your master branch with the freeCodeCamp master: ```console git reset --hard upstream/master ``` - GitHubのフォークにきれいな履歴を表示するには、あなたのマスターブランチをあなたのオリジンにプッシュしてください。 + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console git push origin master --force ``` - 差分を実行することで、現在のマスターが上流/マスターと一致するか確認できます: + You can validate your current master matches the upstream/master by performing a diff: ```console git diff upstream/master ``` - 結果の出力は空でなければなりません。 + The resulting output should be empty. -3. 新しいブランチを作成: +3. Create a fresh new branch: - 各問題に対して別のブランチで作業することは、ローカルの作業コピーをきれいに保つのに役立ちます。 `マスター` で作業するべきではありません。 これはfreeCodeCampのあなたのコピーを土壌にし、あなたは新鮮なクローンやフォークからやり直す必要があるかもしれません。 + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - `マスター` を、前述のように使用していることを確認し、そこから分岐します。 + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - ブランチ名は `fix/`、 `feat/`、 `docs/`などで始まる必要があります。 ブランチ内で課題番号を使用しないでください。 それらを短く、意味があり、ユニークにしてください。 + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - 良いブランチ名の例は次のとおりです。 + Some examples of good branch names are: ```md fix/update-challenges-for-react fix/update-guide-for-html-css - fix/platform-bug-sign-in-issue + fix/platform-bug-sign-in-issues feat/add-guide-article-for-javascript translate/add-spanish-basic-html ``` -4. ページを編集し、お気に入りのテキストエディタでコードを作成します。 +4. Edit pages and work on code in your favorite text editor. -5. 変更に満足したら、必要に応じてfreeCodeCampをローカルで実行して変更をプレビューする必要があります。 +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. エラーを修正し、変更の書式を確認してください。 +6. Make sure you fix any errors and check the formatting of your changes. -7. アップデートしているファイルを確認してください: +7. Check and confirm the files you are updating: ```console git status ``` - 編集した `ステージされていない` ファイルのリストが表示されます。 + This should show a list of `unstaged` files that you have edited. ```console - ブランチのfeat/documentation - あなたのブランチは 'upstream/feat/documentation' で最新です。 + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - コミットする変更: - ("git reset HEAD ..." - - を使用して unstage) - - modified: CONTRIBUTING.md - modified: docs/README.md - modified: docs/how-to-setup-freecodecamp-locally.md - modified: docs/how-to-work-on-guide-articles.md - ``` - -8. 変更をステージングし、コミットを行います: - - このステップでは、自分で編集または追加したファイルのみをマークする必要があります。 必要に応じて変更しようとしなかったファイルをリセットして解決できます。 - - ```console - git add path/to/my/changed/file.ext - ``` - - または、 `ステージされていない` ファイルをすべてステージング領域に追加できます。 - - ```console - git add . - ``` - - ステージング領域に移動されたファイルのみが、コミットを行うときに追加されます。 - - ```console - git status - ``` - - 出力: - - ```console - ブランチのfeat/documentation - あなたのブランチは 'upstream/feat/documentation' で最新です。 - - to update what will be committed) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: CONTRIBUTING.md @@ -398,92 +359,127 @@ npm run develop ... ``` - これで、次のような短いメッセージで変更をコミットできます。 +8. Stage the changes and make a commit: + + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. + + ```console + git add path/to/my/changed/file.ext + ``` + + Or you can add all the `unstaged` files to the staging area: + + ```console + git add . + ``` + + Only the files that were moved to the staging area will be added when you make a commit. + + ```console + git status + ``` + + Output: + + ```console + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. + + Changes to be committed: + (use "git reset HEAD ..." to unstage) + + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ``` + + Now, you can commit your changes with a short message like so: ```console git commit -m "fix: my short commit message" ``` - いくつかの例: + Some examples: ```md - fix: updating guide article for Java - for loop + fix: update guide article for Java - for loop feat: add guide article for alexa skills ``` - オプション: + Optional: - 従来のコミットメッセージを作成することを強くお勧めします。 これは、人気のあるオープンソースリポジトリで見ることができる良い方法です。 開発者として、これは標準的な慣行に従うことをお勧めします。 + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - 従来のコミットメッセージの例は次のとおりです。 + Some examples of conventional commit messages are: ```md fix: update HTML guide article fix: update build scripts for Travis-CI - feat: add article for JavaScript histing - docs: update continue guidelines + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - 50文字以上ではなく、これらの短い文字を保持してください。 コミットメッセージの説明に追加情報をいつでも追加できます。 + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - これは、'updateファイル' や 'add index.md' のような型破りなメッセージよりも時間がかかりません。 + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - 従来のコミットを使用すべき理由については、こちら [](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits)をご覧ください。 + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. コミットを作成した後にファイルを編集したり、コミットメッセージを更新したりする必要があることがわかった場合は、以下のようにファイルを編集できます: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console git commit --amend ``` - これにより、 `nano` や `vi` のようなデフォルトのテキストエディタが開き、コミットメッセージのタイトルを編集し、説明を追加/編集することができます。 + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. 次に、フォークに変更をプッシュできます: +10. Next, you can push your changes to your fork: ```console git push origin branch/name-here ``` -## プルリクエストを提案する (PR) +## Proposing a Pull Request (PR) -変更をコミットしたら、 [Pull Request](how-to-open-a-pull-request.md) を開く方法をここで確認してください。 +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## クイックコマンドの参照 +## Quick commands reference -ローカルで作業するときに必要なコマンドを簡単に参照します。 +A quick reference to the commands that you will need when working locally. -| (Command) | 説明 | -| --------------------------------------------------------- | -------------------------------------------------- | -| `npm ci` | すべての依存関係をインストール/再インストールし、異なるサービスをブートストラップします。 | -| `npm run seed` | すべてのチャレンジマークダウンファイルを解析し、MongoDBに挿入します。 | -| `npm run develop` | freeCodeCamp APIサーバーとクライアントアプリケーションを起動します。 | -| `npm test` | クライアント、サーバー、lint、チャレンジテストなど、システム内のすべてのJSテストを実行します。 | -| `npm run test:client` | クライアントテストスイートを実行します。 | -| `npm run test:カリキュラムの` | カリキュラムテストスイートを実行します。 | -| `npm run test:カリキュラム--block='Basic HTML and HTML5'` | 特定のブロックをテストする | -| `npm run test:カリキュラム--superblock='responsive-web-design'` | 特定の SuperBlock をテストします。 | -| `npm run test-curriculum-full-output` | 最初のエラーが発生した後、保留せずにカリキュラムテストスイートを実行します | -| `npm run test:server` | サーバーテストスイートを実行します。 | -| `npm run e2e` | サイプレスエンドを実行してテストを終了します。 | -| `npm run clean` | すべての依存関係をアンインストールし、キャッシュをクリーンアップします。 | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## トラブルシューティング +## Troubleshooting -### 推奨される前提条件をインストールする際の問題 +### Issues with installing the recommended prerequisites -macOS 10.15以降、Ubuntu 18.04以降、Windows 10(WSL2)などの最新または最も人気のあるオペレーティングシステムを定期的に開発しています。 +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Google、Stack Overflow、Stack Exchangeなどのリソースに関する特定の問題を調査することをお勧めします。 誰かが同じ問題に直面し、あなたの特定のクエリに対する答えがすでにある可能性があります。 +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -別の OS をお使いの場合や問題が解決しない場合は、 [ヘルプ](#getting-help) を参照してください。 +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!警告] +> [!WARNING] > -> 前提条件の問題のためにGitHubの問題を作成しないでください。 彼らはこのプロジェクトの範囲外です。 +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### UI、フォント、ビルドエラーなどに関する問題。 +### Issues with the UI, Fonts, build errors etc. -UIで問題が発生した場合、フォントやビルドエラーが表示された場合、クリーンアップが便利です。 +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean @@ -494,15 +490,15 @@ npm run develop OR -ショートカットを使用 +Use the shortcut ``` npm run clean-and-develop ``` -ビルドで問題に直面し続ける場合は、ワークスペースのクリーンアップをお勧めします。 +If you continue to face issues with the build, cleaning up the workspace is recommend. -連動モードで `git clean` を使用します: +Use `git clean` in interative mode: ``` git clean -ifdX @@ -510,41 +506,41 @@ git clean -ifdX
                  - 追跡されていないファイルを消去する方法(スクリーンショット) + How to clean git untracked files (screenshot)
                  - 追跡されていないファイルを削除する方法 + How to clean git untracked files
                  -### APIに関する問題 ログイン、チャレンジ提出など +### Issues with API, Login, Challenge Submissions, etc. -ログインできない場合は、代わりにfreeCodeCampに報告されるというエラーメッセージが表示されます。 ローカルポート `3000` が別のプログラムで使用されていないことを再確認してください。 +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**Windows 上の Linux / macOS / WSL - 端末から:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console netstat -ab | grep "3000" -tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**Windows上 - 高度なPowerShellから:** +**On Windows - From Elevated PowerShell:** ```powershell netstat -ab | Select-String "3000" -TCP 0.0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### 依存関係のインストール中の問題 +### Issues installing dependencies -依存関係のインストール中にエラーが発生した場合。 ネットワークが制限されていないかファイアウォールの設定でリソースへのアクセスが妨げられないことを確認してください。 +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -最初のセットアップには、ネットワーク帯域幅に応じて時間がかかることがあります。 それでも立ち往生している場合は、オフラインの設定ではなくGitPodを使用することをお勧めします。 +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## ヘルプを見る +## Getting Help -あなたが立ち往生していると助けが必要な場合 フォーラム [の](https://forum.freecodecamp.org/c/contributors) 「コントリビューター」カテゴリまたはGitterの [コントリビューターチャットルーム](https://gitter.im/FreeCodeCamp/Contributors) でお知らせください。 +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -ブラウザのコンソールにエラーが発生したり、問題を特定するのに役立つBash / Terminal / Command Lineでエラーが発生する可能性があります。 問題の説明にこのエラーメッセージを入力すると、他の人が問題をより簡単に特定し、解決策を見つけることができます。 +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Japanese/how-to-setup-wsl.md b/docs/i18n/Japanese/how-to-setup-wsl.md index 5633080221..68bce6dde6 100644 --- a/docs/i18n/Japanese/how-to-setup-wsl.md +++ b/docs/i18n/Japanese/how-to-setup-wsl.md @@ -1,26 +1,26 @@ -# Linux用のWindowsサブシステム(WSL)でfreeCodeCampを設定 +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!注記] これらの指示に従う前に、システムが要件を満たしていることを確認してください +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL2**: Windows 10 64-bit (Version 2004, Build 19041以上) - Windows 10 Homeを含むすべてのディストリビューションで利用可能。 +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop for Windows**: [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) および [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) のそれぞれの要件を参照してください。 +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -このガイドでは、WSL2のセットアップに関するいくつかの一般的な手順について説明します。 WSL2の一般的な問題のいくつかが解決されると、 WindowsのfreeCodeCampでUbuntuのようなWSLの気晴らしを実行するために、ローカルのセットアップガイドに従うことができます。 +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## WSLを有効化 +## Enable WSL -[公式ドキュメント](https://docs.microsoft.com/en-us/windows/wsl/install-win10) の指示に従って、WSL1 をインストールしてから、WSL2 にアップグレードしてください。 +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. WSL2でUbuntu-18.04以上を使用することをお勧めします。 +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!注記] + > [!NOTE] > - > あなたは他の非debianベースのdistrosを使用することができますが、彼らはすべて自分のgotchasと一緒に来て、このガイドの範囲を超えています。 + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. OS の依存関係を更新する +2. Update the dependencies for the OS ```console sudo apt update @@ -30,68 +30,68 @@ sudo apt autoremove -y ``` -## Git の設定 +## Set up Git -Git は Ubuntu 18.04 でプリインストールされています。 Git バージョンが `git --version` であることを確認してください。 +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ - git --version +❯ git --version git version 2.25.1 ``` (Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## コードエディタのインストール +## Installing a Code Editor -Windows 10 に [Visual Studio Code](https://code.visualstudio.com) をインストールすることを強くお勧めします。 それはWSLの素晴らしいサポートを持っており、自動的にWSLディストロに必要な拡張機能をすべてインストールします。 +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -基本的には、WindowsにインストールされているVS Codeを使用して、Ubuntu-18.04にコードを編集して保存します。 +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Docker Desktop のインストール +## Installing Docker Desktop -**Docker Desktop for Windows** を使用すると、MongoDB、NGINXなどのデータベースやサービスをインストールして実行できます。 これは、MongoDBやその他のサービスをWindowsまたはWSL2に直接インストールする際の一般的な落とし穴を避けるために便利です。 +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -[公式ドキュメント](https://docs.docker.com/docker-for-windows/install) の指示に従って、Windows 配布用の Docker Desktop をインストールしてください。 +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -最高の体験を得るための最低限のハードウェア要件があります。 +There are some minimum hardware requirements for the best experience. -## Docker Desktop for WSLの構成 +## Configure Docker Desktop for WSL Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -これにより、コンテナが Windows 上で実行される代わりに、WSL側で実行されるようになります。 WindowsとUbuntuの両方で `http://localhost` からサービスにアクセスできます。 +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Docker Hub から MongoDB をインストール +## Install MongoDB from Docker Hub -WSL2で動作するようにDockerデスクトップを設定したら、次の手順に従ってMongoDBサービスを開始します。 +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. 新しいUbuntu-18.04端末を起動 +1. Launch a new Ubuntu-18.04 terminal -2. dockerhubから `MongoDB 3.6` を取得する +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. MongoDBサービスをポート `27017`で起動し、システム再起動時に自動的に実行するように設定します +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console docker run -it \ -v mongodata:/data/db \ -p 27017:27017 \ --name mongodb \ - --restart unless-stop \ + --restart unless-stopped \ -d mongo:3 ``` -4. Windows または Ubuntu の両方から `mongodb://localhost:27017` でサービスにアクセスできるようになりました。 +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Node.js と npm のインストール +## Installing Node.js and npm -ノードバージョンマネージャー - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) を使用して Node.js 用の LTS リリースをインストールすることをお勧めします。 +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -インストールが完了したら、これらのコマンドを使用して、Node.js バージョンを必要に応じて +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts @@ -107,23 +107,23 @@ nvm install 14 nvm use 12 ``` -Node.js には `npm`がバンドルされています。 `npm` の最新バージョンに更新することができます。 +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console npm install -g npm@latest ``` -## freeCodeCampをローカルで設定 +## Set up freeCodeCamp locally -前提条件のインストールが完了しましたら、 [ローカルセットアップガイド](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) に従って、あなたのマシンに freeCodeCamp をローカルにインストールしてセットアップしてください。 +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!警告] +> [!WARNING] > -> 現時点では、サイプレステストのセットアップ(および関連するGUIのニーズ)が進行中です。 ほとんどのコードベースで作業できるはずです。 +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## 有用なリンク +## Useful Links -- [Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker を使用した WSL2 Dev セットアップ](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - Mrugesh Mohapatra (freeCodeCamp.orgのスタッフ開発者) -- よくある質問: - - [Linux 版 Windows Subsystem](https://docs.microsoft.com/en-us/windows/wsl/faq) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Japanese/how-to-use-docker-on-windows-home.md b/docs/i18n/Japanese/how-to-use-docker-on-windows-home.md index b5f476a958..85ac65a3e3 100644 --- a/docs/i18n/Japanese/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Japanese/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Windows HomeでDockerを使用する方法 +# How to use Docker on Windows Home -Windows Homeでdockerを設定する際に避けるべき落とし穴がいくつかあります。 まず、 [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) を管理者として使用する必要があります。 残念ながら、Windows Home は Docker for Windows デスクトップをサポートしていないため、代わりにツールボックスを使用する必要があります。 インストールでは、シンボリックリンクを使用するため、管理者として実行する必要があります。 +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -ツールボックスをインストールしたら、管理者として Docker Quickstart Terminal を実行します。 これは、 `既定の` 仮想マシンを作成します。 まだ存在しない場合。 それが起こったら、ターミナルを閉じて(再び管理者として)VirtualBoxを開きます。 `デフォルト` マシンを見ることができます。 サイトはかなりリソース集約的ですので、仮想マシンを停止し、特にメモリをできるだけ多くの設定を上げます。 4GBのラムで動作することが確認されています。 +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Dockerが動作していることに満足したら、freeCodeCampリポジトリを `C:\Users`内のディレクトリにクローンします。 これらのディレクトリは共有され、インストール中に必要なローカルディレクトリに Docker アクセスを提供します。 +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -次のようなメッセージが表示される場合 +If you see messages like ```shell -bash: change_volumes_owner.sh: そのようなファイルやディレクトリがありません +bash: change_volumes_owner.sh: No such file or directory ``` -npm run docker:init `` が犯人である可能性があります。 +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Japanese/how-to-work-on-coding-challenges.md b/docs/i18n/Japanese/how-to-work-on-coding-challenges.md index 751035c8ca..2b95545e91 100644 --- a/docs/i18n/Japanese/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Japanese/how-to-work-on-coding-challenges.md @@ -1,33 +1,37 @@ -# コーディングの課題に取り組む方法 +# How to work on coding challenges -私たちの目標は、楽しく明確なインタラクティブな学習体験を開発することです。 +Our goal is to develop a fun and clear interactive learning experience. -インタラクティブなコーディング課題の設計は困難です。 長い説明を書いたり、ビデオチュートリアルを作成したりする方がはるかに簡単です。 ミディアムとYouTubeの人々のための場所があります。 しかし、私たちのコアカリキュラムでは、ほとんどの人にとって最適なものに固執しています。 完全にインタラクティブでビデオゲームのような体験です。 +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. -これらの課題を生み出すには、莫大な創造性と細部への注意が必要です。 利用可能な助けがたくさんあります。 アイデアを跳ね返り、チャレンジをデモできる貢献者のチーム全体からサポートがあります。 [コントリビュータールーム](https://gitter.im/freecodecamp/contributors) で活発に活動し、たくさんの質問をしてください。 +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/). -あなたの助けを借りて、何百万人もの人々が今後のコーディングを学ぶのに役立つインタラクティブなコーディングカリキュラムを設計することができます。 +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. -各チャレンジのコンテンツは、独自のマークダウンファイルに保存されます。 このマークダウンファイルは、インタラクティブなWebページを作成するためのツールを使用して、後でHTMLに変換されます。 +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -[`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) ディレクトリに、freeCodeCamp.orgのカリキュラムコンテンツのすべてがあります。 +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 own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -カリキュラムを作成する前に、変更をテストするためのツールを設定する必要があります。 以下から任意のオプションを使用できます。 +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- [freeCodeCampをローカルで](how-to-setup-freecodecamp-locally.md)設定できます。 これは **定期的/繰り返しの貢献には** を強くお勧めします。 このセットアップでは、作業と変更のテストができます。 -- 無料のオンライン開発環境であるGitpodを使用してください。 下のボタンをクリックすると、ブラウザでfreeCodeCamp用のコード対応開発環境が開始されます。 数分しかかかりません。 +## Set up the tooling for the curriculum - [![Gitpod で開く](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- GitHubのインターフェイスでファイルを編集するには、該当するファイルの鉛筆アイコンをクリックします。 これが最も速い方法ですが、GitHub上で変更をテストすることができないため、 **はお勧めできません**。 もし私たちのメンテナーが、あなたが行った変更をローカルでテストする必要があると結論づけるならば、あなたは再び上記の方法に従う必要があるでしょう。 +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## チャレンジテンプレート + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -以下は、現在のチャレンジマークダウンファイルの外観のテンプレートです。 合理化されたテンプレートを確認するには、 [](#upcoming-challenge-template) を参照してください。 +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- @@ -55,53 +59,51 @@ Instructions about what exactly needs to be done. ```yml tests: - - text: "foo" - testString: 'Chai asserts' を使用して文字列化された関数 + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
              -## チャレンジの種 +## Challenge Seed
              ```{ext} -デフォルトでエディタに表示されるコード。 +Code displayed in the editor by default. -これはチャレンジに必要なセクションです。 +This is a required section for the challenge. ```
              -### テスト前に +### Before Test
              ```{ext} -オプションのテストセットアップコード。 -``` +Optional Test setup code. ```
              -### テストの後 +### After Test -
              +
              ```{ext} -オプションのテスト コードを破棄します。 -``` +Optional Test tear down code. ```
              -## 解決策 +## Solution -
              +
              ```{ext} // solution required @@ -119,33 +121,32 @@ tests: > - `js` - JavaScript > - `jsx` - JSX > -> 2. 上記の `Tests` セクションでは、 `text` と `testString` は有効な YAML 文字列である必要があります。 `testString` は文字列化された関数や、Chai assertを使用する式にすることができます。 +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## チャレンジの番号付け +## Numbering Challenges -すべてのチャレンジには `id` が必要です。 指定しない場合、MongoDBはデータを保存するときに新しいランダムなものを作成します。 しかしそれは望んでいません 挑戦idを 異なる環境で一貫性のあるものにしたいのですから たくさんの開発者などです +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -シェル内で新しいものを生成するには (MongoDB が別々に実行されていると仮定する): +To generate a new one in a shell (assuming MongoDB is running separately): -1. `mongo` コマンドを実行します。 -2. -2. `ObjectId()`コマンドを実行します。 +1. Run `mongo` command. +2. Run `ObjectId()` command. -例: +For example: ```bash $ mongo -MongoDB シェルバージョン v3.6.1 -接続先: mongodb://127.0.0.1:27017 -MongoDB サーバーバージョン: 3.4.10 +MongoDB shell version v3.6.1 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -その結果、上記の `5a474d78df58bafeb3535d34` などの新しい id が得られます。 +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -あなたのIDを取得したら、上部の `id` フィールドとしてマークダウンファイルに入れてください。 +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- @@ -153,150 +154,210 @@ id: 5a474d78df58bafeb3535d34 title: Challenge Title ``` -## 名前付けのチャレンジ +## Naming challenges -命名するのは難しい。 いくつかの制約を課すことで簡単になりました。 +Naming things is hard. We've made it easier by imposing some constraints. -すべてのチャレンジタイトルは明示的であり、このパターンに従う必要があります: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[object 節\] +\[verb\]\[object clause\] -以下にチャレンジ名の例を示します。 +Here are some example challenge names: -- 時計回りの表記を使用して、要素のパディングを指定します -- .reduce を使用したCondense 配列 -- 文字列内の最初の文字を検索するには、かっこ表記を使用します。 +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## チャレンジの説明/説明 +## Challenge descriptions/instructions -文章は最小限の専門用語で明確かつ簡潔にする必要があります。 使用される場合、専門用語は直ちに平易な英語で定義されるべきです。 +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -短い段落を維持します(約1-4文)。 人々はテキストの壁よりもいくつかの短い段落を読む可能性が高いです。 +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -チャレンジテキストは、会話的な口調を与えるために2番目の人(「あなた」)を使用する必要があります。 このように、テキストと指示は、チャレンジを通じて働くキャンピングカーに直接話すように見えます。 最初の人(「私」、「私」、「私」、「let」、および「私たち」)を使用しないようにしてください。 +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -アウトバウンドリンクを使用しないでください。 これらは流れを邪魔します。 キャンパーはこれらの課題の間、Googleで検索する必要はありません。 キャンパーが利益をもたらすと思われるリソースがある場合は、チャレンジのガイド関連記事に追加してください。 +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -必要に応じてダイアグラムを追加できます。 +You can add diagrams if absolutely necessary. -チャレンジに絵文字や絵文字を使用しないでください。 freeCodeCampはグローバルなコミュニティを持っており、絵文字や絵文字の文化的意味は世界中で異なるかもしれません。 また、絵文字は異なるシステムで異なる表示をすることができます。 +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -適切な名詞は、可能な限り正しい大文字化を使用する必要があります。 以下は、チャレンジに表示される単語のリストです。 +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript(「J」と「S」の大文字と省略形なし) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- フロントエンド開発(ダッシュ付き形容詞形)は、フロントエンド(ダッシュなし名詞形)で作業しているときです。 同じことは、"バックエンド"、"フルスタック"、および他の多くの複合用語となります。 +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### 2分のルール +### The 2-minute rule -各チャレンジは、120秒以内にネイティブスピーカーによって解決される必要があります。 これには、シードされたコードを理解する方向/命令を読み取るのにかかる時間が含まれます。 自分のコードを書いて全てのテストに合格する +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -チャレンジを完了するのに2分以上かかる場合は、2つの選択肢があります。 +If it takes longer than two minutes to complete the challenge, you have two options: -- チャレンジを簡素化する、または -- チャレンジを二つのチャレンジに分けます。 +- Simplify the challenge, or +- Split the challenge into two challenges. -2分間のルールにより、指示を簡潔に、シードコードを明確にし、テストを簡潔にすることが、チャレンジデザイナーに強制されます。 +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -キャンピングカーが変更を解決するまでにかかる時間を追跡し、この情報を使用して簡略化や分割が必要な課題を特定します。 +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### モジュール化 +### Modularity -チャレンジごとに一つのコンセプトを教える必要があり、そのコンセプトはチャレンジの名前から明らかにされるべきです。 +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -例えば、繰り返しやバリエーションを通じて、以前にカバーされた概念を強化することができます。 1つのチャレンジにh1要素を導入し、その後いくつかのチャレンジにh3要素を導入します。 +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -私たちの目標は、何千もの2分間のチャレンジを持つことです。 これらは一緒に流れ、以前にカバーされた概念を繰り返すことができます。 +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### チャレンジテキストの書式設定 +### Formatting challenge text -チャレンジのテキストと例の具体的なフォーマットガイドラインは次のとおりです。 +Here are specific formatting guidelines for challenge text and examples: -- 言語キーワードは `` タグになります。 例えば HTML タグ名や CSS プロパティ名 -- キーワードが定義されているときの最初のインスタンス、または一般的なキーワード (例えば "object" や "immutable") は `` タグに入ります -- コード部品(すなわち関数、メソッド、変数名)への参照は、 `` タグでラップする必要があります。 下記の例を参照してください。 -- 変数 realNumber を整数に変換するには parseInt を使用します。 -- 複数行コードブロック **の前に空行** がなければなりません。 次の行は、3つのバックティックに続いて [対応言語](https://prismjs.com/#supported-languages)のうちの1つで始まる必要があります。 コードブロックを完了するには、3つのバックティックと **別の空行**を持つ改行を開始する必要があります。 **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -下記の例を参照してください。 +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -以下はコードの例です: +The following is an example of code: ```{language} -[Your CODE HERE] +[YOUR CODE HERE] ```` ```` - Additional information in the form of a note should be formatted `Note: Rest of note text...` -- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. 2番目のメモテキスト`。 -- 該当する場合はダブルクォートを使用してください +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests -Challengesは、キャンパーがコンセプトを理解していることを確認するために必要な最小限のテスト数を持つ必要があります。 +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -私たちの目標は、挑戦が教えようとしている単一のポイントを伝え、そのポイントを理解していることをテストすることです。 +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -チャレンジテストでは、Node.js と Chai.js アサーションライブラリを使用できます。 また、必要に応じて、 `code` 変数からユーザーが生成したコードにアクセスすることもできます。 +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -また、必要に応じて、 `code` 変数からユーザーが生成したコードにアクセスすることもできます。 +## Formatting seed code -## シードコードの書式設定 +Here are specific formatting guidelines for the challenge seed code: -以下はチャレンジシードコードの具体的な書式設定ガイドラインです: +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -- 2つのスペースを使用してインデントする -- JavaScript文はセミコロンで終了する -- 該当する場合はダブルクォートを使用する -- コメントはコメント文字とコメント自体の間にスペースを持つ必要があります +### Seed code comments - `// この行を修正` +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -## ヒントとソリューション +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -各チャレンジには`Get a Hint`ボタンがあります。 カリキュラムヒント/ソリューションのトピックは、format@@0(https://forum.freecodecamp.org/c/ガイド)の「ガイド」カテゴリにあります。 +Example of valid single line JavaScript comment: -カリキュラムヒント/ソリューションのトピックは、format@@0(https://forum.freecodecamp.org/c/ガイド)の「ガイド」カテゴリにあります。 +```js +// Only change code below this line +```` -既存のチャレンジのヒント/ソリューションのトピックに問題がある場合は、フォーラムの format@@0(https://forum.freecodecamp.org/c/contributors) で提案を行うことができます。 信頼レベル3のモデレータとユーザーは、コメントをレビューし、対応するヒント/ソリューションのトピックに変更を含めるかどうかを決定します。 +Example of a valid CSS comment: -### 新しいチャレンジヒント/ソリューションの追加 トピックス +```js +/* Only change code above this line */ +``` -チャレンジヒント/ソリューション関連トピックを追加する場合は、以下の手順に従ってください。 +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. -1. +```js +var a = 3; +var b = 17; +var c = 12; -### 新しいチャレンジヒント/ソリューションの追加 トピックス +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` -チャレンジヒント/ソリューション関連トピックを追加する場合は、以下の手順に従ってください。 +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) -1. 新しいトピックを作成するための同じステップに従うことから始めますが、タイトルを作成するために次を確認してください。 -2. -2. トピックのタイトルは、カリキュラムチャレンジの実際のタイトルと連結された`freeCodeCampチャレンジガイド: `から始める必要があります。 例えば、チャレンジに `Chunky Monkey` という名前が付けられている場合、トピックのタイトルは "`freeCodeCamp チャレンジガイド: Chunky Monkey`" になります。 -3. -3. `camperbot` はこれらのトピック/投稿の所有者である必要があります。 ですから、メイン投稿の所有権を `camperbot` に変更するには、管理者にリクエストする必要があります。 -4. -4. 新しいトピックを作成すると、フォーラムのトピックIDが作成されます。 フォーラムのトピックURLの末尾にあります。 このIDは、トピックにリンクするための「ヒントを入手」ボタンの通常のプルリクエストプロセスを介してカリキュラムチャレンジファイルのフロントマターに追加する必要があります。 +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line -### ヒントの内容と解のトピックに関するガイドライン + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
              + { /* Change code below this line */ } + + { /* Change code above this line */ } +

              {this.state.text}

              +
              + ); + } +}; +``` -カリキュラムチャレンジ関連の解決策を提案する場合 ガイドのトピック. +### Translation of seed code comments -### ヒントの内容と解のトピックに関するガイドライン +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. -カリキュラムチャレンジ関連の解決策を提案する場合 ガイドのトピック. 完全なコードを追加しなければならない 完全なコードを追加しなければならない これには、すべての元のシードコードと、すべてのチャレンジテストに合格するために必要な変更が含まれます。 次のテンプレートは、新しいヒント/ソリューションのトピックを作成するときに使用する必要があります: +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: ````md -# チャレンジ名がここに来ます +# Challenge Name Goes Here --- +--- -## Problem 説明 +## Problem Explanation -これはチャレンジの説明や指示を再表示することなく行うべきことをまとめます。 This is an optional section +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section #### Relevant Links @@ -327,68 +388,63 @@ function myFunc() { } ```` -#### コードの説明 +#### Code Explanation -- コードの説明はこちら -- コードの説明はこちら +- Code explanation goes here +- Code explanation goes here -#### 関連リンク +#### Relevant Links -- [リンクテキスト](link_url_goes_here) -- [リンクテキスト](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
              ```` -## チャレンジのテスト +## Testing Challenges -[create a pull request](how-to-open-a-pull-request) d)あなたの変更のために、あなたが行った変更が誤ってチャレンジに問題を引き起こさないことを確認する必要があります。 +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. すべての課題をテストするには、ルートディレクトリから以下のコマンドを実行してください +1. To test all challenges run the below command from the root directory ```` -npm run test:カリキュラムの +npm run test:curriculum ``` -2. 次のコマンドでブロックやチャレンジのスーパーブロックをテストすることもできます。 +2. You can also test a block or a superblock of challenges with these commands ``` -npm run test:カリキュラム--block='Basic HTML and HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` -npm run test:カリキュラム--superblock=responsive-web-design +npm run test:curriculum --superblock=responsive-web-design ``` -次のステップを実行することで、1つのチャレンジを個別にテストすることもできます: +You are also able to test one challenge individually by performing the following steps: -1. 「カリキュラム」ディレクトリに切り替えます。 +1. Switch to the `curriculum` directory: ``` - CDのカリキュラムは + cd curriculum ``` -2. 変更したチャレンジファイルごとに以下を実行します。 +2. Run the following for each challenge file for which you have changed: ``` - npm run test -- -g 'full English title of the challenge' + npm run test -- -g 'the full English title of the challenge' ``` -それぞれのチャレンジがテストを通過することを確認したら、format@@0(https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md)を作成してください。 +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> `.env`の環境変数`LOCALE`を、テストする必要があるチャレンジの言語に設定できます。 +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> 現在受け入れられている値は `english` と `chinese` です。 +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -> [!TIP] -> `.env`の環境変数`LOCALE`を、テストする必要があるチャレンジの言語に設定できます。 -> -> 現在受け入れられている値は `english` と `chinese` です。デフォルトでは `english` が設定されています。 +## Upcoming Challenge Template -## 今後のチャレンジテンプレート - -チャレンジテンプレートは、よりクリーンでネストされた構造に更新されます。 This has not been completely finalized, but the following should close to the final structure: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: ````mdx @@ -416,18 +472,18 @@ Description text, in markdown ![test-id-1] -id の任意の数の命令(マークダウン)とコードブロックがあります。 +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -テスト 1 のコード +Code for test one ``` ![test-id-2] -マークダウン構文の詳細な説明 +More instructions in markdown syntax ```js -その他のコード +More code ``` ## --step-seed-- @@ -435,13 +491,13 @@ id の任意の数の命令(マークダウン)とコードブロックがあり ### --before-user-code-- ```lang -ユーザーの前に評価されたコード +Code evaluated before the user’s ``` ### --after-user-code-- ```lang -ユーザーの後とテスト直前に評価されたコード +Code evaluated after the user’s, and just before the tests ``` ### --seed-content-- @@ -466,23 +522,23 @@ Some js

              - --solut-marker-- + --solution-marker--

              - シードセクションと全く同じ + Exactly the same as the seeds section

              - --次のソリューションマーカー + --next-solution-marker

              - 再び同じ + Same again

              @@ -496,7 +552,7 @@ Some js

              - 質問はここにあります(ビデオチャレンジのみに使用されます) + The question would go here (only used for video challenges)

              @@ -506,23 +562,23 @@ Some js

              - 答え 1 + Answer 1


              - 答え 2 + Answer 2


              - 答え 2 + More answers

              - --solut-marker-- + --solution-marker--

              @@ -538,13 +594,13 @@ Some js

              - 有用なリンク + Useful Links

              - チャレンジの作成と編集: + Creating and Editing Challenges:

              @@ -552,14 +608,14 @@ Some js
              1. - チャレンジタイプ - 数値チャレンジ型の値が何を意味するか (列挙)。 + Challenge types - what the numeric challenge type values mean (enum).

              2. - FreeCodeCampへの貢献 - ES6 Challenge Tests - カリキュラムの古いバージョンに貢献している Ethan Arrowood のビデオ。 + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

              3. diff --git a/docs/i18n/Japanese/how-to-work-on-the-docs-theme.md b/docs/i18n/Japanese/how-to-work-on-the-docs-theme.md index e0f48ef6b3..bf8bf8f6c9 100644 --- a/docs/i18n/Japanese/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Japanese/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# ドキュメントテーマの使い方 +# How to work on the docs theme -> [!NOTE] ドキュメントサイトのコンテンツを操作するために何も設定する必要はありません。 +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> 貢献するガイドラインに取り組むには、ここ `ドキュメント` ディレクトリ [にあるファイルを編集または追加することができます](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs)。 変更がマージされると、ドキュメントサイトで自動的に利用可能になります。 +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## ドキュメントウェブサイトの構造 +## Structure of the docs website -サイトは [`docsify`](https://docsify.js.org)を使用して生成され、GitHub ページを使用して提供されます。 +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -通常、サイトの設定を変更したり、サイトをローカルにビルドしたりする必要はありません。 興味がある場合は、以下のように動作します。 +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- The homepage source for this site is available in [`docs/index.html`](index.html). -- `docsify` と GitHub Pages を使用して、このファイルをSPAとして提供します。 -- `docsify` スクリプトは、 `docs` ディレクトリ内の `markdown` ファイルの内容を必要に応じて生成します。 -- ホームページは [`_coverpage.md`](_coverpage.md) から生成される。 -- サイドバーナビゲーションは [`_sidebar.md`](_sidebar.md) から生成されます。 +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## ローカルでドキュメントサイトを提供しています +## Serving the documentation site locally -freeCodeCampをクローン: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git -serve docs -``` - -`docsify` をインストールする - -```sh -npm install -g docsify -``` - -`/docs` ディレクトリを開く - -```sh docsify serve docs ``` -あるいは、freeCodeCampをローカルにインストールした場合(ローカルのセットアップガイドを参照してください)。 CLI を開発ツールとバンドルして、リポジトリのルートから `npm run docs:serve` を実行できます。 +Install `docsify`: + +```console +npm install -g docsify +``` + +and serve the `/docs` directory + +```console +docsify serve docs +``` + +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Japanese/how-to-work-on-the-news-theme.md b/docs/i18n/Japanese/how-to-work-on-the-news-theme.md index 665b22e5f9..51ad62ccf0 100644 --- a/docs/i18n/Japanese/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Japanese/how-to-work-on-the-news-theme.md @@ -1,8 +1,99 @@ - https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md \ No newline at end of file +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). + +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Japanese/index.md b/docs/i18n/Japanese/index.md index ca14b5d5be..1c4add4ab3 100644 --- a/docs/i18n/Japanese/index.md +++ b/docs/i18n/Japanese/index.md @@ -1,45 +1,43 @@ -[freeCodeCamp.org](https://freecodecamp.org) コミュニティは、あなたのような何千人もの親切なボランティアのおかげで可能です。 私たちは、コミュニティへのあらゆる貢献を歓迎し、あなたを歓迎しています。 +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!注:] 続行する前に、 [行動規範](https://www.freecodecamp.org/code-of-conduct) をお読みください。 私たちはコミュニティ全体でそれを厳密に実施します。 私たちはfreeCodeCamp.orgに貢献し、誰にとっても安全で包括的な体験を提供したいと考えています。 +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -貢献できてよかった。 +Happy contributing. -歓迎されています: +You are welcome to: -- [コーディングチャレンジ](#coding-challenges) のバグを作成、更新、修正します。 -- freeCodeCamp.orgの [学習プラットフォーム](#learning-platform)のバグ修正にご協力ください。 -- _(近日公開)_ freeCodeCamp.orgを世界の言語に翻訳するのを手伝ってください。 +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -質問がありますか? こちらのFAQ [](/FAQ.md) にアクセスし、貢献についてよくある質問に答えています。 +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## コーディングチャレンジ +## Curriculum -私たちのコーディングの課題はすべてコミュニティによってキュレーションされており、あなたのようなボランティアから専門的な知識を得ることができます。 +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -あなたはそれらを拡大し、彼らの言葉をより良くすることができます。 また、ユーザーストーリーを更新して、概念をより良く説明したり、冗長なものを削除したり、より正確に人々のコードをテストできるようにチャレンジテストを改善することもできます。 +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**これらのコーディングチャレンジの改善に興味がある場合は、 [コーディングチャレンジに取り組む方法](how-to-work-on-coding-challenges.md) をご覧ください。** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## 学習プラットフォーム +## Learning Platform -学習プラットフォームはモダンなJavaScriptスタック上で動作します。 Node.js、MongoDB、LoopBack、OAuth 2.0、React、Gatsby、Webpackなど、さまざまなコンポーネント、ツール、ライブラリがありますが、これらに限定されません。 +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -広い範囲で +Broadly, we use -- Node.js ベースの API サーバーがあります。 -- Reactベースのクライアント・アプリケーションのセット。 -- フロントエンドプロジェクトの評価に使用するスクリプト。 +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -これに貢献するには、API、ES6 Syntax、そして多くの好奇心について理解する必要があります。 +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -基本的には、前述の技術、ツール、およびライブラリのいくつかに基本的な精通性を期待しています。 それが言われているので、あなたは彼らの専門家である必要はありません。 +If you want to help us improve our codebase... -**コードベースを改善したい場合は、無料のオンライン開発環境Gitpodをご利用ください。** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Gitpod で開く](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(ブラウザで freeCodeCamp 用のコード対応開発環境を開始します。 +Or you can... -OR - -**[freeCodeCampをローカルで](how-to-setup-freecodecamp-locally.md) 設定できます。** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Japanese/moderator-handbook.md b/docs/i18n/Japanese/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Japanese/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
                + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Korean/FAQ.md b/docs/i18n/Korean/FAQ.md index be0299b973..e6ef4fed0d 100644 --- a/docs/i18n/Korean/FAQ.md +++ b/docs/i18n/Korean/FAQ.md @@ -1,24 +1,12 @@ -### I am new to GitHub and Open Source, where should I start? +### I am new to GitHub and Open Source. Where should I start? -Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. ### Can I translate freeCodeCamp's curriculum? -We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts. - -We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese. - -**Why are you focusing on Chinese curriculum first?** - -China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n. - -We will focus on Latin America as the demographic region for Portuguese and Spanish. - -We do not have any plans for i18n to any other languages other than the above for the foreseeable future. - -We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. ### How can I report a new bug? @@ -26,19 +14,17 @@ If you think you've found a bug, first read the ["Help I've Found a Bug"](https: If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. ### How can I report a security issue? Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### I am a student, can I or our team work on a feature for academic credits? +### I am a student. Can I work on a feature for academic credits? -Yes, sure. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all. - -We request you to plan ahead and work on a feature with this in mind. +We request you to plan ahead and work on code contributions with this in mind. ### What do these different labels that are tagged on issues mean? @@ -48,42 +34,37 @@ The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_man You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### I found a typo, should I report an issue before I can make a pull request? +### I found a typo. Should I report an issue before I can make a pull request? -For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### How do I get an issue assigned to me? +### How can I get an issue assigned to me? -We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. The first pull request for any issue is preferred to be merged. -2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: - Did you include tests? - Did you catch all usecases? - - Did you ensure all tests pass, and you confirmed everything works locally? -3. Finally, we favor pull requests which follow our recommended guidelines. + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. - Did you follow the pull request checklist? - - Did you name your pull request title meaningfully? - -You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier. - -Follow the guidelines carefully and open a pull request. + - Did you give your pull request a meaningful title? ### I am stuck on something that is not included in this documentation. **Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. **Additional Assistance:** diff --git a/docs/i18n/Korean/_sidebar.md b/docs/i18n/Korean/_sidebar.md index 3b43405b5f..1b5bda2bdc 100644 --- a/docs/i18n/Korean/_sidebar.md +++ b/docs/i18n/Korean/_sidebar.md @@ -1,8 +1,8 @@ - **Getting Started** - - [Introduction](index 'Contribute to the freeCodeCamp.org Community') + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") - [Frequently Asked Questions](FAQ.md) - **Code Contribution** -- - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) - [Open a pull request](how-to-open-a-pull-request.md) - [Work on coding challenges](how-to-work-on-coding-challenges.md) - [Work on video challenges](how-to-help-with-video-challenges.md) @@ -14,18 +14,21 @@ --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- - **Flight Manuals** (for Staff & Mods) - - [Moderator Handbook](flight-manuals/moderator-handbook.md) - - [Reply Templates](flight-manuals/using-reply-templates.md) - - [DevOps Overview](devops.md) - - [Working on Servers](flight-manuals/working-on-virtual-machines.md) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- diff --git a/docs/i18n/Korean/devops.md b/docs/i18n/Korean/devops.md index ff7eec13cb..46fb8b5382 100644 --- a/docs/i18n/Korean/devops.md +++ b/docs/i18n/Korean/devops.md @@ -1,10 +1,10 @@ -# Developer Operations at freeCodeCamp.org +# DevOps Handbook This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. Let us know, if you have feedback or queries, and we will be happy to clarify. -## How do we build, test and deploy the codebase? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. @@ -46,7 +46,7 @@ The build pipeline goes on to trigger a corresponding release pipeline if it com Status of builds and releases are [available here](#build-test-and-deployment-status). -## Triggering a build, test and deployment. +## Trigger a build, test and deploy Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). @@ -218,10 +218,491 @@ There are some known limitations and tradeoffs when using the beta version of th - #### Sign page may look different than production - We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. ## Reporting issues and leaving feedback Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

                https://amplify.nginx.com

                +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Korean/flight-manuals/moderator-handbook.md b/docs/i18n/Korean/flight-manuals/moderator-handbook.md deleted file mode 100644 index c5cd3d1eb7..0000000000 --- a/docs/i18n/Korean/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,325 +0,0 @@ -# The official freeCodeCamp Moderator Handbook. - -This will help you moderate different places in our community, including: - -- GitHub issues & pull requests -- The forum, chat rooms, Facebook groups, and other online meeting places -- In-person events like study groups, hackathons, and conferences - -**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** - -This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. - -The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. - -> [!NOTE] "With great power comes great responsibility." - Uncle Ben - -As a moderator, temperament is more important than technical skill. - -Listen. Be Helpful. Don't abuse your power. - -freeCodeCamp is an inclusive community, and we need to keep it that way. - -We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderators have the ability to close issues and accept or close pull requests. - -Moderators have two primary responsibilities regarding GitHub: - -1. QA'ing and merging pull requests -2. Evaluating and responding to issues - -## Moderating Pull Requests - -Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. - -### Types of Pull Requests - -1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: - - > Thank you for your pull request. - > - > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. - -2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. - -3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. - -### How to merge or close pull requests - -First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. - -Depending on the type of pull request it is, follow the corresponding rules listed above. - -Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. - -Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. - -If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. - -You should then comment on the pull request, thanking the contributor in your own personal way. - -If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. - -Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". - -There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. - -In both of these situations, you should go ahead and close their pull request and reply with this standard message: - -> Thank you for opening this pull request. -> -> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. -> -> Thank you and happy coding. - -If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. - -## Moderating GitHub Issues - -freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. - -### Types of GitHub Issues - -1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. - > - > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. - > - > Thank you and happy coding. - -2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: - -- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. -- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. - -3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -### Closing Stale, Outdated, Inactive Issues and Pull Requests - -- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. - -- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. - -- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. - -### Other guidelines for Moderators on GitHub - -Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. - -Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. - -If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. - -# Moderating the Forum - -As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. - -Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." - -![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) - -These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. - -### Deleting forum posts - -Forum moderators have the ability to delete user's posts. You should only do this for the following instances: - -1. Someone has posted a pornographic or graphically violent image. -2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -3. Someone has flooded a thread with lots of spam messages. - -### Dealing with spam - -For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." - -You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). - -### Dealing with off-topic conversations - -Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. - -In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. - -Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. - -### Underage Users - -Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. - -```markdown -SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service - -It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. - -Please rejoin once you have reached at least 13 years of age. - -Thank you for understanding. -``` - -# Moderating Facebook - -If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. - -Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. - -But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. - -# Moderating Discord - -Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: - -1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. - -2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** - -- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: - -``` -This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. - -I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: - -1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ -2. Message me back confirming that you have finished reading it. 3. Explain to me why you think I suspended you, and why I should remove your suspension. -``` - -- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: - -``` -Suspended: _@username_ -Reason(s): _Spamming, trolling_ -Evidence: _One or more links to the offending message(s)_ -CoC: _Sent_ -``` - -- A report for removing a suspension should look like: - -``` -I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. -``` - -- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". - -3. **How to ban and/or unban** - -- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. -- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". - -Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. - -4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: - -- Someone has posted a pornographic or graphically violent image. -- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. -- Someone has posted advertisement and / or a self-promoting message / image (social media). - -In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. - -5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. - -6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: - -- Camper posts a wall of code to request help - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. - -- Or if you really have to explain why: - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. - -- For mild and unintentional violations of the code of conduct - - Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ - -7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. - -8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. - -9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! - -10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. - -# How to become a moderator - -If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. - -If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. - -# How we retire inactive moderators - -Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: - -> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. - -> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. - -# How our Contributors room works - -Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. - -Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. - -# Dealing with solicitors - -You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). - -# Dealing with (mental) health inquiries - -You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! - -If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: - -- The user is guaranteed some privacy -- Public chat is no longer disrupted -- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself - -> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! - -If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: - -> Reference medical advice: - -After that, you can remove the Suspension from the user as you normally do. - -Helpful URLs: - -http://www.suicide.org/international-suicide-hotlines.html - -# A note on free speech - -Sometimes people will defend something offensive or incendiary that they said as "free speech." - -This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. - -
                - -Thanks for reading this, and thanks for helping the developer community! diff --git a/docs/i18n/Korean/flight-manuals/using-reply-templates.md b/docs/i18n/Korean/flight-manuals/using-reply-templates.md deleted file mode 100644 index ced39a3641..0000000000 --- a/docs/i18n/Korean/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Using Reply Templates - -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. - -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. - -### Thank you - -```markdown -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Thank you and congrats - -> For thanking and encouraging first-time contributors. - -```markdown -Hi @username. Congrats on your first pull request (PR)! 🎉 - -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Build Error - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -Once you resolve these issues, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -``` - -### Syncing Fork - -> When PR is not up to date with the `master` branch. - -``````markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. - -To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. - -Using the command line, you can do this in three easy steps: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. - -Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` - -### Merge Conflicts - -> When PR has merge conflicts that need to be resolved.¹ - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ - -Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 - ---- - -> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` -¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. - -### Duplicate - -> When PR is repetitive or a duplicate. - -```markdown -Hey @username - -It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 - -If you feel you have more to add, please feel free to open up a new PR. - -Thanks again! 😊 - ---- - -> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬 -``` - -### Closing invalid pull requests - -> When PR is invalid. - -```markdown -Hey @username - -You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️ - -Feel free to open another PR though! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Korean/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Korean/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 861a3373a4..0000000000 --- a/docs/i18n/Korean/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,476 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

                https://amplify.nginx.com

                -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Korean/how-to-open-a-pull-request.md b/docs/i18n/Korean/how-to-open-a-pull-request.md index ced6082c8a..2729cd6237 100644 --- a/docs/i18n/Korean/how-to-open-a-pull-request.md +++ b/docs/i18n/Korean/how-to-open-a-pull-request.md @@ -1,6 +1,6 @@ # How to open a Pull Request (PR) -A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. ## Prepare a good PR title @@ -72,7 +72,7 @@ Some examples of good PRs titles would be: Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. diff --git a/docs/i18n/Korean/how-to-setup-freecodecamp-locally.md b/docs/i18n/Korean/how-to-setup-freecodecamp-locally.md index 1b5573ce07..619db733cf 100644 --- a/docs/i18n/Korean/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Korean/how-to-setup-freecodecamp-locally.md @@ -1,18 +1,18 @@ Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > > [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare your local machine +### How to prepare your local machine Start by installing the prerequisite software for your operating system. -We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). @@ -147,7 +147,7 @@ Now that you have a local copy of freeCodeCamp, you can follow these instruction If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/pFspAhS), for quick queries. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > @@ -541,6 +541,6 @@ The first time setup can take a while depending on your network bandwidth. Be pa ## Getting Help -If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Korean/how-to-work-on-coding-challenges.md b/docs/i18n/Korean/how-to-work-on-coding-challenges.md index 568913de3b..2b95545e91 100644 --- a/docs/i18n/Korean/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Korean/how-to-work-on-coding-challenges.md @@ -2,11 +2,15 @@ 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, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like 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. -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. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions. +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/). + +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 [our Discord server](https://discord.gg/pFspAhS). With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. @@ -210,12 +214,15 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an Here are specific formatting guidelines for challenge text and examples: - Language keywords go in `` tags. For example, HTML tag names or CSS property names -- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags - References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: -- Use parseInt to convert the variable realNumber into an integer. -- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -See example below: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md The following is an example of code: @@ -229,7 +236,9 @@ The following is an example of code: - Additional information in the form of a note should be formatted `Note: Rest of note text...` - If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. -- Use double quotes where applicable +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests @@ -246,9 +255,81 @@ Here are specific formatting guidelines for the challenge seed code: - Use two spaces to indent - JavaScript statements end with a semicolon - Use double quotes where applicable -- Comments made should have a space between the comment characters and the comment themselves - `// Fix this line` +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
                + { /* Change code below this line */ } + + { /* Change code above this line */ } +

                {this.state.text}

                +
                + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions @@ -261,7 +342,7 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca Take the following steps when adding a new challenge hints/solutions related topic. 1. Start by following the same steps for creating a new topic but review the next for creating the title. -2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". 3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. 4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. diff --git a/docs/i18n/Korean/how-to-work-on-the-docs-theme.md b/docs/i18n/Korean/how-to-work-on-the-docs-theme.md index 8de043746f..bf8bf8f6c9 100644 --- a/docs/i18n/Korean/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Korean/how-to-work-on-the-docs-theme.md @@ -20,21 +20,35 @@ Typically you would not need to change any configuration or build the site local Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` Install `docsify`: -```sh +```console npm install -g docsify ``` and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Korean/how-to-work-on-the-news-theme.md b/docs/i18n/Korean/how-to-work-on-the-news-theme.md index 665b22e5f9..51ad62ccf0 100644 --- a/docs/i18n/Korean/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Korean/how-to-work-on-the-news-theme.md @@ -1,8 +1,99 @@ - https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md \ No newline at end of file +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). + +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Korean/index.md b/docs/i18n/Korean/index.md index 93e97fae8d..1c4add4ab3 100644 --- a/docs/i18n/Korean/index.md +++ b/docs/i18n/Korean/index.md @@ -1,45 +1,43 @@ -The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. We welcome any and all contributions to the community and are excited to welcome you aboard. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. Happy contributing. You are welcome to: -- Create, update and fix bugs in our [coding challenges](#coding-challenges). +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). - _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Coding Challenges +## Curriculum -All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** ## Learning Platform -Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Broadly, +Broadly, we use -- We have a Node.js based API server. -- A set of React-based client applications. -- A script that we use to evaluate our front-end projects. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. +If you want to help us improve our codebase... -**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts a ready-to-code dev environment for freeCodeCamp in your browser.) +Or you can... -OR - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Korean/moderator-handbook.md b/docs/i18n/Korean/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Korean/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
                + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Norwegian/FAQ.md b/docs/i18n/Norwegian/FAQ.md index 0f599b42fc..e6ef4fed0d 100644 --- a/docs/i18n/Norwegian/FAQ.md +++ b/docs/i18n/Norwegian/FAQ.md @@ -1,101 +1,82 @@ -### Jeg er ny på GitHub og åpen kildekode, hvor skal jeg starte? +### I am new to GitHub and Open Source. Where should I start? -Les vår ["Hvordan å bidra til åpen kildekode"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Det er en kompressiv ressurs av førtidsvennlige prosjekter og retningslinjer. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Kan jeg oversette freeCodeCamp's pensum? +### Can I translate freeCodeCamp's curriculum? -Vi vil nå spenne på lokaliseringen av lokaliseringen som starter med **Kinesisk** først. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Vi har til hensikt å gjøre læreplanverket tilgjengelig på flere språk, men kan ikke begå noen tidsfrister enda. Flere driftsgrenser som personale, aktive bidragsytere og tjeneren koster det å spille en rolle i driften av internasjonaliseringen (i18ne). +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Vi skal begynne med i18n innsats på disse språkene: Arabisk, portugisisk, Russisk og spansk (ikke noe bestemt rekkefølge) etter at vi har gitt ut læreplanverket i Kina. +### How can I report a new bug? -**Hvorfor satser du på læreplanen fra kinesisk først?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -Kina er den største demografiske regionen, i et ikke-folkelig engelsk publikum. Vi har nå hundretusener av brukere ved å bruke en gammel versjon av plattformen. Med fokus på den kinesiske læreplanen vil vi få et estimat på logistikk i i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Vi vil fokusere på Latin-Amerika som den demografiske regionen for portugisisk og spansk. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -Vi har ingen planer for i18n andre språk enn de som er nevnt ovenfor i forutsigbar framtid. +### How can I report a security issue? -Vi oppfordrer deg ikke til å jobbe med i18n på de ovennevnte språkene. Vi kan godta trekkforespørsler, uten noen forventninger om tidslinjer ved distribusjon. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Hvordan kan jeg rapportere en ny feil? +### I am a student. Can I work on a feature for academic credits? -Hvis du tror du har funnet en feil, først lese ["Hjelp jeg har funnet en feil"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) artikkelen og følg dens instruksjoner. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Hvis du er sikker på at det er en ny feil, gå videre og lage et nytt GitHub problem. Pass på å inkludere så mye informasjon som mulig slik at vi kan reprodusere feilen. Vi har en forhåndsdefinert mal som skal hjelpe deg gjennom dette. +We request you to plan ahead and work on code contributions with this in mind. -Vær oppmerksom på at eventuelle problemer med å søke kodehjelp på en utfordring blir stengt. Sammenliknet med spørsmål og diskusjoner finnes kun i forbindelse med problemstillinger. Når du er i tvil, bør du [be om assistanse på forumet](https://forum.freecodecamp.org) før du skriver en rapport. +### What do these different labels that are tagged on issues mean? -### Hvordan rapporterer jeg et sikkerhetsproblem? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Vennligst ikke lag GitHub problemer for sikkerhetsproblemer. I stedet send en e-post til `security@freecodecamp.org` så ser vi på det umiddelbart. +### Where do I start if I want to work on an issue? -### Jeg er student, kan jeg eller teamet vårt jobbe med en funksjon for faglige studiepoeng? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Ja, sikker. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -Vi er åpne for alle bidrag, Vær oppmerksom på at vi ikke har forpliktet oss til tidslinjer som kan være krav på ditt universitet eller ditt universitet. Vi får mange trekkforespørsler og kodebidrag fra frivillige utviklere, og vi respekterer tid og innsats. Vi vil ikke kunne gi noen PR noen spesiell oppmerksomhet for å være rettferdig for alle. +### I found a typo. Should I report an issue before I can make a pull request? -Vi ber deg om å planlegge fremover og arbeide med en funksjon med dette i tanket. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Hva betyr disse ulike merkelappene som er merket på problemer? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -Retningslinjene [turtall](https://en.wikipedia.org/wiki/Software_bug#Bug_management) og trekk forespørsler basert på deres prioritet, alvorlighetsgrad, og andre faktorer. Du kan [finne en komplett ordliste med betydningen her](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Hvor starter jeg om jeg vil jobbe med et problem? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Du bør gå gjennom [**`hjelp ønsket`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) eller [**`første ganger`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) problemer for en rask oversikt over hva du kan jobbe med. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. Problemer med de **`første timene`** etiketten er reservert for personer som ikke har bidratt til de freeCodeCamp codebase tidligere. Dersom problemstillingene mangler klarhet om hva som må gjøres, må du gjerne stille spørsmål i kommentarene. +### I am stuck on something that is not included in this documentation. -### Jeg fant en skrivebord, burde jeg rapportere et problem før jeg kan ta en pull-forespørsel? - -For typoer og andre formuleringsendringer, kan du åpne trekkforespørsler direkte uten å opprette et problem først. Problemstillingene er i større grad til å diskutere større problemer i forbindelse med kode eller strukturmessige aspekter ved læreplanen. - -Imidlertid nevner du detaljer, kontekst osv. på henteforespørselens beskrivelse for å hjelpe oss å forstå og gjennomgå bidraget selv for mindre endringer. - -### Hvordan får jeg tildelt meg et problem? - -Vi gir vanligvis ikke problemer til andre enn lenge bidragsytere for å unngå tvetydige no-serier. I stedet følger vi retningslinjene nedenfor for å være rettferdige for alle: - -1. Den første trekkforespørsel for noen problemer foretrekkes sammenslåing. -2. Når det gjelder flere trekk i samme sak, prioriterer vi kvaliteten på koden i trekkforespørslene. - - Inkluderte du tester? - - Fikk du alle bruksøkaser? - - Sikret du at alle prøvene er gjort, og at du har bekreftet at alt fungerer lokalt? -3. Til slutt favoriserer vi forespørsler som følger våre anbefalte retningslinjer. - - Følte du sjekklisten for trekkforespørselen? - - Hadde du navnet din trekkforespørsel ment? - -Du trenger ikke noen rettigheter for problemer som er merket `hjelp ønsket` eller `første takster` som forklart tidligere. - -Følg retningslinjene nøye og åpne en pull-forespørsel. - -### Jeg sitter fast på noe som ikke inngår i denne dokumentasjonen. - -**Du kan gjerne be om hjelp om:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Vi er spente på å bidra til noen av temaene du ønsker å arbeide med. Vi er glade for å kunne stille oss spørsmål om de tilhørende sakstrådene og vil være klare her. Vær sikker på at du søker etter forespørselen din før du skriver en ny. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Vær høflig og tålmodig. Vårt fellesskap av frivillige og moderatorer er alltid rundt for å veilede deg gjennom dine spørringer. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Ytterligere bistand:** +**Additional Assistance:** -Hvis du har spørsmål om stack, arkitektur av kodebasen, kan du gjerne nå ut til personalets utviklerteam: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Ansatte | Send melding på forumet | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | -| Mrugesh Mohapatra | [@opphevedadead](https://forum.freecodecamp.org/u/raisedadead) | +| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | | Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | | Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | -| Tilfeldig Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | +| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Du kan sende epost til utviklerne her: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Norwegian/_sidebar.md b/docs/i18n/Norwegian/_sidebar.md index 342b653516..1b5bda2bdc 100644 --- a/docs/i18n/Norwegian/_sidebar.md +++ b/docs/i18n/Norwegian/_sidebar.md @@ -1,36 +1,39 @@ -- **Komme i gang** - - [Introduksjon](index 'Bidra til freeCodeCamp.org samfunnet') - - [Ofte stilte spørsmål](FAQ.md) -- **Bidrag til kode** -- - [Sett opp freeCodeCamp lokalt](how-to-setup-freecodecamp-locally.md) - - [Åpne pull-forespørsel](how-to-open-a-pull-request.md) - - [Arbeid med kodeutfordringer](how-to-work-on-coding-challenges.md) - - [Arbeid med videoutfordringer](how-to-help-with-video-challenges.md) - - [Arbeid med nyhetstema](how-to-work-on-the-news-theme.md) - - [Arbeid med tema i doks](how-to-work-on-the-docs-theme.md) -- **Valgfrie veiledninger** - - [Fang utgående e-poster lokalt](how-to-catch-outgoing-emails-locally.md) - - [Sett opp freeCodeCamp på WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **lyse manualer** (for de ansatte & mods) - - [Moderator håndbok](flight-manuals/moderator-handbook.md) - - [Svar maler](flight-manuals/using-reply-templates.md) - - [Oversikt over utviklerne](devops.md) - - [Arbeider med servere](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Vårt fellesskap** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) - - [**Gitter chat**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Norwegian/devops.md b/docs/i18n/Norwegian/devops.md index acfe8d5a3e..46fb8b5382 100644 --- a/docs/i18n/Norwegian/devops.md +++ b/docs/i18n/Norwegian/devops.md @@ -1,100 +1,100 @@ -# Utvikler Drift på freeCodeCamp.org +# DevOps Handbook -Denne guiden vil hjelpe deg å forstå vår infrastruktur og hvordan vi beholder våre plattformer. Denne veiledningen har ikke uttømmende detaljer for all operasjon, men kan brukes som referanse for din forståelse av systemene. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -La oss få vite om du har tilbakemeldinger eller henvendelser, og vi skal klare oss gjerne. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Hvordan kan vi bygge, teste og distribuere kodebasen? +# Flight Manual - Code deployments -Dette arkivet er kontinuerlig bygget, testet og distribuert til **separate sett med infrastruktur (servere, databaser, CDNer, etc.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Dette omfatter tre trinn som skal følges i sekvensen: +This involves three steps to be followed in sequence: -1. Nye endringer (både fikser og funksjoner) slått sammen til vår primære utviklingsgren (`master`) via trekkforespørsler. -2. Disse endringene gjennomføres gjennom en rekke automatiserte tester. -3. Når testene tillater det, frigjør vi endringene (eller oppdaterer dem hvis det er nødvendig) til bruk på vår infrastruktur. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Bygge kodeplakaten - Kartlegging av Git Branches til distribusjon. +#### Building the codebase - Mapping Git Branches to Deployments. -Ofte [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (standardutviklingsgrenen) er slått sammen i [`produksjonsstiftelsen`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) en gang daglig og slippes ut i en isolert infrastruktur. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Dette er en formidlingsutgave for våre utviklere og bidragsytere til frivillige. Det er også kjent som vår "staging" eller "beta"-frigivelse. +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Den er identisk med vårt produksjonsmiljø på `freeCodeCamp.org`, annet enn ved hjelp av et separat sett med databaser, servere, web-proxies, osv. Dette isolasjonen lar oss teste pågående utvikling og trekk i et "produksjon" som scenario, uten å påvirke de regelmessige brukerne av freeCodeCamp.org's hovedplattformer. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Når utviklerteamet [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) er godt fornøyd med endringene i testplattformen, disse endringene flyttes noen dager til [`produksjonsenheten`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) -avdelingen. +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -Dette er den endelige utgaven som flytter endringer i våre produksjonsplattformer på freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Tester endringer - Integrasjon og brukeraksept Testing. +#### Testing changes - Integration and User Acceptance Testing. -Vi bruker ulike nivåer av integrasjon og akseptansetesting for å kontrollere kvaliteten i koden. Alle våre tester blir utført gjennom programvare som [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) og [Azure Rørledninger](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Vi har enheten tester for å teste våre løsninger, server-APIer og kundeservicer. Disse hjelper oss med å teste integrasjonen mellom ulike komponenter. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> Vi er også i ferd med å skrive sluttbrukertester som vil bidra til å replikere virkelige verdensscenarier slik som å oppdatere en e-post eller å ringe til API eller tredjeparts tjenester. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Disse testene bidrar til å forhindre at problemer kan gjenta seg selv og sikre at vi ikke introduserer en feil mens vi arbeider på en annen feil eller en funksjon. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Distribuerer endringer - Skyve endringer på servere. +#### Deploying Changes - Pushing changes to servers. -Vi har konfigurert kontinuerlig leveringsprogramvare for å presse endringer i våre utviklings- og produksjonsservere. +We have configured continuous delivery software to push changes to our development and production servers. -Når endringene er skjøvet inn i verneområ- dene utløses en rørledning som automatisk utløses for grenen. Byggerørledningene har ansvaret for å bygge gjenstander og holde dem i kjølelagring for senere bruk. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -Bygget rør skal sette i gang en tilsvarende utløserrørledning hvis den er ferdig med et vellykket rulleområde. Frigivelsesrørledningene har ansvaret for å samle inn byggkunstnerne, flytte dem til serverne og drive livet. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Status på bygg og utgivelser er [tilgjengelig her](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Utløs en bygning, test og utplassering +## Trigger a build, test and deploy -Foreløpig er det bare medlemmer i utviklerteamet som kan presse til produksjonsgrenene. Endringene i `produksjon-*` grener kan bare lande via hurtigovergangen til [`oppstrøms`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> De kommende dagene vil vi forbedre denne flyten for å bli gjort via trekkforespørsler for bedre tilgang og åpenhet. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Dytter endringer i testprogrammet. +### Pushing changes to Staging Applications. -1. Konfigurer dine fjernkontroller korrekt. +1. Configure your remotes correctly. ```sh - git fjern-v + git remote -v ``` - **Resultater:** + **Results:** ``` - opprinnelig git@github.com:raisedadead/freeCodeCamp.git (fetch) - opprinnelse git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) - upstream git@github.com:freeCodeCamp/freeCodele.git (push) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Sørg for at `master` grenen er urørt og synkronisert med upstream. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master - git hent --all --prune + git fetch --all --prune git reset --hard upstream/master ``` -3. Sjekk at Travis CI er passert på `master` grenen for upstream. +3. Check that the Travis CI is passing on the `master` branch for upstream. - De [kontinuerlige integrasjonen](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) testene bør være grønne og PASSING for `master` grenen. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
                Kontrollerer status ved Travis CI (screenshot) +
                Checking status on Travis CI (screenshot)
                - ![Sjekk byggstatus på Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
                - Hvis det mislykkes bør du stoppe og undersøke feilene. + If this is failing you should stop and investigate the errors. -4. Bekreft at du kan bygge kodelageret lokalt. +4. Confirm that you are able to build the repository locally. ``` - npm kjøre ren-og-utvikling + npm run clean-and-develop ``` -5. Flytt endringer fra `master` til `produksjonsmiljø` via hurtig-for-fletting +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` git checkout production-staging @@ -102,26 +102,26 @@ Foreløpig er det bare medlemmer i utviklerteamet som kan presse til produksjons git push upstream ``` - > Du vil ikke kunne tvinge push, og hvis du har skrevet historien om igjen vil disse kommandoene feile. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Hvis de gjør det, kan det hende du har gjort noe feil og du bør bare begynne på nytt. + > If they do, you may have done something incorrectly and you should just start over. -Trinnene over utløser automatisk en kjøring på byggeledningen for `produksjonsstaging` grenen. Når bygget er fullført, lagres artifaktene som `.zip` filer i et kjølig lager som kan hentes inn og brukes senere. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -Frigjøringsrøret utløses automatisk når det er mulig å få tilgang til en frisk del av rørledningen som er koblet sammen. For testering av plattformer innebærer ikke denne prosessen manuell godkjenning, og artifaktene blir skjøvet til klienten CDN og API-servere. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> Vanligvis tar bygget ~20-25 minutter for å fullføre kjøringen av utgivelsen, som tar ~15-20 minutter for klienten, og ~5-10 minutter til API å være tilgjengelig direkte. Fra kodepush til å leve på testplattformene tar hele prosessen **~35-45 minutter** totalt. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Dytter endringer i produksjonsapplikasjoner. +### Pushing changes to Production Applications. -Prosessen er for det meste den samme som testplattformene på plass, med noen ekstra sjekker. Dette er bare for å gjøre at vi ikke gjør noe som helst på freeCodeCamp.org som kan se hundrevis av brukere som bruker det til enhver tid. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| Du må IKKE utføre disse kommandoene med mindre du har bekreftet at alt er i arbeid på testplattformen. Du bør ikke omgå eller hoppe over tester ved testingen før du går videre. | -|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Sørg for at `produksjonsstigen-steget` er urørt og synkronisert med upstream. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh git checkout production-staging @@ -129,99 +129,580 @@ Prosessen er for det meste den samme som testplattformene på plass, med noen ek git reset --hard upstream/production-staging ``` -2. Flytt endringer fra `produksjonsstadium` til `produksjons-gjeldende` via en rask sammenslåing +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` - git checkout produksjon-gjeldende - git flett produksjon-testaging + git checkout production-current + git merge production-staging git push upstream ``` - > Du vil ikke kunne tvinge push, og hvis du har skrevet historien om igjen vil disse kommandoene feile. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Hvis de gjør det, kan det hende du har gjort noe feil og du bør bare begynne på nytt. + > If they do, you may have done something incorrectly and you should just start over. -De ovenstående trinnene vil automatisk utløse en kjøring på byggeledningen for `produksjons-nåværende` grenen. Når en bygningsdel er ferdig, vil den utløse en kjøring på utslippsledningen. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> Vanligvis tar byggetypen å kjøre ~20-25 minutter å fullføre. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Ytterligere skritt for personalets handling** +**Additional Steps for Staff Action** -Et frigivelsesløp har blitt utløst, medlemmer av utviklermedarbeiderteamet vil motta en automatisk manuell intervensjonstjeneste. De kan enten _godkjenne_ eller _avvise_ utgivelsen. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Hvis endringene fungerer pent og er testet på testingen av testen, kan den godkjennes. Godkjenning må gis innen 4 timer etter at utgivelsen utløses før den avvises automatisk. Et personale kan utløse kjøringen manuelt for avviste kjøringer på nytt, eller vente på neste frigivelsessyklus. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -For personellets bruk: +For staff use: -| Sjekk e-posten din for en direkte lenke eller [gå til lanseringsdashbordet](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) etter at versjonen er fullført. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Når en av medarbeiderne godkjenner en utgivelse, vil rørledningen presse på endringene som ligger til freeCodeCamp.orgs produksjon CDN og API-servere. De bruker vanligvis ~15-20 minutter for klienten, og ~5 minutter for API servere å være tilgjengelig for å være tilgjengelig. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> Utgivelsen tar vanligvis ~15-20 minutter for hver klientforekomst, og ~5-10 minutter for hver API-eksempel tilgjengelig direkte. Fra kode trykk for å leve på produksjonsplattformene tar hele prosessen **~90-120 minutter** totalt (det tar ikke å telle ventetid for personalets godkjenning). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Bygg, prøvings- og distribusjonsstatus +## Build, Test and Deployment Status -Her er den gjeldende testen, bygg og distribueringsstatus for kodebasen. +Here is the current test, build and deployment status of the codebase. -| Type: | Gren | Status: | Kontrollpanel | -|:-------------- |:------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------------- | -| CI Tester | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI byggestatus](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Gå til statusdashbord](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| CI Tester | [`produksjonsmiljø`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI byggestatus](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Gå til statusdashbord](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Bygg rør | [`produksjonsmiljø`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Mokee byggstatus](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Gå til statusdashbord](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Slipp Pipeline | [`produksjonsmiljø`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Gå til statusdashbord](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| CI Tester | [`produksjons-strøm`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI byggestatus](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Gå til statusdashbord](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Bygg rør | [`produksjons-strøm`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Mokee byggstatus](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Gå til statusdashbord](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Slipp Pipeline | [`produksjons-strøm`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Gå til statusdashbord](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Tidlig tilgang og beta-testing +## Early access and beta testing -Vi ønsker deg velkommen til å teste disse utgivelsene i en **"offentlig betatester"** modus og få tidlig tilgang til kommende funksjoner på plattformene. Noen ganger kalles disse funksjonene/endringene for **next, beta, stag,** etc. om hverandre. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Dine bidrag via tilbakemeldinger og problemrapporter vil hjelpe oss med å gjøre produksjonsplattformene på `freeCodeCamp. rg` mer **rolig**, **konsekvente** og **stabile** for alle. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Vi takker deg for å rapportere feil du møter og hjelpe til med å gjøre freeCodeCamp.org bedre. Du rock! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Identifisere kommende versjon av plattformene +### Identifying the upcoming version of the platforms -For øyeblikket er en offentlig betatestversjon tilgjengelig på: +Currently a public beta testing version is available at:

                freecodecamp.dev

                -> [!NOTE] Domenet er annet enn **`freeCodeCamp.org`**. Dette vil hindre søkemotorindeksering og unngå forvirring for vanlige brukere av plattformen. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identifisere gjeldende versjon av plattformene +### Identifying the current version of the platforms -**Den gjeldende versjonen av plattformen er alltid tilgjengelig på [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -dev-team fletter seg sammen fra `produksjonsstaging` grenen til `produksjons-gjeldende` når de slipper å endres. Den øverste utføringen bør være det du ser finnes på nettstedet. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Du kan identifisere den nøyaktige versjonen som blir distribuert ved å besøke bygge- og distribusjonsloggene som er tilgjengelige i statusdelen. Alternativt kan du også helle oss i [bidragsytere chat rom](https://gitter.im/FreeCodeCamp/Contributors) for en bekreftelse. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Kjente begrensninger +### Known Limitations -Det er noen kjente begrensninger og handelshindringer når man bruker beta-versjonen av plattformen. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### Alle data / personlig fremgang på disse beta-plattformene `vil IKKE bli lagret eller transportert over` for å produsere. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Brukerne på betaversjonen vil ha en egen konto fra produksjonen.** Beta-versjonen bruker en fysisk adskilt database fra produksjon. Dette gir oss muligheten til å hindre utilsiktet tap av data eller endringer. Dev teamet kan rense databasen til denne betaversjonen etter behov. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Det er ingen garantier for oppetid og påliteligheten av beta-plattformene. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Anvendelsen er forventet å være hyppig og i raske gjentakelser, noen ganger flere ganger per dag. Som et resultat vil det være uventet nedetid til tider eller ødelagt funksjonalitet på betaversjonen. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Send ikke vanlige brukere til dette nettstedet som et mål på å bekrefte en fiks +- #### Do not send regular users to this site as a measure of confirming a fix - beta er og har alltid vært å øke lokal utvikling og teste – ingenting annet. Det er ikke lover hva som kommer, men et glimt av det som arbeides opp. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### Siglogg-siden kan se annerledes ut enn produksjon +- #### Sign page may look different than production - Vi bruker en test tenant for freecodecamp.dev for Auth0, og har derfor ikke evnen til å sette et egendefinert domene. Dette gjør at alle omadresserte callbacks og innloggingssiden vises på et standarddomene som: `https://freecodecamp-dev.auth0.com/`. Det påvirker ikke funksjonaliteten så nær produksjonen som vi kan få. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Rapportering av saker og tilbakemelding +## Reporting issues and leaving feedback -Åpne nye saker for diskusjoner og rapporter feil. Du kan merke dem som **[`utgivelse: neste/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for tur. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Du kan sende en e-post til `dev[at]freecodecamp.org` hvis du har noen spørsmål. Som alltid bør alle sikkerhetsproblemer rapporteres til `sikkerhet[at]freecodecamp.org` i stedet for offentlig tracker og forum. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

                https://amplify.nginx.com

                +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Norwegian/flight-manuals/moderator-handbook.md b/docs/i18n/Norwegian/flight-manuals/moderator-handbook.md deleted file mode 100644 index 68151bd304..0000000000 --- a/docs/i18n/Norwegian/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# Den offisielle freeCodeCamp Moderator håndboken. - -Dette vil hjelpe deg med å moderere forskjellige steder i vårt samfunn, inkludert: - -- GitHub saker & trekk forespørsler -- Forum, chatterom, Facebook-grupper og andre onlinemøter -- Enkelthendelser som studiegrupper, hackathons, og konferanser - -**Alle freeCodeCamp Moderatorer er fellesskapsrike moderatorer. Det betyr at vi stoler på deg for å overvåke noen av disse stedene.** - -Dette sa du kan tjene som en moderator i hvilken plass som er av størst interesse for deg. Noen moderatorer bare hjelper på GitHub. Andre bare hjelper ut på forumet. Noen moderatorer er aktive overalt. - -Den nederste linjen er at vi vil at du skal nyte å være en moderator, og investere den knappe tiden på steder som er av interesse for deg. - -> [!NOTE] "Med stor makt kommer et stort ansvar." - Onkel Ben - -Som moderator er temperament viktigere enn teknisk kompetanse. - -Hørt. Vær Hjelpet. Ikke misbruk din makt. - -freeCodeCamp er et inkluderende samfunn, og vi må beholde det på den måten. - -Vi har én kode for å styre hele samfunnet vårt. Jo færre regelene, jo lettere skal de huske. Du kan lese disse reglene og forplikte dem til minne [her](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderatorer har mulighet til å lukke problemer og godta eller lukke pull-forespørsler. - -Moderatorer har to primære oppgaver vedrørende GitHub: - -1. QA'ing og sammenslåing av trekkforespørsler -2. Evaluere og svare på temaer - -## Modererende trekkforespørsler - -Trekk forespørsler er hvordan bidragsytere sender inn endringer i freeCodeCamp's kodelager. Det er viktig at vi utfører kvalitetssikring (QA) på trekkforespørsler før vi bestemmer om vi skal slå dem sammen eller lukke dem. - -### Rulletyper trekkforespørsler - -1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. Du kan også gjennomgå disse rettighetene til GitHub og bestemme om du skal slå dem sammen. Vi må være litt mer forsiktige om disse, fordi millioner av mennesker vil møte denne teksten når de jobber gjennom læreplanverket freeCodeCamp . Gjør trekkforespørsel teksten tydeligere uten å gjøre den mye lenger? Er redigeringene relevante og ikke for fotgjengere? Husk at vårt mål er at utfordringene skal være så tydelig som mulig. De er ikke stedet for ting detaljer. Dessuten kan bidragsytere prøve å legge til lenker til ressurser til utfordringene. Du kan lukke disse trekkforespørslene og svare dem med dette: - - > Takk for din pull-forespørsel. - > - > Jeg lukker denne pull forespørselen. Legg til linker og andre detaljer i dette nettstedet til utfordringscachen i stedet. - > - > Hvis jeg tror jeg er feil med å avslutte dette problemet, kan jeg åpne det på nytt og gjøre avklaringer. Takk skal du og glad koding. - -2. **Challenge Code Edits** Dette er endringer i koden i en utfordring - Utfordringsfrø, utfordringsløsning og teststrenger. Disse trekk-forespørslene må trekkes ned fra GitHub og testes på din lokale datamaskin for å sikre at oppgavetestene fortsatt kan bestås med gjeldende løsning, og den nye koden introduserer ikke noen feil. Noen bidragsytere kan prøve å legge til ytterligere prøvinger for å dekke pedantiske hjørnetilfeller. Vi må være forsiktige med å ikke gjøre utfordringen for komplisert. Utfordringene med testene bør være så enkle og intuitive som mulig. I tillegg til algoritmeutfordringene og intervju-prep bør en lærer kunne løse hver utfordring innen omtrent 2 minutter. - -3. **Codebase Changes** Disse kodene endrer funksjonaliteten til selve freeCodeCamp plattformen. Noen ganger prøver bidragsytere å gjøre endringer uten særlig forklaring, men for å gjøre endringer i koden må vi sørge for at det er et reelt behov for endringen. So these pull requests should reference an existing GitHub issue where the reasons for the change are discused. Deretter kan du åpne trekkforespørselen på datamaskinen din og teste dem lokalt. Hvis endringene ser bra ut, må du ikke slå dem sammen helt ennå. Du kan kommentere på pull forespørselen at "LGTM" og deretter nevne @raisedadead slik at han kan ta en endelig utseende. - -### Hvordan slå sammen eller lukke trekkforespørsler - -Først av alt, når du velger en pull-forespørsel til QA, må du tildele deg selv til den. Du kan gjøre dette ved å klikke på "Tildel deg selv" linken under "oppdragstakere"-delen i høyre kolonne av GitHubs grensesnitt. - -Avhengig av typen trekkforespørsel er, følger de tilsvarende reglene oppført ovenfor. - -Før du går sammen om trekkforespørsel, må du sørge for at GitHub har grønne sjekkmerker for alt. Hvis det er noen X's, se nærmere på de først og finne ut hvordan de skal bli til grønne sjekkmerker først. - -Noen ganger blir det en fusjonert konflikt. Dette betyr at en annen pull-forespørsel har gjort en endring til den eksakte samme delen av den samme filen. GitHub har et verktøy for å adressere disse fusjonene akkurat på GitHub. Du kan forsøke å adressere disse konfliktene. Bruk ditt beste skjønn. Trekk forespørselens endringer på toppen, og forslagene til hovedgrenene står på bunn. Noen ganger blir det overflødig informasjon i det som kan slettes. Før du er ferdig, må du virkelig slette `<<<<<<`, `======`, og `>>>>>>` at Git tilføyer å indikere områder med konflikt. - -Hvis pull forespørselen ser klar til å slå seg sammen (og ikke krever godkjenning fra @raisedadead), kan du gå videre og slå den sammen. Sørg for å bruke standard funksjonalitet "Squash and Merge" på GitHub. Dette vil knuse alle pull-forespørsler som starter i en enkelt kommando, noe som gjør at Git historikken er mye enklere å lese. - -Da bør du kommentere spørsmålet om trekkforespørselen, takke bidragsyteren på din personlige måte. - -Hvis forfatteren av pull-forespørselen er en "første gangs bidragsyter" må du også gratulere dem med den første sammenslåtte pull-forespørselen til arkivet. Du kan se på øvre høyre hjørne av PRs kropp for å bestemme førstegangs bidragsyter. Det vil vise `Først-time bidragsyter` som vist nedenfor: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCampations) 690x281](https://i.imgur.com/dTQMjGM.png) - -Hvis trekket ikke ser klar ut til å slå seg sammen kan du høflig svare på forfatteren hva de skal gjøre for å gjøre det klart. Forhåpentligvis vil de svare og få en pull-forespørsel nærmere klar. - -Ofte blir det tydelig lav innsats. Du kan ofte fortelle dette umiddelbart når bidragsyteren ikke plager å krysse av i avmerkingsboksene i trekkforespørselmalen, eller brukte en tittel for generisk hente forespørsel, som "made changes" eller "Update index. d". - -Det er også situasjoner hvor bidragsyteren prøver å legge til en lenke til sin egen nettside, eller inkluder et bibliotek de selv er opprettet, eller har en fritak for redigering som ikke tjener for å hjelpe noen, men selv. - -I begge disse situasjonene skal du gå videre og lukke deres trekkforespørsel og svare med denne standardmeldingen: - -> Takk for at du åpnet denne pull forespørselen. -> -> Dette er en standard melding som varsler deg at vi har gjennomgått din trekkforespørsel og bestemt at du ikke skal slå sammen den. Vi ønsker velkommen kommende pull forespørsler fra deg. -> -> Takk og lykkelig koding. - -Hvis du trenger en ny uttalelse om en trekkforespørsel, gå videre og legg igjen kommentarer på trekkforespørselen, legg deretter "diskuter"-etiketten til trekkforespørselen. - -## Modererer GitHub-problemer - -freeCodeCamp er et aktivt åpen kildekode-prosjekt. Vi får nye problemer hver dag, som alle må reise og merkes. - -### Typer av GitHub saker - -1. **Code Help Requests**, which people have mistenly created GitHub issues for. Hvis noen ber om hjelp, lim inn følgende melding, så lukk problemet. - - > Takk for at du rapporterer problemet. - > - > Dette er en standard melding med beskjed om at dette problemet ser ut til å være en forespørsel om hjelp. I stedet for å spørre om hjelp her, klikk på \*\*"Hjelp"\* knappen på utfordringen på freeCodeCamp, som vil hjelpe deg med å opprette et spørsmål i den riktige delen av forumet. Frivillige på forumet svarer vanligvis på spørsmål innen få timer og kan bidra til å avgjøre om det er et problem med koden din, eller testene til utfordringen. - > - > Hvis forummedlemmene bestemmer at det ikke er noe galt med koden din, kan du be om at dette problemet blir gjenåpnet. - > - > Takk og lykkelig koding. - -2. **Feilrettingsproblemer eller avklaringsproblemer** Prøv å reprodusere feilen selv hvis du kan. Hvis ikke, be dem om å reprodusere feilen og om de har noen skjermbilder, videoer eller ytterligere detaljer som kan hjelpe deg å reprodusere problemet. Når du kan reprodusere problemet - eller i det minste bekrefte det er et legit problem - etikett det `bekreftet`. Deretter: - -- Hvis det er en enkel endring til en eksisterende utfordring, etikett som `første nedtellinger bare`, ellers `vil hjelpet`. Bruk andre etiketter etter behov. -- Hvis problemet er mer signifikant, flagg som `bug`.   Hvis det er tvetydighet med hensyn til hva som er riktig måte å handle på et problem, føler deg fri til å merke @raisedadead på problemet får sin mening på det, og legg deretter til `Diskutere` merket. - -3. **Dupliser saker** Hvis en sak er det samme som en annen rapportert sak, skal det tidligere rapporterte problemet forrang. Markering som `dupliser`, lim inn følgende melding erstatter `#XXXXX` med problemnummeret, og lukk deretter feilen. - - > Takk for at du rapporterer problemet. - > - > Dette er en standard melding som varsler deg at dette problemet ser ut til å være svært likt problemstillingen #XXXXX, så jeg lukker den som et duplikat. - > - > Hvis jeg tror jeg er feil med å avslutte dette problemet, kan jeg åpne det på nytt og gjøre avklaringer. Takk og lykkelig koding. - -4. **Fikset i testmiljøet** Noen problemer kan allerede ha blitt fikset i testsonen, men har ikke et GitHub problem tilknyttet dem. Hvis dette er tilfelle, kan du lime inn følgende melding, lukke problemet og legge til en `status: løst/frakt` etikett: - - > Takk for at du rapporterer problemet. - > - > Dette er en standard melding med informasjon om at problemet du nevnte her viser i produksjon, men at den allerede har blitt faset i testingen. Det betyr at neste gang vi presser ned vår egen gren til produksjon, så skal problemet fikses. Jeg stenger saken på grunn av dette. - > - > Hvis jeg tror jeg er feil med å avslutte dette problemet, kan jeg åpne det på nytt og gjøre avklaringer. Takk og lykkelig koding. - -### Lukker Stilling, Utdatert, Inaktive problemer og Forespørsler om trekk - -- Stale Issues eller PRs er de som ikke har sett noen aktivitet fra OP i 21 dager (3 uker fra den siste aktiviteten), men bare etter at en moderator har bedt om mer informasjon/endringer. Disse kan lukkes i et automatisk skriptet eller av moderatorene selv. - -- Aktivitet defineres som: Kommentarer som ber om en oppdatering av PR og prøveversjoner som `status: oppdatere nødvendige` etikett osv. - -- Hvis Operatøren ber om tilleggsassistanse eller til og med tid, kan dette lempes på og revideres etter at det er gitt et svar. Moddene bør uansett bruke sin beste skjønn for å løse status på den uavklarte PR. - -### Andre retningslinjer for moderatorer på GitHub - -Selv om du vil ha skrivetilgang til freeCodeCamp's repository, **bør du aldri trykke kode direkte til freeCodeCamp kodelagre**. All kode skal legges inn i freeCodeCamp's codebase i form av en pull-forespørsel fra en forgrening av arkivet. - -Du bør heller aldri akseptere dine egne PR'er. De må være 'Q' av en annen moderator, akkurat som med en annen PR. - -Hvis du merker noen som knuser [koden med oppførsel](https://code-of-conduct.freecodecamp.org) på GitHub problemer, eller åpne trekkforespørsler med skadelig innhold eller kode, epost dev@freecodecamp. rg med en lenke til den pågående trekkforespørselen, og vi kan vurdere å utestenge dem fra freeCodeCamp's GitHub organisasjon helt. - -# Modererer forumet - -Som en moderator hjelper du samfunnet vårt til å holde orden på noen som helst for å lære og få hjelp. Du vil håndtere flaggede innlegg og håndtere spam, av-emne, og andre upassende samtaler. - -Vær oppmerksom på at når du er en moderator på forumet, vil du begynne å se blå moderator hint om forummedlemmer, "Som dette er første gang [person] har postet - la oss ønske dem velkommen til samfunnet! eller "[person] har ikke postet på lang tid - la oss ønske dem velkommen tilbake.» - -![En blå tekstmelding som sier "dette er første gang [person] har postet - la oss ønske dem velkommen til samfunnet!](https://i.imgur.com/mPmVgzK.png) - -Dette er muligheter for at du skal ønske dem velkommen og få dem til å føle seg ekstra spesielle. Du vet aldri hvilken person som er marginalt involvert som blir vår neste superhjelper, og som hjelper mange andre til å hjelpe seg på sin kodereise. Også den minste godheten kan utløse gode gjerninger. - -### Sletter foruminnlegg - -Forum moderatorer har mulighet til å slette brukerens innlegg. Du bør kun gjøre dette i følgende tilfeller: - -1. Noen har postet et pornografisk eller grafisk voldelig bilde. -2. Noen har postet en link eller kode som er ondsinnet i naturen og kan skade andre kamre som klikker på den. -3. Noen har oversvømt en tråd med masse spam meldinger. - -### Forhandler med spam - -For første søppelpost, send dem en melding som forklarer problemet, og fjern linken eller innlegget hvis det er aktuelt. Legg igjen et notat på brukerens profil som forklarer handlingen du har tatt. Hvis problemet vedvarer, følg prosessen ovenfor. Enkelt blokker brukeren fra å poste inn (ved å bruke silence-valget på brukerens Admin-panel), og send deretter en advarsel med Code of Conduct. Kryss av i boksen i privat melding som viser at meldingen er en "formell advarsel". - -Du kan stille spørsmål og rapportere hendelser i [personalets del](https://forum.freecodecamp.com/c/staff). - -### Håndtering av samtaler i off-topic - -Innlegg eller emner som er på feil sted, kan kategoriseres eller omdøpes til noe som er egnet. - -I spesielle tilfeller kan det være hensiktsmessig at en moderator forvandler en diskusjon inn i flere tråder. - -Hvis du har problemer eller spørsmål, kan du også opprette et innlegg med handlingene dine i personalkategorien, og merk en annen moderator hvis du vil at de skal gjennomgå de modererende handlingene. - -### Mindreårig bruker - -Våre vilkår krever at freeCodeCamp brukere er minst 13 år gamle. I tilfelle en bruker avslører at de er under 13 år send dem denne meldingen og slett deres forum konto (hvis sletting ikke er tilgjengelig, er det tilstrekkelig å utsette kontoen permanent). Så epost [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) eller [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) for å slette også brukerens freeCodeCamp-konto. - -```markdown -UNDER: Brukere under 13 har ikke lov til å bruke forumet per tjenestevilkår - -Det har gjort oss oppmerksomme på at du er under 13 år. Per [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), du må være minst 13 år til å bruke nettstedet eller forumet. Vi vil slette både din freeCodeCamp konto og din forumkonto. Denne begrensningen holder oss i samsvar med amerikanske lover. - -Bli med på nytt når du har nådd minst 13 år. - -Takk for forståelsen. -``` - -# Modererer Facebook - -Hvis du ser noe som ser ut til å bryte vår [Code of Conduct](https://code-of-conduct.freecodecamp.org/), bør du slette den umiddelbart. - -Noen ganger kommer folk til å poste ting som de tror er morsomme. De innser ikke at det de sa og hva de delte kan tolkes som offensiv. I disse sakene må posten slettes, men personen som postet den trenger ikke nødvendigvis å bli utestengt. Ved å få byttet ut vil de forhåpentligvis komme til å forstå at det de postet var upassende. - -Men hvis det er en egens skyld som med rimelighet ikke kan tilskrives en kulturell forskjell eller misforståelser av det engelske språket, deretter bør du vurdere å blokkere medlemmet fra Facebook-gruppen. - -# Modererer Discord - -Her er hvordan moderatorer håndterer brudd på vår [Code of Conduct](https://code-of-conduct.freecodecamp.org/) på Discord: - -1. **Sørg for at den var ment å bryte koden i dirigen.** Ikke alle brudd på CoC var ment som sådan. Et nytt kamper kan legge inn en stor mengde kode for hjelp, ikke kjent med at dette kan anses som spamming. I disse tilfellene kan du bare be dem om å lime inn koden med tjenester som Codepen eller Pastebin. - -2. **Hvis kamper klart bryter koden i dirigen, fortsetter moderatoren som følger:** - -- Suspender de skyldige kamper, men advarer ikke eller truer dem. I stedet kan du gi dem Suspend rollen på Discord, og så sende dem følgende melding: - -``` -Dette er en standard melding som varsler deg at jeg måtte midlertidig suspendere deg fra å snakke med freeCodeCamp Discord-serveren. - -Jeg er en moderator som opptrer på vegne av samfunnet vårt. Jeg tenker på å fjerne suspensjonen din, men jeg trenger å ta de følgende 3 trinnene først: - -1. Les vår Code of Conduct: https://code-of-conduct.freecodecamp.org/ -2. Send tilbake en beskjed som bekrefter at du er ferdig med å lese den. -3. Forklar meg hvorfor du tror jeg har suspendert deg, og hvorfor skal jeg fjerne suspensjonen. -``` - -- Rapporter en kort oppsummering av hendelsen og hvordan de svarte på den i #admin kanalen. Her er et eksempel på hvordan en slik oppsummering kan se ut: - -``` -Suspendert: _@username_ -Reason(s): _Spamming, trolling_ -Evidence: _One eller flere lenker til den lovende melding(ene)_ -CoC: _Sent_ -``` - -- En rapport for å fjerne en suspensjon skal se ut: - -``` -Jeg har fjernet suspensjonen fra ` @username `. Jeg sendte dem Code of Conduct. De ble nettopp i dag innsett at de ble suspendert og beklaget på det de gjorde. -``` - -- Basert på lovgiverens svar vil moderatoren bestemme om den skal fjerne suspensjonen fra den forvendte kamperen. Hvis de virker respektfull og beklager, kan moderatoren fjerne suspensjonen. Når det gjelder politikk, vil moderatorer være høflige i denne prosessen, uansett hvor dårlig den falske utholdenheten kom. Hvis de ikke er respektfulle eller ikke villige til å godta CoC, bør suspensjonen følges med et forbud fra Discord-serveren. Bruk samme sammendrag som ovenfor, men erstatt "Suspendert:" med "Bannet:". - -3. **Hvordan utestengelse og/eller oppheve utestengelsen** - -- For å utestenge en person, høyreklikk på brukernavn/profilbilde og velg "Utesteng ". Du vil få muligheten til å slette de forrige meldingene deres - velg "Ikke slett noen", som meldingene bør fortsatt være til stede som en historisk post. -- Hvis du bestemmer deg for å forby noen, så betyr det at de er villige til å overholde våre etiske retningslinjer. Derfor bør det sjelden forekomme unbanning av en CamPal. Hvis likevel behovet oppstår, kan du gjøre det ved å klikke på servernavnet, velge "Server Innstillinger", velger du "Forbannelse", velger du brukeren du ønsker å utestenge, og du kan klikke "Revoke Ban". - -Discord Bans er global - du kan ikke utestenge en bruker fra en bestemt kanal, kun fra hele serveren. - -4. **Sletting av meldinger** Moderatorer har muligheten til å slette meldinger på Discord. De skal bare utøve denne evnen i fire svært spesifikke situasjoner: - -- Noen har postet et pornografisk eller grafisk voldelig bilde. -- Noen har postet en link eller kode som er ondsinnet i naturen og kan skade andre kamre som klikker på den. -- Noen har oversvømt chatten med mange spam-meldinger i så stor grad (vanligvis med bots) for å gjengi chat helt ubrukelig. -- Noen har postet annonse og / eller selvfremmende melding / bilde (sosiale medier). - -I alle andre situasjoner - også situasjoner der koden bryter - Moderatorer bør ikke slette meldingen ettersom disse er en viktig historisk journal. Når du sletter en melding, må du sørge for at du tar et skjermbilde av den først! Skjermbildet kan være logget på #mod-log kanalen, men for #aktivitetsloggen er det tilstrekkelig å si at beviset "ble fjernet på grunn av sensitivt innhold". Merk: Hvis meldingen inneholder materiale som ville være ulovlig å ta skjermbilde av, kopier meldingslenken i stedet - oppgi denne meldingslenken til @raisedadead for å videresende til Discord's Trust and Safety team. - -5. **Bruk ikke @everyone eller @here** Bruk ikke @everyone eller @here under noen omstendigheter! Hver enkelt person som snakker rommet vil få et varsel. I enkelte tilfeller er det titusener av mennesker. Hvis du vil at folk skal se en kunngjøring, kan du i stedet feste den til kanalen slik at alle kan lese den. - -6. **Ikke true til å utestenge eller suspendere** Hvis en kamper bryter adgangskoden, ikke true å forby eller suspendere dem, og aldri advare dem offentlig i det hele tatt. I stedet kan du snakke med dem privat, eller sende dem en suspensjon (per protokollen ovenfor). Ingen andre i denne kanalen må vite at du bannlyste / suspendert personen - kameraene kan se sammendraget i kanalen #aktivitetslogg hvis de vil holde følge med informasjonen deres. Hvis et brudd klart var utilsiktet, og ikke berettiget en suspensjon eller privat samtale, uten at det går som en advarsel at lovbruddet blir gjort kjent med sine handlinger. For eksempel: - -- Kampanjeinnlegg en kodevegg som ber om hjelp - - Moderator: @brukernavn Vennligst bruk Codepen eller Pastebin ved lagring av store mengder kode. - -- Eller hvis du virkelig må forklare hvorfor: - - Moderator: @brukernavn Vennligst bruk Codepen eller Pastebin ved lagring av store mengder kode, fordi det forstyrrer chatten for alle og kan anses å ha spamming i henhold til våre etiske retningslinjer. - -- Ved milde og utilsiktede brudd på atferdsreglene - - Moderator: Dette er en vennlig påminnelse om at alle skal følge atferdskoden: https://code-of-conduct.freecodecamp.org/ - -7. **Ikke modig over å være en moderator** Ikke se deg selv som over samfunnet. Du er samfunnet. Og fellesskapet har stolt på deg for å hjelpe til med å beskytte noe sjeldent som vi alle deler - en _velkomst_ plass for nye utviklere. Hvis du modige om å være moderator kan det hende at folk føler seg urolig rundt deg, på samme måte som folk kjenner seg uenkle rundt politiet, selv om de ikke gjør noe feil. Dette er bare menneskelig natur. - -8. **Ikke motsi andre moderatorer** Hvis du er uenig i handlingen til en moderator, snakke med dem i privat samtale eller ta det opp i #mod-chat kanalen. Aldri overstyr en utestengelse, og aldri motsier de andre moderatoren(e) offentlig I stedet må det diskuteres kjølig i mod-chat og overbevise moderatoren om at de selv burde omgjøre utestengelsen eller endre synspunkt. Husk: Vi er alle på samme lag. Vi ønsker å verne om rollen til moderatorer og vise en enhetlig front. - -9. **Snakk med andre moderatorer** Vi har bare et rom for moderatorer. Bruk det! Spør andre moderatorer om hjelp dersom du føler deg ukomfortabel med hvordan du skal håndtere en bestemt situasjon. Hvis du tror noe skal diskuteres, gjør det. Du er en del av teamet og vi setter pris på inngangen til alle teammedlemmene! Selv om du er fullstendig uenig i noe i disse retningslinjene eller i Code of Conduct! - -10. **Midlertidig inaktiv** Hvis du ikke vil være aktiv som en moderator i en stund på grunn av ferie, Sykdom eller annen grunn, sørg for å la de andre få vite i #mod-chat kanalen. Dette er slik at vi vet om vi kan telle på deg for å være regelmessig aktiv på serveren eller ikke. - -# Slik blir du moderator - -If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). Det er ingen snarveier til å bli moderator. - -Hvis du er godkjent, vil vi legge deg til i Moderatorteamet våre på [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTE] > **For GitHub:** Etter at du har blitt akseptert som en moderator, vil du motta en Github repository invitasjon. Du må gå over til [freeCodeCamp GitHub organisasjons invitasjon](https://github.com/orgs/freeCodeCamp/invitation) for å kunne akseptere invitasjonen. Dette kreves for at vi skal kunne gi deg skrivetilgang i noen av våre kodelagre. - -# Hvordan vil vi pensjonere inaktive moderatorer - -Vær oppmerksom på at vi ofte vil fjerne modifikasjoner som vi tror er inaktive. Når vi gjør dette, sender vi følgende melding: - -> Dette er en standard melding som varsler deg om Siden du nylig ikke har vært en aktiv moderator, fjerner vi deg fra moderatorteamet. Vi setter stor pris på din hjelp i fortiden. - -> Hvis du tror vi har gjort dette feil, eller så er du klar til å komme tilbake og bidra mer, bare svar på denne meldingen gir meg beskjed. - -# Slik fungerer bidragsrommet vårt - -Alle er velkommen i [Bidragsytere rom på vår Discord](https://discord.gg/KVUmVXA). Det er det angitte chatterommet for moderatorer og andre kamperer som på en hvilken som helst rekke bidra til samfunnet vår, inkludert gjennom studiegrupper. - -Vår antagelse er at bidragsytere vil lese alt i dette rommet som direkte nevner dem med `@username`. Alt annet er valgfritt. Men du kan også lese alt du poster der og interakt. - -# Håndtering av operatører - -Du kan opptre av organisasjoner som vil medvirke eller være sammen med freeCodeCamp på en eller annen måte. Når du innser at det er det de er etter, må du slutte å snakke med dem og be dem om å sende en e-post til quincy@freecodecamp.org. Han får med seg forslag som hele tiden og har best forutsetninger for å vurdere om et slikt forhold vil være verdt det for samfunnet vårt (og det sjelden der). - -# Håndtering av (mentale) helsehenvendelser - -Dere kan komme på tvers av situasjoner der brukerne søker medisinsk rådgivning eller arbeider med psykiske plager og søker støtte. I politikkens saker skal du ikke snakke privat om disse forholdene. Skulle situasjonen på et tidspunkt reflektere tilbake til fCC, vil vi ha samtalen(e) i posten. Gjør det klart at vi ikke er medisinske fagfolk og at du oppfordrer brukeren til å finne profesjonell hjelp. Så vanskelig som det noen ganger kan være, unngå å gi andre tips eller råd enn å peke brukeren i retning av profesjonell hjelp! - -Hvis dette skjer på Discord: Stopp brukeren. Dette er ikke for å straffe dem! Mistenke en bruker vil opprette en privat kanal som bare er tilgjengelig av brukeren og teamet. Det vil være gunstig for både bruker og fCC på flere måter: - -- Brukeren er garantert personvern -- Offentlig chat er ikke lenger forstyrret -- Andre gruppemedlemmer kan delta i, hvis du er ubehagelig hvis du tar deg selv - -> Å vente en bruker gir dem automatisk en melding om å lese vår etiske etiske veiledning. Pass på at du informerer brukeren om at du Suspenderte dem for å gi dem noe privatliv og at de ikke er straffet. Dette er veldig viktig! Vi ønsker helt enkelt å unngå å gi brukerne ideen om at de blir straffet for å nå ut til hjelp! - -Hvis du tror at brukeren er i stand til å rebli med i samfunnet, høyreklikk på privat kanal og kopier IDen. Legg til følgende melding i #mod-log: - -> Referansemedisinsk rådgivning: - -Etter dette kan du fjerne Suspensjonen fra brukeren slik du vanligvis gjør. - -Nyttige nettadresser: - -http://www.suicide.org/international-suicide-hotlines.html - -# Notat om fri tale - -Noen ganger kommer folk til å forsvare en offensiv eller incendiary som de sa som "gratis taler". - -Denne XKCD tegneserien oppsummerer de fleste samfunnenes tanker om ytringsfrihet. Så hvis noen forsvarer noe de sier at "gratis tale" føler seg fri til dem. - -
                - -Takk for at du leste dette, og takk for at du hjelper utviklersamfunnet! diff --git a/docs/i18n/Norwegian/flight-manuals/using-reply-templates.md b/docs/i18n/Norwegian/flight-manuals/using-reply-templates.md deleted file mode 100644 index 9d075a94ef..0000000000 --- a/docs/i18n/Norwegian/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Bruke svar maler - -Dette er noen av standardmalene du kan bruke når du gjennomgår pull forespørsler og diskuterer problemer. - -> Du kan lage din egen med GitHub's innebygde [**Lagrede svar**](https://github.com/settings/replies/) eller bruke de nedenfor. - -### Tusen takk - -```markdown -Takk for ditt bidrag til siden! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Tusen takk og takk - -> For å takke og oppmuntre førstegangs bidragsytere. - -```markdown -Hei @brukernavn. Gratulerer med din første trekkforespørsel (PR)! 🎉 - -Takk for ditt bidrag til siden! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Bygg feil - -```markdown -Hei @username - -Vi vil gjerne kunne slå sammen dine endringer, men det ser ut som det er en feil med Travis CI-bygget. ⚠️ - -Når du har løst disse problemene, kan vi gjennomgå PR-en din og slå dem sammen. 😊 - ---- - -> Du er velkommen til å referere til [Style guide for å skrive artikler](https://github. om/freeCodeCamp/freeCodeCamp#article-title) for dette repo på formatering av en artikkel riktig slik at din Travis CI bygger passs. -> -> Dog er det god praksis på GitHub å skrive en kort beskrivelse av dine endringer når du oppretter en PR. 📝 -``` - -### Synkroniserer med Fork - -> Hvis PR ikke er oppdatert med `master` grenen. - -``````markdown -Hei @username - -Vi vil gjerne kunne slå sammen dine endringer, men det ser ut som det er en feil med Travis CI-bygget. ⚠️ - -```bash -Error: ENOTDIR: ikke en mappe, åpne 'src/pages/java/data-abstraction/index.md' -`````` - -Denne bestemte feilen ble ikke forårsaket av filen din, men var den gamle feilen som skyldtes sammenslåing av feil kode til `master` grenen. Det har siden vært løst. - -For å bestå bygget må du synkronisere de siste endringene fra `master` grenen av `freeCodeCamp` repo. - -Med kommandolinjen, kan du gjøre dette med tre enkle trinn: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch oppstrøms - -git pull upstream master -``` - -Hvis du bruker en GUI, kan du rett og slett `Legg til en ny fjernkontroll...` og bruke linken `git://github.com/freeCodeCamp/freeCodeCamp.git` fra over. - -Når du har synkronisert gaffelen og send bygget, vil vi være i stand til å gjennomgå PR-en din og flette den. 😊 - ---- - -> Føler deg fri til å referere til [synkronisere et Fork](https://help.github.com/articles/syncing-a-fork/) artikkel på GitHub for mer innsikt om hvordan man kan holde gaffel oppdatert med oppstrøms repository. 🔄 -> -> Dessuten er det god praksis på GitHub å skrive en kort beskrivelse av dine endringer når du lager en PR. 📝 -`````` - -### Slå sammen konflikter - -> Når PR har sammenslått konflikter som må løses.1 - -```markdown -Hei @brukernavn - -Vi vil gjerne kunne slå sammen dine endringer, men det ser ut som du har noen sammenslåingskonflikter. ⚠️ - -Når du løser disse konfliktene, vil vi kunne gjennomgå din PR og slå sammen med den. 😊 - ---- - -> Hvis du ikke er kjent med den sammenslåtte konfliktprosessen, føler deg fri til å se over GitHub's guide på ["Resolving a merge conflict"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). :magnifying_glass_tilted_venstre: -> -> Videre er det god praksis på GitHub for å skrive en kort beskrivelse av dine endringer når du lager en PR. 📝 -`````` -1 Hvis en førstegangs bidragsyter har en flettekonflikt vil vedlikeholdere løse konflikten for dem. - -### Duplicate - -> Når PR er gjentakende eller duplikat. - -```markdown -Hei @username - -Det ser ut til at lignende endringer allerede er akseptert tidligere for denne artikkelen du redigerer, beklager det. 😓 - -Hvis du føler at du har mer å legge til, kan du gjerne åpne en ny PR. - -Takk igjen! 😊 - ---- - -> Hvis du har noen spørsmål, kan du kontakte deg gjennom [Gitter](https://gitter.im/FreeCodeCamp/Contributors) eller ved å kommentere nedenfor. 💬 -``` - -### Om du lukker ugyldige pull forespørsler - -> Når PR er ugyldig. - -```markdown -Hei @username - -Du har ikke lagt til noe innhold, vi vil lukke denne PR, og merke den som `ugyldig`. 😓 - -Du kan gjerne åpne en annen PR-tanker! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Norwegian/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Norwegian/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index a83b8f94e0..0000000000 --- a/docs/i18n/Norwegian/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,481 +0,0 @@ -# Flight Manual for working on Virtual Machines - -Som medlem av staben eller dev-gruppen, du har kanskje fått tilgang til våre skytjenesteleverandører som Azure, Digital Ocean, osv. - -Her er noen praktiske kommandoer du kan bruke til å arbeide med de virtuelle maskinene (VM), for eksempel å utføre vedlikeholdsoppdateringer eller gjennomføre generelle boliger. - -# Get a list of the VMs - -> [!MERK] Mens du allerede har SSH tilgang til VM-ene, det alene vil ikke la deg liste VMs med mindre du har fått tilgang til skyportalene også. - -## Azure - -Installer Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Installer Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Autentisering og kontekst bryter: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Kontroller at VM er fullstendig bestemt, og at det ikke er etter installasjon trinn er kjørt. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -NGINX konfigurasjonen er tilgjengelig på [dette kodelageret](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Få Skyflare-opprinnelsessertifikatene fra sikker lagring og installer på nødvendige steder. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Oppdaterer Instanser (vedlikehold) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

                https://amplify.nginx.com

                -## Updating Instances (Maintenance) - -Konfigurasjonsendringer i våre NGINX-instanser opprettholdes på GitHub, disse bør distribueres i hver enkelt forekomst slik: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test og last konfigurasjonen på nytt [med signaler](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Oppdaterer Instanser (vedlikehold) - -```console -## Logging og overvåking - -```console -pm2 logger -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start plassholderinstanser for den nettklienten, disse vil bli oppdatert med artifakter fra Azurepipleten. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Oppdaterer Instanser (vedlikehold) - -```console -## Logging og overvåking - -```console -pm2 logger -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Norwegian/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Norwegian/how-to-catch-outgoing-emails-locally.md index ae08e32cfa..397ea3382a 100644 --- a/docs/i18n/Norwegian/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Norwegian/how-to-catch-outgoing-emails-locally.md @@ -1,75 +1,75 @@ -> **Note:** Dette er et **valgfritt** steg og kreves bare når du arbeider med e-postarbeidsflyter +> **Note:** This is an **optional** step and is required only when working with email workflows -## Introduksjon +## Introduction -Noen email workflows, som å oppdatere en brukers e-post, krever at back-end api-server sender utgående e-post. et alternativ til å bruke en e-postleverandør for å sende faktiske e-postmeldinger, Mailhog er et utviklerverktøy for å teste e-postmeldinger som vil bli sendt av din freeCodeCamp instance. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Installerer MailHog +## Installing MailHog -MailHog kan installeres på macOS, Windows og Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Introduksjon](#introduction) -- [Installerer MailHog](#installing-mailhog) - - [Installerer MailHog på macOS](#installing-mailhog-on-macos) - - [Installerer MailHog på Windows](#installing-mailhog-on-windows) - - [Installere MailHog på Linux](#installing-mailhog-on-linux) -- [Bruker MailHog](#using-mailhog) -- [Nyttige lenker](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Installerer MailHog på macOS +### Installing MailHog on macOS -Installer MailHog på macOS med [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash -brygg å installere mailhog -bryggetjenester starter mailhog +brew install mailhog +brew services start mailhog ``` -kommandoene over vil starte en mailhog-tjeneste i bakgrunnen. +The above commands will start a mailhog service in the background. -Når installasjonen er ferdig, kan du starte [med MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Installerer MailHog på Windows +### Installing MailHog on Windows -Last ned den nyeste versjonen av MailHog fra [MailHogs offisielle depot](https://github.com/mailhog/MailHog/releases). Finn og klikk på lenken for din Windows-versjon (32 eller 64 bit) og en .exe-fil vil bli lastet ned til datamaskinen din. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Når nedlastingen er ferdig, klikk for å åpne filen. En Windows-brannmurmelding kan dukke opp, og be om tilgangstillatelse for MailHog. En standard Windows-kommandolinjeforespørsel vil åpne hvor MailHog vil kjøre når brannmur tilgang er gitt. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Lukk MailHog ved å lukke vinduet som ledetekst for kommandoer. For å starte MailHog igjen, klikk på MailHog kjørbare (. xe) filen som ble lastet ned innledningsvis, det er ikke nødvendig å laste ned en ny installasjonsfil MailHog. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Start [med MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Installere MailHog på Linux +### Installing MailHog on Linux -Først, installer [Go](https://golang.org). +First, install [Go](https://golang.org). -Kjør følgende kommandoer for å installere GO på Debian-baserte systemer som Ubuntu og Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Kjør følgende kommandoer for å installere GO på RPM-baserte systemer som CentOS, Fedora, Red Hat Linux, etc. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Alternativt kan du kjøre følgende kommandoer for å installere GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Nå kan du angi stien for å gå med følgende kommandoer. +Now set the path for Go with the following commands. ```bash -echo "export GOPATH=$HOME/go" >> ~/.profil -echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profil -kilde ~/.profil +echo "export GOPATH=$HOME/go" >> ~/.profile +echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile +source ~/.profile ``` -Til slutt, skriv inn kommandoene nedenfor for å installere og kjøre MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Start [med MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Bruker MailHog +## Using MailHog -Åpne en ny nettleserfane eller et vindu og naviger til [http://localhost:8025](http://localhost:8025) for å åpne MailHog innboksen når MailHog installasjonen har fullført og MailHog kjører. Innboksen vil se ut som om skjermen ble skutt nedenfor. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![Skjermbilde 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -E-poster sendt av din freeCodeCamp installasjon vil vises som nedenfor +Emails sent by your freeCodeCamp installation will appear as below -![Skjermbilde 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -To faner som lar deg vise enten ren tekst eller kildekodeinnhold vil være tilgjengelig når du åpner en gitt e-post. Kontroller at ren tekst-fanen er valgt som nedenfor. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![Skjermbilde 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Alle koblinger i e-posten bør være klikkbare og løse til sin URL. +All links in the email should be clickable and resolve to their URL. -## Nyttige lenker +## Useful Links -- Sjekk ut [MailHog](https://github.com/mailhog/MailHog) arkivet for ytterligere informasjon relatert til MailHog. Ytterligere informasjon er også tilgjengelig om egendefinerte MailHog konfigurasjoner. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Norwegian/how-to-help-with-video-challenges.md b/docs/i18n/Norwegian/how-to-help-with-video-challenges.md index 0c2aee21fb..0724aaef02 100644 --- a/docs/i18n/Norwegian/how-to-help-with-video-challenges.md +++ b/docs/i18n/Norwegian/how-to-help-with-video-challenges.md @@ -1,202 +1,199 @@ -# Hvordan hjelpe til med videoutfordringer +# How to help with video challenges -Videoutfordringer er en ny type utfordring i læreplanverket CodeCamp. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -En videoutfordring er en liten seksjon av et videokurs med full lengde på et bestemt tema. En video utfordring side setter inn en YouTube-video. Hver utfordring side har ett enkelt spørsmål relatert til video. En bruker må svare korrekt på spørsmålet før du kan flytte på den neste video utfordringen i kurset. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -Video-utfordringssidene er laget av medlemmer av det freeCodeCamp teamet. YouTube-videoer lastes også opp av medlemmer i freeCodeCamp teamet. Mange av videoutfordringene har ennå ikke spørsmål knyttet til seg. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Du kan hjelpe ved å opprette flere valgspørsmål relatert til videoseksjoner og legge til spørsmål i markeringsfilene for videoutfordringene. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Utfordring Mal +## Challenge Template -Nedenfor ser en mal av hvordan utfordringene markørfilene ser ut. +Below is a template of what the challenge markdown files look like. ````md --- -id: Unik identifikator (alfanumerisk, MongoDB_id) -tittel: Utfordringstittel -utfordringstype: 11 -videoId: 'YouTube videoId for video utfordring' +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 11 +videoId: 'YouTube videoId for video challenge' --- -## Beskrivelse +## Description
                -En valgfri beskrivelse med nyttig informasjon relatert til videoen. +An optional description with helpful information related to the video.
                -## Tester +## Tests
                ```yml -spørsmål: - tekst: 'Spørsmål' - svar: - - 'Svar på ett' - - 'Svar på to' - - 'Svar på tre' - løsning: 3 +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
                ```` -## Opprette spørsmål for videoutfordringer +## Creating questions for video challenges -### Få tilgang til video-problemmarkørfilene +### Access the video challenge markdown files -Du kan finne markdown filene for videoutfordringer på følgende steder i pensum : +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Data Analysis med Python Course](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) -- [TensorFlow 2.0 Course](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) -- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/freeCodeCamp/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) -- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/freeCodeCamp/curriculum/challenges/english/11-machine-learning-learning-python/howal-net-work-work +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) +- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -alternativinnstillinger +Pick a challenge markdown file from the options above. +### Skim through the video associated with the challenge and create a mutiple choice question +First, find the videoId. -### Skim gjennom videoen knyttet til utfordringen og lag et flervalgsspørsmål - -For det første, finn videoId. - -For eksempel i følgende kode fra overskriften av en video utfordring markdown fil, er videoId "nVAaxZ34khk". På GitHub, skal informasjonen være satt ut i et tabellformat. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d tittel: Data Analysis Example A challengeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -Deretter kan du få tilgang til YouTube-videoen med den video-filen. Nettadressen til videoen vil være: -https://www.youtube. om/watch?v=[videoId] (legg til videoId til URL uten hakeparentes) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -i eksemplet ovenfor er url https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim YouTube video med den videoId og tenk på et flere spørsmål basert på innholdet i videoen. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Legg spørsmålet til i markdown filen +### Add the question to the markdown file -Du kan legge til spørsmålet lokalt eller direkte kaste GitHub-grensesnittet. For å legge til spørsmålet lokalt, må du [sette opp freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). Du finner også filen på GitHub og klikk på redigeringsknappen for å legge til spørsmålet rett i nettleseren. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Dersom et spørsmål ikke har blitt lagt til en bestemt videoutfordring, det vil ha følgende standardspørsmål: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -spørsmål: - tekst: ⌘ - Spørsmålet - svar: - - class=" - ett - - ◊ - to - - norden.org - tre - løsning: 3 +question: + text: | + Question + answers: + - | + one + - | + two + - | + three + solution: 3 ``` -Oppdater ordet "Spørsmål" med ditt spørsmål. Oppdater "én", "to" og "tre" med mulige svar. Sørg for å oppdatere fasnummeret på løsningen som svarer er korrekt. Du kan legge til flere mulige svar med samme format. Spørsmålet og svarene kan være omgitt med sitatmerke. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### Bruk markdown til å formatere spørsmålet ditt +#### Use markdown to format your question -Teksten i det aktuelle spørsmålet er analysert som merket. Den enkleste måten å sørge for at det er korrekt formatert på, er å starte spørsmålet med `tekst: ∙`, slik: +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -spørsmål: - tekst: Ques - Spørsmål +question: + text: | + Question ``` -Deretter må du forsikre deg om at spørsmålet er på en ny linje og strek med ett nivå mer enn `tekst: ########`. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -Den samme tilnærmingen kan benyttes for svarene, slik at hele spørsmålet blir +The same approach can be used for the answers, so the entire question becomes ```yml -spørsmål: - tekst: Conoco - Spørsmål - svar: - - - - MedDRA - Første svar - - ⌘ - Andre - - class=" +question: + text: | + Question + answers: + - | + First answer + - | + Second + - | Third - løsning: 2 + solution: 2 ``` -Pass på at hvert svar er akseptabelt, men det er bare ett riktig svar. +Make sure each answer is plausible but there is only one correct answer. -#### Bruk av HTML +#### Use of HTML -Spørsmål og svar kan inneholde visse HTML-koder som `
                ` for en ny linje. HTML-koder skal brukes stille, når spørsmål ikke kan uttrykkes uten dem. +Questions and answers can contain certain HTML tags like `
                ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Eksempler på spørsmål +### Question examples -#### Eksempler uten HTML +#### Examples without HTML ````yml -spørsmål: - tekst: + - Hva logger denne JavaScript-koden til konsollen? +question: + text: | + What does this JavaScript code log to the console? ```js console.log('hello world'); ```` - Velg et svar! - svar: - - Č hallo *verden* - - λ **Hei,** verden - - ######## hallo verden løsning: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -spørsmål: - tekst: ″ - Det som vil skrive ut etter å ha kjørt denne koden: +question: + text: | + What will print out after running this code: ```py - bredde = 15 - høyde = 12. - Trykk(høyde/3) + width = 15 + height = 12.0 + print(height/3) ```` - svar: + answers: - | 39 - | 4 - - iNatur 4.0 - - iNatur 5.0 - - ALIM 5 løsning: 3 + - | 4.0 + - | 5.0 + - | 5 solution: 3 ```` -#### Eksempel med HTML +#### Example with HTML ```yml -spørsmål: - tekst: ε - Hva vil skrive ut etter å ha kjørt denne koden: -
                bredde = 15
                høyde = 12.
                print(høyde/3)
                - svar: - - norden.org +question: + text: | + What will print out after running this code: +
                width = 15
                height = 12.0
                print(height/3)
                + answers: + - | 39 - - Conoco + - | 4 - - Conoco - 4. - - + - 5. - - ″ + - | + 4.0 + - | + 5.0 + - | 5 - løsning: 3 + solution: 3 ```` -Det siste eksempelet viser at HTML kan brukes, men at det ikke er så lesbar som versjonen uten det. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -For flere eksempler, kan du se på markdown-filene for følgende videokurs. Alle utfordringene har allerede spørsmål: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Åpne pull-forespørsel +## Open a pull request -Etter å ha opprettet en eller flere spørsmål, kan du utføre endringene i en ny gren og [åpne en trekkforespørsel](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Norwegian/how-to-open-a-pull-request.md b/docs/i18n/Norwegian/how-to-open-a-pull-request.md index 418895e9d4..2729cd6237 100644 --- a/docs/i18n/Norwegian/how-to-open-a-pull-request.md +++ b/docs/i18n/Norwegian/how-to-open-a-pull-request.md @@ -1,179 +1,179 @@ -# Hvordan åpne en trekkforespørsel (PR) +# How to open a Pull Request (PR) -En pull-forespørsel lar deg sende endringer fra gaffelen på GitHub til freeCodeCamp.org's hoveddepo. Når du er ferdig med å gjøre endringer i koden, eller å kodeutfordringer bør du følge disse retningslinjene for å sende PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Forbered en god PR-tittel +## Prepare a good PR title -Vi anbefaler å bruke [konvensjonell tittel og meldinger](https://www.conventionalcommits.org/) til commits og pull forespørsel. Konvensjonen har følgende format: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([valgfritt omfang(er)]): ` +> `([optional scope(s)]): ` > -> For eksempel: +> For example: > -> `fix(learn): tester for hva du gjør... mens loop utfordring` +> `fix(learn): tests for the do...while loop challenge` -Når du åpner trekkforespørsel(PR), kan du bruke nedenstående til å bestemme typen, omfanget (valgfritt) og beskrivelsen. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. **Type:** -| Type: | Når skal du velge | -|:---------- |:----------------------------------------------------------------------------------- | -| fiks | Endret eller oppdatert/forbedret funksjonalitet, tester, fungerer i en leksjon osv. | -| feiter | Bare hvis du legger til ny funksjonalitet, prøvinger osv. | -| jordisk | Endringer som ikke er relatert til kode, tester eller vertikalt av en leksjon. | -| dokumenter | Endringer i mappen `/docs` eller de medvirkende retningslinjene, osv. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Omfang:** +**Scope:** -Du kan velge et omfang fra [denne listen med etiketter](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Beskrivelse:** +**Description:** -Hold den kort (mindre enn 30 tegn) og enkel, du kan legge til mer informasjon i PR-beskrivelsen og kommentarene. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Noen eksempler på gode PR-titler vil være: +Some examples of good PRs titles would be: -- `(a11y): forbedret kontrast i søkelinjen` -- `funksjon: legg til flere tester til html og css utfordringer` -- `fix(api, klient): hindre CORS-feil ved innsending` -- `docs(i18n): Kinesisk oversettelse av lokal oppsett` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Foreslå en trekkforespørsel +## Proposing a Pull Request -1. Når redigeringene er brukt, vil du bli bedt om å lage en pull-forespørsel på din forets GitHub side. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Bilde - Sammenlign pull request ledetekst på GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Som standard skal alle trekkforespørsler ligge mot freeCodeCamp hoved repo, `master` grenen. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Kontroller at Base Fork er satt til freeCodeCamp/freeCodeCamp når du øker pull -forespørselen. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Bilde - Komparerer meldinger når du foretar en pull -forespørsel](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Send inn pull request fra din gren til freeCodeCamp's `master` grener. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. I kroppen din av PR inkluderer du en mer detaljert oppsummering av endringene du har gjort og hvorfor. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Du får en forespørsel om å sende en mal for forespørsel. Dette er en sjekkliste som du burde ha fulgt opp før forespørselen om trekking åpnes. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Fyll inn detaljene etter du ser det. Disse opplysningene vil bli vurdert og anmelderne vil avgjøre om din pull-forespørsel er akseptert eller ikke. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Hvis PR er ment å adressere et eksisterende GitHub Issue, på slutten av din PRs beskrivelsesorgan, bruk nøkkelordet _lukker_ med utstedelsesnummeret [automatisk lukket det problemet dersom PR er akseptert og slått sammen](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Eksempel: `Lukker #123` vil lukke problemet 123 + > Example: `Closes #123` will close issue 123 -5. Angi om du har testet en lokal kopi av nettstedet eller ikke. +5. Indicate if you have tested on a local copy of the site or not. - Dette er veldig viktig når det gjøres endringer som ikke bare endrer seg til tekstinnhold, for eksempel dokumentasjon eller en utfordringstekst. Eksempler på endringer som krever lokal testing, omfatter JavaScript, CSS, eller HTML-format, som kan endre funksjonaliteten eller utformingen av en side. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Tilbakemelding på pull forespørsler +## Feedback on pull requests -> Gratulerer! :tada: for å gjøre en PR og takke mye for å bidra med tid. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Våre moderatorer vil nå ta en titt og gi deg en tilbakemelding. Vær tålmodig med andre moderatorer og respekterer sin tid. Alle trekkforespørsler gjennomgås etter dette kurset. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Hvis du trenger hjelp vennligst diskuter i [bidragsytere chat room](https://gitter.im/FreeCodeCamp/Contributors), er vi mer enn glad for å hjelpe deg. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Hvis du skal bidra med mer trekkforespørsler, Vi anbefaler at du leser [om du foretar endringer og synkroniserer](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) retningslinjer for å unngå å måtte slette din gaffel. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Konflikter på en pull-forespørsel +## Conflicts on a pull request -Konflikter kan oppstå fordi mange bidragsytere arbeider i arkivet, og endringer kan ødelegge PRen din, som venter en gjennomgang og fletting. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Mer ofte enn det du ikke trenger en ombase, fordi vi knuser alle forpliktelser, Men hvis det blir bedt om en rebase her, er det hva du skal gjøre. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### For vanlige feilrettinger og funksjoner +### For usual bug fixes and features -Når du jobber med vanlige feil og funksjoner på vår utviklingsgren `master`kan du gjøre en enkel rebase: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Re-baser din lokale kopi: +1. Rebase your local copy: ```console git checkout - git trekk --rebase oppstrøms master + git pull --rebase upstream master ``` -2. Løs eventuelle konflikter og legg til eller rediger programmer +2. Resolve any conflicts and add / edit commits ```console - # Enten - git legg til . + # Either + git add . git commit -m "chore: resolve conflicts" - # Eller - git legg til . + # Or + git add . git commit --amend --no-edit ``` -3. Trykk endringene dine tilbake i PR. +3. Push back your changes to the PR ```console - git skyving - kraft opprinnelse + git push --force origin ``` -### For kommende læreplaner og funksjoner +### For upcoming curriculum and features -Når du arbeider med funksjoner for vår kommende læreplan `nest-*` filialer, har du en kirsebærplukk: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Sørg for at oppstrøms vises i synkronisering med lokalt: +1. Make sure your upstream comes in sync with your local: ```console git checkout master - git hent --all --prune - git checkout next-python-prosjekter - git reset --hard upstream/next-python-prosjekter + git fetch --all --prune + git checkout next-python-projects + git reset --hard upstream/next-python-projects ``` -2. Ta sikkerhetskopi +2. Take backup - a. Slett enten den lokale grenen din etter å ha tatt en sikkerhetskopi (hvis du fortsatt har den lokalt): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout - # eksempel: - # git checkout funksjon/add-numpy-video-question + # example: + # git checkout feat/add-numpy-video-question git checkout -b - # eksempel: - # git checkout -b backup-feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - b. Eller bare en sikkerhetskopi av din pr gren (hvis du ikke har den locally): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - eksempel: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Start av med et rent skife: +4. Start off with a clean slate: ```console - git checkout -b next-python-prosjekter + git checkout -b next-python-projects git cherry-pick ``` -5. Løs eventuelle konflikter og opprydning, installeringstester +5. Resolve any conflicts, and cleanup, install run tests ```console - npm kjøre clean + npm run clean npm ci npm run test:curriculum --superblock= # example: - # npm run test:curriculum --superblock=python-for-alle + # npm run test:curriculum --superblock=python-for-everybody ``` -6. Hvis alt ser bra ut til å trykke tilbake til PR +6. If everything looks good push back to the PR ```console - git skyving - kraft opprinnelse + git push --force origin ``` diff --git a/docs/i18n/Norwegian/how-to-setup-freecodecamp-locally.md b/docs/i18n/Norwegian/how-to-setup-freecodecamp-locally.md index d62ae58465..619db733cf 100644 --- a/docs/i18n/Norwegian/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Norwegian/how-to-setup-freecodecamp-locally.md @@ -1,326 +1,326 @@ -Følg disse retningslinjene for å sette opp freeCodeCamp lokalt i systemet. Dette anbefales sterkt hvis du ønsker å bidra regelmessig. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For noen av bidraget arbeidsstrømmene må du ha lokal freeCodeCamp. For eksempel kan man se kodeutfordringer eller feil i feilsøking og fikse i kodebasen. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> Hvis du ikke er interessert i å sette opp freeCodeCamp lokalt vurderer bruk av Gitpod, et gratis online dev miljø. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Åpne i Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Starter et utvikler-til-kode utviklermiljø i nettleseren din.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Forbered din lokale maskin +### How to prepare your local machine -Start ved å installere en forutsetning for programvare til operativsystemet. +Start by installing the prerequisite software for your operating system. -Vi støtter primært utviklingen på **\*nix** systemer. Våre ansatte og samfunnshjelper jobber regelmessig med denne kodebasen med verktøy installert på Ubuntu og macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Vi støtter også Windows 10 via WSL2, som du kan forberede ved å [lese denne veiledningen](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Noen medlemmer utvikler også på Windows 10 natively med Git for Windows (Git Bash) og andre verktøy installert i Windows. Vi har ikke offisiell støtte for et slikt oppsett akkurat nå, anbefaler vi at du bruker WSL2 istedet. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Forutsetninger:** +**Prerequisites:** -| Forutsetninger | Versjon | Notater | -| ------------------------------------------------------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12,x` | [LTS tidsplan](https://github.com/nodejs/Release#release-schedule) | -| npm (kommer sammen med Node) | `6,x` | Har vi ikke LTS utgivelser, bruker vi versjonen tilknyttet Node LTS | -| [MongoDB samfunnstjener](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Utgivelsesnotater](https://docs.mongodb.com/manual/release-notes/), Merk: Vi er for tiden på `3.6`, en [oppgradering er planlagt](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> Hvis du har en annen versjon, vennligst installer anbefalt versjon. Vi kan bare støtte installeringsproblemer for anbefalte versjoner. Se [feilsøking](#troubleshooting) for detaljer. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Hvis Node.js allerede er installert på maskinen din, kjør følgende kommandoer for å validere versjonene: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console node -v npm -v ``` -> Vi anbefaler sterkt oppdatering til de nyeste stabile utgivelsene av programvaren oppført ovenfor, også kjent som langtidsstøtte (LTS) utgavene. +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Når du har installert de nødvendige forutsetningene, må du forberede utviklingsmiljøet ditt. Dette er vanlig for mange utviklingsarbeidsflyter, og du trenger bare å gjøre dette én gang. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Følg disse trinnene for å gjøre ditt utviklingsmiljø klar:** +**Follow these steps to get your development environment ready:** -1. Installer [Git](https://git-scm.com/) eller din favoritt Git klient, hvis du ikke har gjort det allerede. Oppdatering til den nyeste versjonen; versjonen som kom samlet med ditt OS kan være utdatert. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Valgfri, men anbefales) [Sett opp en SSH nøkkel](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Installer en kodeeditor til ditt valg. +3. Install a code editor of your choice. - Vi anbefaler på det sterkeste å bruke [Visual Studio Code](https://code.visualstudio.com/) eller [Atom](https://atom.io/). Disse er gode, gratis og åpen kildekodeeditorer. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Sett opp maleri for din kode editor. +4. Set up linting for your code editor. - Du burde ha [ESLint kjører i redigeringsprogrammet](http://eslint.org/docs/user-guide/integrations.html), og det vil markere noe som ikke samsvarer med [freeCodeCamp's JavaScript-stil Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!TIP] Vennligst ikke ignorer noen feil fra valget. De er ment å **hjelpe** deg og sikre en ren og enkel kodebase. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Gaffes lageret på GitHub +## Fork the repository on GitHub -[Tømmer](https://help.github.com/articles/about-forks/) er et steg hvor du får din egen kopi av freeCodeCamp's hoveddepot (a.k.a _repo_) på GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Dette er helt nødvendig, siden du kan arbeide med din egen kopi av freeCodeCamp på GitHub, eller å laste ned (klone) arkivet ditt for å fungere lokalt. Senere vil du kunne be om endringer som skal trekkes inn i hovedarkivet fra gaffelen din via en pull-forespørsel (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] Hoveddepoet `https://github.com/freeCodeCamp/freeCodeCamp` omtales ofte som `oppstrøms` reposet. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Din gaffel hos `https://github.com/YOUR_USER_NAME/freeCodeCamp` blir ofte referert til som `opprinnelse` arkivet. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Følg disse trinnene for å kjøre i `https://github.com/freeCodeCamp/freeCodeCamp` repository:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Gå til GitHub-mappen på freeCodeCamp : +1. Go to the freeCodeCamp repository on GitHub: -2. Klikk på "Fork" knappen øverst i høyre hjørne av grensesnittet ([Flere detaljer her](https://help.github.com/articles/fork-a-repo/) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Etter at arkivet er fort, vil du bli tatt til din kopi av det freeCodeCamp depotet på `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
                - Hvordan du fork freeCodeCamp på GitHub (skjermbilde) + How to fork freeCodeCamp on GitHub (screenshot)
                - Hvordan du fork freeCodeCamp på GitHub + How to fork freeCodeCamp on GitHub
                -## Klon din gaffel fra GitHub +## Clone your fork from GitHub -[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that either owned by you or by someone else. I ditt tilfelle, er den eksterne plasseringen din `fork` of freeCodeCamp's repository som skal være tilgjengelig på `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Kjør disse kommandoene på din lokale maskin: +Run these commands on your local machine: -1. Åpne en terminal / Ledetekst / Shell i prosjektmappen +1. Open a Terminal / Command Prompt / Shell in your projects directory - _dvs.: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. Utløste din forgrening av freeCodeCamp, erstatter `YOUR_USER_NAME` med ditt GitHub brukernavn +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Dette vil laste ned hele gratis-Camp depotet til din prosjektkatalog. +This will download the entire freeCodeCamp repository to your projects directory. -Merk: `--depth=1` skaper en grunt klone av gaffelen, med bare den siste historikken/kommandoen. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Sett opp synkronisering fra overordnet +## Set up syncing from parent -Nå som du har lastet ned en kopi av gaiden, må du sette opp en `oppstrøms` ekstern til foreldrearkivet. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Som nevnt tidligere](#fork-the-repository-on-github)blir hovedoppbevaringsstedet referert `oppstrøms` arkivet. Din gaffel referert til som `opprinnelse` repository. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Du trenger en referanse fra din lokale klone til `upstream` repository i tillegg til `origin` repository. Dette er slik at du kan synkronisere endringer fra hovedarkivet uten at det er krav om å føre og klone flere ganger. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Endre mappe til ny freeCodeCamp mappe: +1. Change directory to the new freeCodeCamp directory: ```console cd freeCodeCamp ``` -2. Legg til en ekstern referanse til hovedgratisCamp depot: +2. Add a remote reference to the main freeCodeCamp repository: ```console git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Sørg for at konfigurasjonen ser riktig ut: +3. Ensure the configuration looks correct: ```console - git fjern-v + git remote -v ``` - Resultatet skal se ut som nedenfor: + The output should look something like below: ```console - opprinnelse https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - opprinnelse https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - oppstrøms https://github.com/CodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Løpende freeCodeCamp lokalt +## Running freeCodeCamp locally -Nå som du har en lokal kopi av freeCodeCamp, kan du følge disse instruksjonene for å kjøre den lokalt. Dette vil tillate deg å: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Forhåndsvisning til sider ettersom de vil dukke opp på læringsplattformen. -- Arbeid med UI relaterte problemer og forbedringer. -- Feilsøk og løse problemer med programserverne og klientappene. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Hvis du kjører inn i problemer, må du først foreta et web-søk etter problemet ditt og se om det allerede er besvart. Dersom du ikke kan finne en løsning, Vennligst søk på våre [GitHub problem](https://github.com/freeCodeCamp/freeCodeCamp/issues) side for en løsning og rapporter problemet hvis det ikke er rapportert enda. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -Som alltid, føler deg fri til å hoppe til våre [Bidragsytere chatrom på Gitter](https://gitter.im/FreeCodeCamp/Contributors) eller [vår Discord-server](https://discord.gg/pFspAhS), for raske spørringer. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> Du kan hoppe over kjørende freeCodeCamp lokalt hvis du bare redigerer filer. For eksempel kan du utføre en `rebase`, eller løse `sammenslåing` konflikter. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Du kan alltid returnere til denne delen av instruksene senere. Du bør bare **** hoppe over dette trinnet hvis du ikke trenger å kjøre appene på maskinen din. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Hopp over til endringer](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Konfigurere avhengigheter +### Configuring dependencies -#### Trinn 1: Sette opp miljøvariabelfilen +#### Step 1: Set up the environment variable file -Standard API nøkler og miljø variabler er lagret i filen `sample.env`. Denne filen må kopieres til en ny fil med navn `.env` som er tilgjengelig dynamisk i installasjonstrinnet. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Lag en kopi av "samle" og gi det navnet ".env". -# Fyll det med de nødvendige API-nøklene og hemmelighetene: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp sample. nv .env +cp sample.env .env # Windows -kopier eksempel.env .env +copy sample.env .env ``` -Nøklene i `.env` filen er _ikke_ nødvendig for å bli endret for å kjøre programmet lokalt. Du kan la standardverdiene som er kopiert fra `eksempel.env` som er fjernet. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> Husk hvis du vil bruke tjenester som Auth0 eller Algolia, Du må kjøpe dine egne API-nøkler for de tjenestene og redigere postene slik i `. nv` fil. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Trinn 2: Installere avhengigheter +#### Step 2: Install dependencies -Dette trinnet installeres de nødvendige avhengighetene for at applikasjonen skal kunne kjøre: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Steg 3: Start MongoDB og hovednøkkel databasen +#### Step 3: Start MongoDB and seed the database -Før du kan kjøre programmet lokalt, må du starte MongoDB-tjenesten. +Before you can run the application locally, you will need to start the MongoDB service. -> [!NOTE] Med mindre du har MongoDB kjørt i et oppsett annet enn standard, URL-adressen lagret som `MONGOHQ_URL` i `. nv` filen skal fungere som det er bra. Hvis du bruker en egendefinert konfigurasjon, endre denne verdien etter behov. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Start MongoDB serveren i en separat terminal: +Start the MongoDB server in a separate terminal: -- På macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- På Windows, må du angi full bane til `mongod` binærkode +- On Windows, you must specify the full path to the `mongod` binary ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Sørg for å erstatte `3.6` med den versjonen du har installert + Make sure to replace `3.6` with the version you have installed -> [!TIP] Du kan unngå å måtte starte MongoDB hver gang ved å installere den som bakgrunnstjeneste. Du kan [lære mer om det i sin dokumentasjon for ditt OS](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -La oss lage en plass til databasen. I dette trinnet kjører vi kommandoen nedenfor som fyller MongoDB-serveren med noen innledende datasett som er påkrevd av tjenestene. Blant annet er det noen få ordninger. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -npm kjør seed +npm run seed ``` -#### Trinn 4: Start freeCodeCamp klientprogrammet og API serveren +#### Step 4: Start the freeCodeCamp client application and API server -Du kan nå starte API serveren og klientprogrammene. +You can now start up the API server and the client applications. ```console -npm løp utvikleren +npm run develop ``` -Denne ene kommandoen vil sette i gang alle tjenestene, inkludert API-serveren og klientappene som du vil jobbe med. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!NOTE] Når du er klar, åpne en nettleser og **gå til **. Hvis appen lastes inn, gratulerer - du er klar! Du har nå en kopi av freeCodeCams hele læringsplattform som kjører på din lokale maskin. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] API serveren serverer APIer på `http://localhost:3000`. Gatsby appen tjener klientprogrammet på `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Hvis du besøker bør du se de tilgjengelige APIene. +> If you visit you should see the available APIs. -## Logg inn med en lokal bruker +## Sign in with a local user -Ditt lokale oppsett fyller automatisk en lokal bruker i databasen. Klikk på `Logg på` -knappen vil automatisk godkjenne deg i den lokale applikasjonen. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Det er imidlertid litt vanskelig å få tilgang til siden for brukerporteføljen. In development, Gatsby overtar serveringen av klientsider og vil derfor få en `404` side for brukerporteføljen når du arbeider lokalt. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Bare å klikke på **"Forhåndsvis tilpasset 404 side"** vil videresende deg til riktig side. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
                - Hvordan logge inn når du arbeider lokalt (skjermbilde) + How to sign in when working locally (screenshot)
                - Slik logger du inn når du arbeider lokalt + How to sign in when working locally
                -## Gjør endringer lokalt +## Making changes locally -Du kan nå gjøre endringer i filer og gjøre endringer i din lokale klone av din fork. +You can now make changes to files and commit your changes to your local clone of your fork. -Følg disse trinnene: +Follow these steps: -1. Valider at du er på `master` grenen: +1. Validate that you are on the `master` branch: ```console git status ``` - Du bør få et utgang slik: + You should get an output like this: ```console - På grensjefen - er grenen oppdatert med "opprinnelse/master". + On branch master + Your branch is up-to-date with 'origin/master'. - ingenting å utføre, arbeidsmappen er ren + nothing to commit, working directory clean ``` - Dersom du ikke er på master- eller arbeidskatalogen din ikke er ren eller løser noen utestående filer/komma og kassen `master`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console git checkout master ``` -2. Synkroniser siste endringer fra freeCodeCamp upstream `master` gren til din lokale hovedgren: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!ADVARSEL] Hvis du har en utestående trekkforespørsel som du har laget fra `master` grenen av forket ditt, du vil miste dem på slutten av dette trinnet. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Du må forsikre deg om at trekkforespørselen din er slått sammen av en moderator før du utfører dette trinnet. For å unngå dette scenariet bør du **alltid** jobbe på en annen gren enn `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Dette trinnet **vil synkronisere de nyeste endringene** fra hovedarkivet til freeCodeCamp. Det er viktig at du rebaserer din filial på toppen av den siste `oppstrøm/master` så ofte som mulig for å unngå konflikter senere. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Oppdater din lokale kopi av freeCodeCamp oppstrøms lagringsplass: + Update your local copy of the freeCodeCamp upstream repository: ```console - git henter oppstrøms + git fetch upstream ``` - Tilbakestill din mastergren med den freeCodeCamp master: + Hard reset your master branch with the freeCodeCamp master: ```console git reset --hard upstream/master ``` - Send din mastergren til din opprinnelse for å ha en ren historie på gaffelen på GitHub: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console - git skyver opprinnelse master - kraft + git push origin master --force ``` - Du kan validere din nåværende master matcher oppstart/master ved å utføre en diff: + You can validate your current master matches the upstream/master by performing a diff: ```console - git diff oppstrøm/master + git diff upstream/master ``` - Resultatet som følger bør være tomt. + The resulting output should be empty. -3. Lag en ny filial: +3. Create a fresh new branch: - Ved å arbeide med en egen gren for hvert problem kan du holde din lokale arbeidskopi ren. Du burde aldri jobbe på `master`. Dette vil jage ut kopien din av freeCodeCamp og du må kanskje begynne på nytt med en ny klone eller plante. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Kontroller at du er på `master` som forklart tidligere og forgrener derfra: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Grennavnet ditt bør starte med en `fix/`, `feat/`, `docs/`, osv. Unngå å bruke problemnummer i grener. Hold dem korte, betydningsfulle og unike. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Noen eksempler på gode filialnavn er: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,217 +330,217 @@ Følg disse trinnene: translate/add-spanish-basic-html ``` -4. Rediger sider og arbeid med koden i favoritttekstbehandleren. +4. Edit pages and work on code in your favorite text editor. -5. Når du er fornøyd med de endringene skal du eventuelt kjøre freeCodeCamp lokalt for å forhåndsvise endringene. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Pass på at du fikser eventuelle feil og sjekk formateringen på endringene dine. +6. Make sure you fix any errors and check the formatting of your changes. -7. Kontroller og bekreft filene som du oppdaterer: +7. Check and confirm the files you are updating: ```console git status ``` - Dette bør vise en liste over `unstaged` filer som du har redigert. + This should show a list of `unstaged` files that you have edited. ```console - På grenen funksjon/dokumentasjon - Filialen din er oppdatert med "oppstrøm/funksjon/dokumentasjon". + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Endringer ikke sortert for forpliktelse: - (bruk "git add/rm ... for å oppdatere hva som komprimeres) - (bruk "git checkout -- ." for å kaste endringer i arbeidsmappen) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - endret: CONTRIBUTING. d - modifisert: docs/README.md - modifisert: docs/how-to-setup-freecodecamp-locally. d - modifisert: docs/how-to-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Fase endringene og legg et forpliktelse: +8. Stage the changes and make a commit: - I dette trinnet skal du bare merke filer som du har redigert eller lagt til selv. Du kan tilbakestille og løse filer som du ikke har tenkt å gjøre det hvis nødvendig. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console - git legg til sti/til/my/endret/fil.ext + git add path/to/my/changed/file.ext ``` - Eller du kan legge til alle `unstaged` filer til testområdet: + Or you can add all the `unstaged` files to the staging area: ```console - legg til galt. + git add . ``` - Filene som ble flyttet til testområdet vil bli lagt til når du utfører. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Produksjon: + Output: ```console - På grenen funksjon/dokumentasjon - Filialen din er oppdatert med "oppstrøm/funksjon/dokumentasjon". + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Endringer som skal forpliktes: - (bruk "git reset HEAD ..." to unstage) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - modifisert: CONTRIBUTING.md - endret: docs/README.md - endret: docs/how-to-setup-freecodecamp-locally.md - modifisered: docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Nå kan du gjøre endringer med en kort melding som: + Now, you can commit your changes with a short message like so: ```console - git commit -m "fix: min korte melding + git commit -m "fix: my short commit message" ``` Some examples: ```md - rett: oppdater guide artikkelen for Java - for loop - funksjon: legg til en veiledende artikkel for alexa-ferdigheter + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - Valgfritt: + Optional: - Vi anbefaler på det sterkeste å lage et konvensjonelt forpliktende budskap. Dette er en god praksis du vil se på noen av de populære åpen kildekode-arkivene. Denne oppmuntrer deg til å følge vanlig praksis. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Noen eksempler på konvensjonelle innsendelsesmeldinger er: + Some examples of conventional commit messages are: ```md - fiks: oppdater HTML guide artikkel - fiksing: oppdater byggeskript for Travis-CI - -funksjonen: legg til artikkel for JavaScript-heisting - docs: oppdater bidrags retningslinjer + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - Hold disse korte, ikke mer enn 50 tegn. Du kan alltids legge til ytterligere informasjon i beskrivelsen av innleveringsmeldingen. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Dette tar ikke lenger tid enn ukonvensjonell melding, som f.eks. "oppdater fil" eller "legg til index.md" + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Du kan lære mer om hvorfor du burde bruke vanlige komma [her](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Hvis du oppdager at du trenger å redigere en fil eller oppdatere forpliktelsen etter å ha foretatt en forpliktelse, kan du gjøre det etter at du har redigert filene med: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console git commit --amend ``` - Dette åpner en standard tekstbehandler som `nano` or `vi` hvor du kan redigere forpliktende meldingstekst og legge til/redigere beskrivelsen. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Deretter kan du presse endringene til før: +10. Next, you can push your changes to your fork: ```console - git skyver opprinnelse filial/navn her + git push origin branch/name-here ``` -## Foreslå trekkforespørsel (PR) +## Proposing a Pull Request (PR) -Etter du har utført dine endringer, se her for [hvordan du åpner en trekkforespørsel](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Hurtig kommandoer referanse +## Quick commands reference -En rask referanse til kommandoene du vil trenge når du arbeider lokalt. +A quick reference to the commands that you will need when working locally. -| kommando | beskrivelse | -| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `npm ci` | Installere / re-installere alle avhengigheter og bootstraps de ulike tjenestene. | -| `npm kjør seed` | Analyser alle markdown og setter dem inn i MongoDB. | -| `npm løp utvikleren` | Starter the freeCodeCamp API Server og Client Applications. | -| `npm prøving` | Kjør alle JS-tester i systemet, inkludert klienten, server, linte og utfordre tester. | -| `npm kjøre test:client` | Kjør klienttesten som er egnet. | -| `npm kjør prøving:pensum` | Kjør hvilken læreplantest som er egnet. | -| `npm kjøre test:curriculum --block='Basic HTML og HTML5'` | Test en bestemt blokk. | -| `npm kjøre test:curriculum --superblock='responsive-web-design'` | Test en spesifikk SuperBlock. | -| `npm drevet prøvings-læreplanverk` | Kjør pensum test-drakten, uten å seile etter den første feilen | -| `npm kjøre test:server` | Kjør servertesten på nytt. | -| `npm kjør e2e` | Kjør trykk enden av for å avslutte tester. | -| `npm kjør rent` | Avinstallerer alle avhengigheter og renser opp cacher. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Feilsøking +## Troubleshooting -### Problemer med å installere de anbefalte forutsetningene +### Issues with installing the recommended prerequisites -Vi utvikler jevnlig på de siste eller mest populære operativsystemene som macOS 10.15 eller senere, Ubuntu 18.04 eller senere og Windows 10 (med WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Det anbefales å undersøke ditt spesifikke problem på ressurser, slik som Google, Stack Overflow og Stack Exchange. Det er en god sjanse for at noen har stått overfor samme problemstilling, og at det allerede finnes et svar på din spesifikke spørring. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Hvis du er på et annet OS og/eller fortsatt kjører i problemer, se [få hjelp](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!ADVARSEL] +> [!WARNING] > -> Vennligst unngå å lage GitHub problemer for å legge til problemer. De er utenfor prosjektets virkeområde. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Problemer med UI, Fonter, byggefeil etc. +### Issues with the UI, Fonts, build errors etc. -Hvis du møter problemer med UI, Skrifter eller ser builds feil en opprydding kan være nyttig: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console -npm kjøre ren +npm run clean npm ci npm run seed npm run develop ``` -ELLER +OR -Bruk snarveien +Use the shortcut ``` -npm kjøre ren-og-utvikling +npm run clean-and-develop ``` -Hvis du fortsetter å ta problemer med bygget, anbefales rengjøring av arbeidsområdet +If you continue to face issues with the build, cleaning up the workspace is recommend. -Bruk `git clean` i interativ modus: +Use `git clean` in interative mode: ``` -Git ren -ifdX +git clean -ifdX ```
                - Hvordan rense git usporte filer (skjermbilde) + How to clean git untracked files (screenshot)
                - Hvordan rense git ulagrede filer + How to clean git untracked files
                -### Problemer med API, innlogging, utfordring submissions, etc. +### Issues with API, Login, Challenge Submissions, etc. -Hvis du ikke kan logge på, og i stedet ser du et banner med en feilmelding at det blir rapportert til freeCodeCamp, Dobbeltsjekk at din lokale port `3000` ikke er i bruk av et annet program. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**På Linux / macOS / WSL på Windows - Fra terminal:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console -netstat -ab butigrep "3000" +netstat -ab | grep "3000" -tcp4 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**På Windows - Fra Elevated PowerShell:** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab LaborSelect-String "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Problemer med å installere avhengigheter +### Issues installing dependencies -Hvis du får feil under installasjon av avhengighetene, Kontroller at du ikke er i et begrenset nettverk eller at brannmurinnstillingene dine ikke hindrer at du får tilgang til ressurser. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -Første gangs oppsett kan ta en stund avhengig av nettverksbåndbredden. Vær tålmodig, og om du fortsatt sitter fast vi med GitPod i stedet for et offline oppsett. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Henter hjelp +## Getting Help -Om du står fast og trenger hjelp, gi oss beskjed ved å spørre i ['Bidragsyter' kategorien på vårt forum](https://forum.freecodecamp.org/c/contributors) eller [Bidragsytere chatterommet](https://gitter.im/FreeCodeCamp/Contributors) på Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Det kan være en feil i konsollen til nettleseren din eller i terminalen / kommandolinjen som vil hjelpe til med å identifisere problemet. Gi denne feilmeldingen i beskrivelsen, slik at andre lettere kan identifisere problemet og hjelpe deg med å finne en løsning. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Norwegian/how-to-setup-wsl.md b/docs/i18n/Norwegian/how-to-setup-wsl.md index 6421a2ae8e..68bce6dde6 100644 --- a/docs/i18n/Norwegian/how-to-setup-wsl.md +++ b/docs/i18n/Norwegian/how-to-setup-wsl.md @@ -1,83 +1,83 @@ -# Sett opp freeCodeCamp på Windows Subsystem for Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> Før du følger disse instruksjonene må du forsikre deg om at systemet oppfyller kravene +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (versjon 2004, Build 19041 eller høyere) - tilgjengelig for alle distribusjoner, inkludert Windows 10 hjem. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop for Windows**: Se respektive krav for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) og [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Denne veiledningen dekker noen felles trinn med oppsett av WSL2. Så snart noen av de vanlige problemene med WSL2 er tatt opp, du bør kunne følge vår lokale oppsettsveiledning til å arbeide med freeCodeCamp på Windows som kjører en WSL-distro som Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Aktiver WSL +## Enable WSL -Følg instruksjonene på [den offisielle dokumentasjonen](https://docs.microsoft.com/en-us/windows/wsl/install-win10) for å installere WSL1 og etterfulgt av oppgradering til WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Vi anbefalte med Ubuntu-18.04 eller mer med WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!MERKNAD] + > [!NOTE] > - > Selv om du kan bruke andre ikke-biefaserte distroer, kommer de alle med sin egen gotchas og ligger utenfor denne veiledningens virkeområde. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Oppdater avhengighetene for OS +2. Update the dependencies for the OS ```console sudo apt update sudo apt upgrade -y # cleanup - sudo apt autoremove + sudo apt autoremove -y ``` -## Sett opp Git +## Set up Git -Git kommer forhåndsinstallert med Ubuntu 18.04, bekreft at din Git versjon med `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ -″git --version -git versjon 2.25.1 +❯ git --version +git version 2.25.1 ``` -(Valgfri, men anbefales) Du kan nå fortsette til [sette opp dine ssah-nøkler](https://help.github.com/articles/generating-an-ssh-key) med GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Installere en kodingseditor +## Installing a Code Editor -Vi anbefaler på det sterkeste å installere [Visual Studio Code](https://code.visualstudio.com) i Windows 10. Det har stor støtte for WSL og automatisk installerer alle nødvendige utvidelser på WSL distro. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -Essensielt vil du redigere og lagre koden din på Ubuntu-18.04 med VS Code installert i Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Installerer Docker skrivebord +## Installing Docker Desktop -**Docker Desktop for Windows** lar deg installere og kjøre database og tjenester som MongoDB, NGINX, osv. Dette er nyttig for å unngå vanlige pitfalls ved installering av MongoDB, eller andre tjenester direkte på Windows eller WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Følg instruksjonene på [den offisielle dokumentasjonen](https://docs.docker.com/docker-for-windows/install) og installer Docker Desktop for din Windows distribusjon. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Det er noen minimumskrav til maskinvare for den beste erfaringen. +There are some minimum hardware requirements for the best experience. -## Konfigurer Docker skrivebord for WSL +## Configure Docker Desktop for WSL -Når Docker Desktop er installert, [følg denne bruksanvisningen](https://docs.docker.com/docker-for-windows/wsl) og konfigurer den for å bruke Ubuntu-18.04 installasjonen som backend. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Dette gjør at beholderen springer på WSL-siden i stedet for å løpe på Windows. Du vil få tilgang til tjenestene via `http://localhost` både på Windows og Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Installer MongoDB fra Docker HUL +## Install MongoDB from Docker Hub -Når du har konfigurert Docker Desktop til å arbeide med WSL2, følg disse trinnene for å starte en MongoDB-tjeneste: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Start en ny Ubuntu-18.04 terminal +1. Launch a new Ubuntu-18.04 terminal -2. Trekk `MongoDB 3.6` fra dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Start MongoDB-tjenesten ved port `27017`, og konfigurer den for å kjøre automatisk ved omstart av systemet +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console - docker kjør -det \ + docker run -it \ -v mongodata:/data/db \ -p 27017:27017 \ --name mongodb \ @@ -85,13 +85,13 @@ Når du har konfigurert Docker Desktop til å arbeide med WSL2, følg disse trin -d mongo:3 ``` -4. Nå får du tilgang til tjenesten fra både Windows eller Ubuntu på `mongodb://localhost: 27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Installere Node.js og npm +## Installing Node.js and npm -Vi anbefaler at du installerer LTS utgivelsen for Node.js med en node-versjonsbehandler - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Når du er installert, bruk disse kommandoene for å installere og bruke Node.js versjonen etter behov +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts @@ -101,29 +101,29 @@ nvm install --lts nvm install 14 -# Bruk -# nvm bruk +# Usage +# nvm use -nvm bruk 12 +nvm use 12 ``` -Node.js kommer sammen med `npm`, du kan oppdatere til de siste versjonene av `npm` med: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console npm install -g npm@latest ``` -## Sett opp freeCodeCamp lokalt +## Set up freeCodeCamp locally -Nå som du har installert pre-requisittene, følg [vår lokale oppsettsveiledning](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) å klene, installere og sette opp freeCodeCamp lokalt på din maskin. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!ADVARSEL] +> [!WARNING] > -> Vær oppmerksom på at settet opp for cypress tester (og relaterte GUI behov) er et pågående arbeid. Du bør fortsatt være i stand til å jobbe på mesteparten av kodebase +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Nyttige lenker +## Useful Links -- [A WSL2 Dev Setup med Ubuntu 20.04, Node.js, MongoDB, VS Code og Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - en artikkel av Mrugesh Mohapatra (Staff Developer på freeCodeCamp.org) -- Ofte stilte spørsmål på: +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Docker skrivebord for Windows](https://docs.docker.com/docker-for-windows/faqs) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Norwegian/how-to-use-docker-on-windows-home.md b/docs/i18n/Norwegian/how-to-use-docker-on-windows-home.md index 52f847a92b..85ac65a3e3 100644 --- a/docs/i18n/Norwegian/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Norwegian/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Hvordan du bruker Docker på Windows Home +# How to use Docker on Windows Home -Det er noen fallgruver å unngå når du setter opp docker på Windows Home. Først av alt må du bruke [Docker Verktøykasse](https://docs.docker.com/toolbox/toolbox_install_windows/) som administrator. Dessverre støtter Windows Home ikke Docker for Windows Desktop, så verktøykassen må brukes i stedet. Den må kjøres som administrator da installasjonen bruker symkoblinger, som ikke kan opprettes annet. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Når du har installert verktøykassen, kjør Docker Quickstart Terminal som Administrator. Dette vil opprette en `standard` virtuell maskin, hvis den ikke allerede eksisterer. Når det har skjedd, lukk terminalen og åpne VirtualBox (igjen som Administrator). Du bør kunne se `standard` maskinen. Nettstedet er ganske ressurskrevende, så stopper den virtuelle maskinen og hever innstillingene så mye som du kan – spesielt minne. Det er bekreftet å arbeide med 4GB ram. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Når du er fornøyd med at Docker virker, klone the freeCodeCamp repository to a directory in `C:\Users`. Disse mappene deles som gir legen tilgang til lokale kataloger, som den trenger under installasjon. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Hvis du ser meldinger som +If you see messages like ```shell -bash: change_volumes_owner.sh: Ingen slik fil eller mappe +bash: change_volumes_owner.sh: No such file or directory ``` -når du `npm kjører docker:init` dette er sannsynlig hvilken kulprit. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Norwegian/how-to-work-on-coding-challenges.md b/docs/i18n/Norwegian/how-to-work-on-coding-challenges.md index c6fb1bb378..2b95545e91 100644 --- a/docs/i18n/Norwegian/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Norwegian/how-to-work-on-coding-challenges.md @@ -1,39 +1,43 @@ -# Hvordan jobbe med kodeutfordringer +# How to work on coding challenges -Vårt mål er å utvikle en morsom og tydelig interaktiv læringserfaring. +Our goal is to develop a fun and clear interactive learning experience. -Å utforme interaktive kodeutfordringer er vanskelig. Det ville vært mye enklere å skrive en langvarig forklaring eller å lage en videoveiledning, og det er et sted for dem på Medium og YouTube. For våre grunnleggende læreplaner følger vi imidlertid med det som fungerer best for de fleste - en fullt interaktiv, videospill-lignende opplevelse. +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. -Vi vil ha kampere for å nå en strømningstat. Vi ønsker at de skal bygge momentum og blåse gjennom læreplanen så få snagler som mulig. Vi ønsker at de går inn i prosjektene som er preget av tillit og har stor eksponering i programmeringskonsepter. +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. -řskape disse utfordringene krever enorme kreativitet og oppmerksomhet rundt detaljer. Det er mye hjelp tilgjengelig. Du vil få støtte fra et helt lag med bidragsytere som du kan sprette ideer til og demonstrere utfordringene dine. Hold deg aktiv i [bidragsytere rommet](https://gitter.im/freecodecamp/contributors) og spør mange spørsmål. +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/). -Med din hjelp kan vi utforme en interaktiv læreplan for koding som vil hjelpe millioner av mennesker med å lære å kode i årene som kommer. +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. -Innholdet for hver utfordring lagres i sin egen markeringsfil. Denne markeringsfilen blir senere konvertert til HTML ved hjelp av verktøyene for å lage interaktive nettsider. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Du finner alt freeCodeCamp.orgs faglige innhold i [`/pensum / utfordringer`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) mappen. +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. -## Sett opp verktøy for pensum +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Før du arbeider med læreplanverket, må du lage et verktøy som kan hjelpe deg med å teste endringene. Du kan benytte hvilket som helst alternativ i det under: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- Du kan [sette opp freeCodeCamp lokalt](how-to-setup-freecodecamp-locally.md). Dette anbefales **høyt** for jevnlige/gjentatte bidrag. Dette oppsettet lar deg jobbe og teste endringene. -- Bruk Gitpod, et gratis online utviklermiljø. Å klikke på knappen under vil starte et utvikler-til-kode utviklermiljø for freeCodeCamp i nettleseren. Det tar bare noen minutter. +## Set up the tooling for the curriculum - [![Åpne i Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Rediger filene i GitHubs grensesnitt ved å klikke på blyant-ikonet for den tilsvarende filen. Selv om dette er den raskeste måten, er det **ikke anbefalt**, fordi du ikke kan teste dine endringer på GitHub. Hvis våre vedlikeholdere konkluderer med at de endringene du har gjennomført, må testes lokalt, må du følge metodene ovenfor i stedet igjen. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Utfordring Mal + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Nedenfor finner du en mal av hvordan nedtrekksfilene ser ut til nå. For å se den strømlinjeformede malen vil vi vedta å se [under](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: Unik identifikator (alfanumerisk, MongoDB_id) -title: Utfordringstittel -utfordringstype: 0 +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 0 videoUrl: 'url of video explanation' --- @@ -43,61 +47,61 @@ videoUrl: 'url of video explanation' A Description of the challenge and what is required to pass -## Instruksjoner +## Instructions
                -Instruksjoner for hva som akkurat må gjøres. +Instructions about what exactly needs to be done.
                -## Tester +## Tests
                ```yml -tester: - - tekst: Skal returnere "foo" - testing: 'A stringified function possibly using Chai assers' +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
                -## Utfordre frø +## Challenge Seed
                ```{ext} -Kode vist i editoren som standard. +Code displayed in the editor by default. -Dette er en nødvendig del for utfordringen. +This is a required section for the challenge. ```
                -### før test +### Before Test
                ```{ext} -Valgfri Test oppsettskode. +Optional Test setup code. ```
                -### Etter test +### After Test
                ```{ext} -Valgfri rivningskode. +Optional Test tear down code. ```
                -## Løsning +## Solution
                @@ -109,174 +113,251 @@ Valgfri rivningskode. ```` -> [!MERK] +> [!NOTE] > -> 1. I de ovennevnte kapitlene, eksempler på `{ext}` er: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. For avsnittene `Tester` ovenfor skal "tekst" og "teststring" gyldig YAML strenger. `testString` kan være en stringifisert funksjon eller uttrykk som kan bruke Chai hevder. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Nummerering Utfordringer +## Numbering Challenges -Hver utfordring trenger en `id`. Hvis du ikke spesifiserer en, vil MongoDB lage en ny, tilfeldig en når den lagrer dataene; Men det vil vi ikke gjøre, siden vi vil at utfordringene skal være gjennomgående på tvers av ulike miljøer (trinn), produksjon, mange forskjellige utviklere osv.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -For å generere en ny i et skall (forutsetter at MongoDB kjører separat): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Kjør `mongo` kommandoen. -2. Kjør `ObjectId()`-kommandoen. +1. Run `mongo` command. +2. Run `ObjectId()` command. -For eksempel: +For example: ```bash $ mongo MongoDB shell version v3.6.1 -kobler til: mongodb://127.0.0.1:27017 -MongoDB server versjon: 3.4.10 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Resultatet er en ny id, for eksempel `5a474d78df58bafeb35d34` ovenfor. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -Når du har din id, sett den i markdown filen som `id` feltet øverst, f.eks +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- id: 5a474d78df58bafeb3535d34 -tittel: Utfordringtittel +title: Challenge Title ``` -## Navngi utfordringer +## Naming challenges -Å navngi ting er vanskelig. Vi har gjort det enklere ved å påføre noen begrensninger. +Naming things is hard. We've made it easier by imposing some constraints. -Alle utfordringstitler skal være eksplisitte og bør følge dette mønsteret: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[objektseksjon\] +\[verb\]\[object clause\] -Her er noen eksempler på utfordringens navn: +Here are some example challenge names: -- Bruk med urviseren merknader for å angi utfyllingen av et element -- Kondensere matriser med .reduce -- Bruk parentes notering for å finne First Character i en streng +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Instruksjoner om utfordring +## Challenge descriptions/instructions -Straffen skal være klar og konsist med minimalt jargon. Hvis jargon brukes, bør jargon være umiddelbart definert på ren engelsk. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Hold avsnittene kort (ca. 1–4 setninger). Folk har større sannsynlighet for å lese flere korte avsnitt enn en tekstmur. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Utfordringstekst bør bruke den andre personen ("deg") for å hjelpe til med å gi den en samtaletone. På den måten ser det ut til at teksten og instruksjonene kan komme direkte til kameraets arbeid gjennom utfordringen. Prøv å unngå å bruke den første personen ("I", "vi", "lets", og "us"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Ikke bruk utgående lenker. Disse avbryter gjennomstrømningen. Kampanjer bør aldri trenge å google noe under disse utfordringene. Dersom det er ressurser du tror kamperne vil ha nytte av, kan du legge dem til i guiderelatert artikkel. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -Du kan legge til diagrammer hvis det er absolutt nødvendig. +You can add diagrams if absolutely necessary. -Ikke bruk emojis eller uttrykksikoner i utfordringer. freeCodeCamp har et globalt samfunn, og kulturell betydning av en emoji eller uttrykksikon kan være annerledes i verden. emojis kan også vises annerledes på forskjellige systemer. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Korrekt stempling for dårlige tider bør brukes når det er mulig. Nedenfor følger en ordliste over ord som de skal vises i utfordringene. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (store bokstaver i "J" og "S" og ingen forkortelser) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Front-end utvikling (adjektiv form med en bindestrek) er når du arbeider på forsiden (lunde form med ingen dash). Det samme går med "baken", "full stack", og mange andre forbindelser. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### Regelen på 2 minutter +### The 2-minute rule -Hver utfordring skal kunne løses innen 120 sekunder av en innebygd engelsk taler med utfordringer som har ført frem til dem. Dette inkluderer tiden det tar å lese anvisninger/instruksjoner forstår den tilsiktede koden, skriv sin egen kode og få alle testene til å passere. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Hvis det tar mer enn to minutter å fullføre utfordringen, har du to alternativer: +If it takes longer than two minutes to complete the challenge, you have two options: -- Forenkle utfordringen, eller -- Splitt utfordringen i to utfordringer. +- Simplify the challenge, or +- Split the challenge into two challenges. -Trenden på 2 minutter tvinger deg til å få dine markeringer til å konsensurere, din frøkode og testene dine til å gå fortløpende. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Vi sporer hvor lang tid det tar før kameraene løser endringer, og bruker informasjonen til å identifisere utfordringer som må forenkles eller splittes. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Moduler +### Modularity -Hver utfordring bør lære nøyaktig ett konsept, og dette begrepet skal framgå av navnet på utfordringen. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Vi kan forsterke tidligere konsepter gjennom repetisjon og variasjoner – for eksempel Hvis man introduserer h1 elementer i en utfordring, så h3 elementer noen utfordringer senere. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Vårt mål er å ha tusenvis av to minutters utfordringer. Dette kan flyte sammen og krysse tidligere dekkede konsepter. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Formatering av oppgavetekst +### Formatting challenge text -Her er spesifikke formateringsretningslinjer for utfordringstekst og -eksempler: +Here are specific formatting guidelines for challenge text and examples: -- Søkeord for språk går i `` tagger. For eksempel navn på HTML-tagg eller CSS egenskaper -- Den første forekomsten av et søkeord når det er definert, eller generelle nøkkelord (dvs. "objekt" eller "immutable") gå i `` tagger -- Referanser til kodedeler (dvs. funksjon, metode eller variabelnavn) bør pakkes i `` koder. Se eksempel nedenfor: -- Bruk parseInt for å konvertere variabelen virkelig tall til et heltall. -- Flerlinjekode blokker **må innledes med en tom linje**. Neste linje må starte med tre bakgrunner etterfulgt umiddelbart av et av et av de [støttede språkene](https://prismjs.com/#supported-languages). For å fullføre kodeblokken, må du starte en ny linje som bare har tre bakgrunner og **en annen tom linje**. **Merk:** Hvis du skal bruke en eksempelkode i YAML, bruk `yaml` i stedet for `yml` for språket til høyre for bakken. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Se eksempel nedenfor: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Følgende er et eksempel på kode: +The following is an example of code: ```{language} -[DIN KODE HER] +[YOUR CODE HERE] ```` ```` -- Tilleggsinformasjon i form av en notat må formateres `Merk: Rest av notis tekst... -- Hvis flere notater trengs, før alle notatene i separate setninger via format `Notater: Første notattekst. Andre notattekst.`. -- Bruk doble sitater der relevant +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Skrive tester +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Utfordringer bør ha det minste antallet tester som er nødvendig for å bekrefte at en camper forstår et konsept. +## Writing tests -Vårt mål er å kommunisere det ene som er at utfordringen prøver å underlege, og teste at de har forstått det poenget. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Utfordringstester gjør bruk av Node.js og Chai.js hevder bibliotekene. Hvis nødvendig, kan også bruker-generert kode nås i variabelen `kode`. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Formatering av hovedkoden +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Her er spesifikke formateringsveiledninger for utfordringsnøkkeltallet: +## Formatting seed code -- Bruk to mellomrom for å rykke inn -- Javascript-kommandoer mot slutten av en semikolon -- Bruk doble sitater der relevant -- Kommentarer som er laget burde ha et mellomrom mellom kommentaren og kommentaren +Here are specific formatting guidelines for the challenge seed code: - `// Fix denne linjen` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Hinker og Solutions +### Seed code comments -Hver utfordring har en `Få en Hint` knapp, slik at en bruker kan få tilgang til alle hint/løsninger som er laget for utfordringen. Emner for pensum hint/løsninger finnes på [vårt forum](https://forum.freecodecamp.org/c/guide) under 'Guide' kategorien. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Hvis du finner et problem med en eksisterende utfordrings hint/løsninger tema, kan du gjøre forslag i [contributors category](https://forum.freecodecamp.org/c/contributors) på forumet. Moderatorer og brukere med tillit nivå 3 vil gjennomgå kommentarene og avgjøre om de skal inkludere endringene i tilhørende hint/løsning. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Legg til nye utfordring hint/løsninger Emner +Example of valid single line JavaScript comment: -Ta de følgende stegene i forbindelse med å legge til et nytt utfordringshin/løsninger relatert emne. +```js +// Only change code below this line +```` -1. Begynn med å følge de samme trinnene for å opprette et nytt emne, men gå gjennom det neste for å opprette tittelen. -2. Tittelen på emnet skal starte med `freeCodeCamp Challenge Guide: ` samsvarer med den faktiske tittelen på pensum utfordringen. For eksempel, hvis utfordringen er kalt `Chunky Monkey`", vil emnetittelen være "`freeCodeCamp Challenge Guide: Chunky Monkey`". -3. `camperbot` bør være eier av disse emnene/innleggene, Du må derfor be om en admin for å endre eierskap av hovedinnlegget til `camperbot`. -4. Når det nye emnet er opprettet, opprettes forum emne-ID. Det ligger ved slutten av forum emne-URL. Denne Iden må legges til fronten til læreplanens utfordringsfil via den normale trekksprosessen for å få en Hint-knappen for å koble til emnet. +Example of a valid CSS comment: -### Retningslinjer for innhold i tips og løsninger temaene +```js +/* Only change code above this line */ +``` -Når du foreslår en løsning for en læreplanrelatert guide hele koden må legges til. Alle endringer som trengs for å gjennomføre en utfordringscache er inkludert i denne artikkelen. Følgende mal bør brukes når du oppretter nye hint/løsninger emner: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. -``md -# Utfordringsnavn går Her +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
                + { /* Change code below this line */ } + + { /* Change code above this line */ } +

                {this.state.text}

                +
                + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md +# Challenge Name Goes Here --- ## Problem Explanation -Dette oppsummerer hva som må gjøres uten bare å oppgi beskrivelse og/eller instruksjoner. This is an optional section +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section #### Relevant Links @@ -307,63 +388,63 @@ function myFunc() { } ```` -#### Forklaring på kode +#### Code Explanation -- Det gis kodeforklaring her -- Det gis kodeforklaring her +- Code explanation goes here +- Code explanation goes here -#### Relevante lenker +#### Relevant Links -- [Link Tekst](link_url_goes_here) -- [Link Tekst](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
                ```` -## Tester utfordringer +## Testing Challenges -før du [opprette en pull request](how-to-open-a-pull-request. d) for dine endringer, du må validere at endringene du har gjort, ikke medfører problemer med utfordringen på en utilsiktet. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. For å teste alle utfordringer kjør kommandoen under fra rotkatalogen +1. To test all challenges run the below command from the root directory ```` -npm kjør prøving:pensum +npm run test:curriculum ``` -2. Du kan også teste en blokk eller en utfordringscacher med disse kommandoene +2. You can also test a block or a superblock of challenges with these commands ``` -npm kjøre test:curriculum --block='Basic HTML og HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` -npm kjøre test:curriculum --superblock=responsive-web-design +npm run test:curriculum --superblock=responsive-web-design ``` -Du kan også teste én utfordring enkeltvis ved å utføre følgende trinn: +You are also able to test one challenge individually by performing the following steps: -1. Bytt til mappen `curriculum`: +1. Switch to the `curriculum` directory: ``` - cd pensum + cd curriculum ``` -2. Kjør følgende for hver utfordringsfil du har endret for: +2. Run the following for each challenge file for which you have changed: ``` - npm run test -- -g 'full English title of the challenge' + npm run test -- -g 'the full English title of the challenge' ``` -Når du har bekreftet at hver utfordring du har arbeidet på passerer testene, [vennligst lag en pull-forespørsel](https://github.com/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> Du kan sette miljøvariabelen `LOCALE` i `.env` til språket i utfordringen(e) du må teste. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> De akseptert verdiene er `english` og `chinese`, der `english` er satt som standard. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Kommende utfordringsmal +## Upcoming Challenge Template -Utfordringsmalen i prosessen med å bli oppdatert til en renere og mindre nestet struktur. This has not been completely finalized, but the following should close to the final structure: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: ````mdx @@ -387,52 +468,52 @@ Description text, in markdown
    ``` -## --trinn-hints-- +## --step-hints-- ![test-id-1] -Det vil være et vilkårlig antall antall antall aviser, instrukser (i markering) og kodeblokker. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Kode for test én +Code for test one ``` ![test-id-2] -Flere instruksjoner i markdown-syntaks +More instructions in markdown syntax ```js -Mer kode +More code ``` -## --trinnvis +## --step-seed-- ### --before-user-code-- ```lang -Kode vurdert før brukers +Code evaluated before the user’s ``` ### --after-user-code-- ```lang -Kode vurdert etter brukerne, og rett før testene +Code evaluated after the user’s, and just before the tests ``` -### --delt innhold-- +### --seed-content-- ![index-html] ```html -Noen html +Some html ``` ```css -Noen CSS +Some css ``` ```js -Noen js +Some js ``` ![index-js] @@ -441,63 +522,63 @@ Noen js

    - --solution -marker- + --solution-marker--

    - Eksakt det samme som i avsnittet frøene + Exactly the same as the seeds section

    - --next-solution-markør + --next-solution-marker

    - Samme på nytt + Same again

    - --spørsmål-marker-- + --question-marker--

    - --tekst-marker-- + --text-marker--

    - Spørsmålet vil gå her (bare brukes til videoutfordringer) + The question would go here (only used for video challenges)

    - --svars-marker-- + --answers-marker--

    - Svar 1 + Answer 1


    - Svar 2 + Answer 2


    - Svar 2 + More answers

    - --solution -marker- + --solution-marker--

    @@ -513,13 +594,13 @@ Noen js

    - Nyttige lenker + Useful Links

    - Skape og redigere utfordringer: + Creating and Editing Challenges:

    @@ -527,14 +608,14 @@ Noen js
    1. - Utfordringstyper - hva den numeriske utfordringstypen betyr (nummer). + Challenge types - what the numeric challenge type values mean (enum).

    2. - Bidrar til FreeCodeCamp - skrive ES6 Challenge Tests - en video etter Ethan Arrowood da han bidrar til den gamle versjonen av pensum eller pensum. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

    3. diff --git a/docs/i18n/Norwegian/how-to-work-on-the-docs-theme.md b/docs/i18n/Norwegian/how-to-work-on-the-docs-theme.md index fb246d7545..bf8bf8f6c9 100644 --- a/docs/i18n/Norwegian/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Norwegian/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Hvordan jobbe med tema i docs +# How to work on the docs theme -> En rask påminnelse om at du ikke trenger å sette opp noe for å arbeide på innholdet for dokumentasjonsnettstedet. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> For å arbeide med de bidragende retningslinjene, kan du redigere eller legge til filer i `docs` mappen [tilgjengelig her](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Når dine endringer slås sammen, vil det bli gjort tilgjengelig automatisk på dokumentasjonssiden. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Struktur på dokumentenes nettsted +## Structure of the docs website -Nettstedet genereres ved hjelp av [`docsify`](https://docsify.js.org), og servert ved hjelp av GitHub sider. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Vanligvis vil du ikke trenge å endre noen konfigurasjon eller bygge nettstedet lokalt. Hvis du er interessert, er det hvordan det fungerer: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- Hjemmesidens kilde for dette nettstedet er tilgjengelig i [`docs/index.html`](index.html). -- Vi tjener denne filen som en SPA ved å bruke `forsydde` og GitHub sider. -- `docsify` skriptet genererer innholdet i `markdown` filer i `docs` mappen på etterspørsel. -- Hjemmesiden er generert fra [`_coverpage.md`](_coverpage.md). -- sidepanelet er generert fra [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Serving av dokumentasjonslokalitet lokalt +## Serving the documentation site locally -Klon freeCodeCamp: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -Installer `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -og tjener `/docs` mappen +and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternativt, hvis du har installert freeCodeCamp lokalt (se lokal oppsettveiledning), vi samler CLI med utviklingsverktøyene slik at du kan kjøre `npm run docs:serve` fra roten av repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Norwegian/how-to-work-on-the-news-theme.md b/docs/i18n/Norwegian/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Norwegian/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Norwegian/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Norwegian/index.md b/docs/i18n/Norwegian/index.md index e5c0f90703..1c4add4ab3 100644 --- a/docs/i18n/Norwegian/index.md +++ b/docs/i18n/Norwegian/index.md @@ -1,45 +1,43 @@ -[freeCodeCamp.org](https://freecodecamp.org) er mulig gjennom tusenvis av frivillige som deg. Vi ønsker alle og alle bidrag til fellesskapet og er glade for å kunne ønske deg om bord. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> Før du fortsetter, ta en rask 2 minutter å lese vår [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). Vi håndhever det strengt i samfunnet vårt. Vi bidrar gjerne til å freeCodeCamp.org som en trygg og inkluderende opplevelse for alle. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Glad bidrag. +Happy contributing. -Du er velkommen til: +You are welcome to: -- Opprette, oppdatere og fikse feil i våre [kode-utfordringer](#coding-challenges). -- Hjelp oss å fikse feil i freeCodeCamp.org's [læringsplattform](#learning-platform). -- _(Kommer snart)_ Hjelp oss med å oversette freeCodeCamp.org til verdensspråk. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Har du spørsmål? Gå til [disse vanlige spørsmålene](/FAQ.md) hvor vi svarer på noen felles spørringer om å bidra. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Programmeringsutfordringer +## Curriculum -Alle våre kodeutfordringer er kuratert av fellesskapet, og innhenting av ekspertkunnskap fra frivillige som deg. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Du kan hjelpe til med å utvide dem og gjøre ordene deres bedre. Du kan også oppdatere brukerhistoriene for å forklare konseptet bedre eller fjerne redundante stoffer og forbedre utfordringstestene for å få dem mer nøyaktig testet personens kode. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Hvis du er interessert i å forbedre disse kodingsutfordringene, blir her [hvordan man arbeider med kodeutfordringer](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Lære plattform +## Learning Platform -Vår læringsplattform løper på en moderne JavaScript-stack. Det har ulike komponenter, verktøy og biblioteker, inkludert men ikke begrenset til, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, og mer. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Bredt, +Broadly, we use -- Vi har en Node.js basert API-server. -- Et sett av React-based klient applikasjoner. -- Et skript som vi bruker for å vurdere våre frontende-prosjekter. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Som medvirkning til dette krever en viss forståelse av API, ES6 syntaks, og mye nysgjerrihet. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Vi forventer grunnleggende kjennskap til noen av de nevnte teknologiene, verktøyene og bibliotekene. Men da du ble sagt, er det ikke nødvendig å bli ekspert på dem for å bidra. +If you want to help us improve our codebase... -**Hvis du vil hjelpe oss med å forbedre vår kodebase, så kan du enten bruke Gitpod, et gratis online utviklermiljø** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Åpne i Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starter et utvikler-til-kode utviklermiljø i nettleseren din.) +Or you can... -ELLER - -**du kan [sette opp freeCodeCamp lokalt](how-to-setup-freecodecamp-locally.md) på maskinen din.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Norwegian/moderator-handbook.md b/docs/i18n/Norwegian/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Norwegian/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
      + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Polish/FAQ.md b/docs/i18n/Polish/FAQ.md index 08b846cf0f..e6ef4fed0d 100644 --- a/docs/i18n/Polish/FAQ.md +++ b/docs/i18n/Polish/FAQ.md @@ -1,95 +1,76 @@ -### Jestem nowy na GitHub i Open Source, gdzie powinienem zacząć? +### I am new to GitHub and Open Source. Where should I start? -Przeczytaj nasz ["Jak pomóc w Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). To kompresyjny zasób pierwszych projektów i wytycznych przyjaznych dla timera. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Czy mogę przetłumaczyć program nauczania FreCodeCamp? +### Can I translate freeCodeCamp's curriculum? -Zaczynając od **Chińczyków** najpierw rozpoczniemy wysiłki lokalizacyjne na wolnym CodeCamp. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Zamierzamy udostępnić program nauczania w większej liczbie języków, ale nie możemy jeszcze wyznaczyć żadnych terminów. Kilka ograniczeń operacyjnych, takich jak personel, aktywne podmioty wnoszące wkład i koszty serwerów, odgrywa rolę w stymulowaniu działań na rzecz internacjonalizacji (i18n) . +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Zamierzamy rozpocząć i18n wysiłków w tych językach: arabskim, portugalskim, Rosyjski i hiszpański (w żadnym konkretnym porządku) po opublikowaniu programu nauczania w Chinach. +### How can I report a new bug? -**Dlaczego skupiasz się najpierw na chińskim programie nauczania?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -Chiny są największymi regionami demograficznymi, wśród naszych nierodzimych odbiorców angielskiego. Obecnie mamy setki tysięcy użytkowników korzystających ze starej wersji platformy. Skupienie się na chińskim programie nauczania pozwoli nam oszacować logistykę związaną z i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Skoncentrujemy się na Ameryce Łacińskiej jako na regionie demograficznym dla Portugalii i Hiszpanii. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -W przewidywalnej przyszłości nie mamy żadnych planów dotyczących i18n w odniesieniu do innych języków niż wymienione powyżej. +### How can I report a security issue? -Nie zachęcamy państwa do pracy nad i18n nad powyższymi językami. Możemy zaakceptować wnioski o pull bez żadnych oczekiwań co do harmonogramu rozmieszczenia. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Jak mogę zgłosić nowy błąd? +### I am a student. Can I work on a feature for academic credits? -Jeśli uważasz, że znalazłeś błąd, najpierw przeczytaj artykuł ["Pomóż mi znaleźć błąd"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) i postępuj zgodnie z jego instrukcjami. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Jeśli jesteś pewien, że to nowy błąd, przejdź dalej i utwórz nowy problem na GitHubie. Upewnij się, że zawiera jak najwięcej informacji, abyśmy mogli odtworzyć błąd. Mamy wcześniej zdefiniowany szablon problemu, który pomoże Ci w tym zakresie. +We request you to plan ahead and work on code contributions with this in mind. -Pamiętaj, że wszystkie problemy, które szukają pomocy kodowania w wyzwaniu, zostaną zamknięte. Śledzenie problemów jest ściśle związane z koderem i dyskusjami. Zawsze gdy masz wątpliwości, powinieneś [zwrócić się o pomoc na forum](https://forum.freecodecamp.org) przed sporządzeniem raportu. +### What do these different labels that are tagged on issues mean? -### Jak mogę zgłosić problem bezpieczeństwa? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Proszę nie tworzyć problemów z GitHub dla problemów z bezpieczeństwem. Zamiast tego wyślij wiadomość e-mail na adres `security@freecodecamp.org` a my zajmiemy się nią natychmiast. +### Where do I start if I want to work on an issue? -### Jestem studentem, czy ja lub nasz zespół może pracować nad funkcją punktów akademickich? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Tak, pewnie. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -O ile jesteśmy otwarci na wszystkie wkłady, należy pamiętać, że nie jesteśmy w stanie zatwierdzić żadnych osi czasu, które mogą być wymaganiem na twoim kolegium lub uniwersytecie. Otrzymujemy wiele pull-requestów i kodów, od twórców wolontariuszy, a także szanujemy ich czas i wysiłki. Nie będziemy w stanie poświęcić żadnej PR szczególnej uwagi uczciwości wszystkim. +### I found a typo. Should I report an issue before I can make a pull request? -Prosimy, abyś zaplanował z wyprzedzeniem i pracował nad tą funkcją. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Co oznaczają te różne etykiety, które są oznakowane na problemy? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -Opiekunowie kodu [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) problemy i pull requesty w oparciu o ich priorytet, wagę i inne czynniki. [znajdziesz tutaj kompletny słownik ich znaczeń](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Gdzie zacznę, jeśli chcę pracować nad problemem? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Powinieneś przejść przez [**`pomoc chciała`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) lub [**`pierwsze timery tylko`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) problemy z szybkim przeglądem tego, co jest dostępne dla Ciebie. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!Wskazówka] **`pomoc chciała`** problemy do przechwytywania i nie musisz szukać uprawnień przed pracą nad nimi. Jednak problemy z **`tylko etykietą`** są zarezerwowane dla osób, które wcześniej nie przyczyniły się do darmowego koduCodeCamp. Jeżeli te kwestie nie są jasne co do tego, co należy zrobić, to możesz zadawać pytania w swoich uwagach. +### I am stuck on something that is not included in this documentation. -### Znalazłem typo, czy powinienem zgłosić problem, zanim będę mógł złożyć żądanie ściągnięcia? - -Dla typosów i innych zmian sformułowania możesz bezpośrednio otworzyć pull requesty bez tworzenia problemu. Kwestie są bardziej związane z omawianiem większych problemów związanych z kodeksem lub strukturalnymi aspektami programu nauczania. - -Proszę jednak wymienić szczegóły, kontekst itp. w obszarze opisu pull requesta, aby pomóc nam zrozumieć i sprawdzić Twój wkład nawet w przypadku drobnych zmian. - -### Jak uzyskać przypisany do mnie problem ? - -Zazwyczaj nie przypisujemy problemów nikomu innemu niż długoletni współtwórcy, aby uniknąć niejednoznacznych niepokazów. Zamiast tego realizujemy poniższą politykę, aby była sprawiedliwa dla wszystkich: - -1. Pierwszy pull request dla każdego problemu jest preferowany do połączenia. -2. W przypadku wielokrotnego pull requestów dla tej samej kwestii nadajemy priorytet jakości kodu w pull requests. - - Czy uwzględniłeś testy? - - Złapałeś wszystkie zastosowania? - - Czy upewniłeś się, że wszystkie testy przeszły i potwierdziłeś wszystko działa lokalnie? -3. I wreszcie, opowiadamy się za pobieraniem żądań, które są zgodne z naszymi zalecanymi wytycznymi. - - Czy śledzisz listę kontrolną Pull Request? - - Czy miarodajnie nazwałeś tytuł pull request? - -Nie potrzebujesz żadnych uprawnień do problemów oznaczonych jako `pomoc chciała` lub `pierwsze timery` jak wyjaśniono wcześniej. - -Postępuj ostrożnie zgodnie z wytycznymi i otwórz Pull Request. - -### Utknęłem w czymś, co nie jest zawarte w tej dokumentacji. - -**Możesz poprosić o pomoc w:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Cieszymy się, że pomagamy państwu w przyczynianiu się do dowolnego tematu, nad którym chciałbyś pracować. Możesz zadawać nam pytania dotyczące powiązanych tematów i z przyjemnością wyjaśnimy. Upewnij się, że szukasz swojego zapytania przed opublikowaniem nowego. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Bądź uprzejmy i cierpliwy. Nasza społeczność wolontariuszy i moderatorów zawsze potrafi Ci przewodniczyć przez Twoje zapytania. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Dodatkowa pomoc:** +**Additional Assistance:** -Jeśli masz pytania o stack, architekturę bazy, możesz dotrzeć do naszego zespołu deweloperskiego: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Personel | Wyślij wiadomość na forum | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | | Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | @@ -98,4 +79,4 @@ Jeśli masz pytania o stack, architekturę bazy, możesz dotrzeć do naszego zes | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | | Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Możesz wysłać e-mail do naszego zespołu deweloperskiego na: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Polish/_sidebar.md b/docs/i18n/Polish/_sidebar.md index 361a842f28..1b5bda2bdc 100644 --- a/docs/i18n/Polish/_sidebar.md +++ b/docs/i18n/Polish/_sidebar.md @@ -1,36 +1,39 @@ -- **Rozpoczęcie** - - [Wprowadzanie](index 'Przyczyń się do społeczności FreCodeCamp.org.') - - [Często zadawane pytania](FAQ.md) -- **Kod wpłaty** -- - [Skonfiguruj Free CodeCamp lokalnie](how-to-setup-freecodecamp-locally.md) - - [Otwórz Pull Request](how-to-open-a-pull-request.md) - - [Prace nad wyzwaniami w zakresie kodowania](how-to-work-on-coding-challenges.md) - - [Prace nad wyzwaniami wideo](how-to-help-with-video-challenges.md) - - [Prace nad tematem wiadomości](how-to-work-on-the-news-theme.md) - - [Prace nad motywem dokumentów](how-to-work-on-the-docs-theme.md) -- **Poradniki opcjonalne** - - [Złap wychodzące wiadomości lokalne](how-to-catch-outgoing-emails-locally.md) - - [Skonfiguruj freeCodeCamp na WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Instrukcje lotu** (dla personelu & Mody) - - [Podręcznik moderatora](flight-manuals/moderator-handbook.md) - - [Szablony odpowiedzi](flight-manuals/using-reply-templates.md) - - [Omówienie DevOps](devops.md) - - [Praca nad serwerami](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Nasza społeczność** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Forum dyskusyjne**](https://freecodecamp.org/forum/c/contributors) - - [**Czat Gittera**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Polish/devops.md b/docs/i18n/Polish/devops.md index c0eb4e8f14..46fb8b5382 100644 --- a/docs/i18n/Polish/devops.md +++ b/docs/i18n/Polish/devops.md @@ -1,75 +1,75 @@ -# Operacje dla programistów na darmowym CodeCamp.org +# DevOps Handbook -Ten przewodnik pomoże Ci zrozumieć nasz stos infrastruktury i sposób utrzymania naszych platform. Chociaż niniejszy przewodnik nie zawiera wyczerpujących szczegółów dotyczących wszystkich operacji, może on być wykorzystany jako punkt odniesienia dla Państwa zrozumienia systemów. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Wiedzmy, jeśli masz opinie lub zapytania i z przyjemnością wyjaśnimy. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## W jaki sposób tworzymy, przetestowujemy i wdrażamy bazę kodową? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Obejmuje to trzy etapy, które należy wykonać kolejno: +This involves three steps to be followed in sequence: -1. Nowe zmiany (zarówno poprawki jak i funkcje) są scalane w naszym głównym oddziale rozwoju (`master`) za pomocą pull requestów. -2. Zmiany te przeprowadza się poprzez szereg zautomatyzowanych testów. -3. Po przejściu testów wydamy zmiany (lub w razie potrzeby zaktualizuje) w celu wdrożenia naszej infrastruktury. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Budowanie ebazy kodowej - mapowanie gałęzi Git do wdrożeń. +#### Building the codebase - Mapping Git Branches to Deployments. -Zwykle [`główny`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (domyślna gałąź rozwojowa) jest scalona w [`gałąź`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) raz dziennie i jest uwalniana do odizolowanej infrastruktury. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -To jest wydanie pośrednie dla naszych programistów i wolontariuszy. Jest ona również znana jako "etap" lub "beta". +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Jest to identyczne z naszym żywym środowiskiem produkcyjnym w `freeCodeCamp.org`, inne niż przy użyciu oddzielnego zestawu baz danych, serwerów, proxy internetowych itp. Izolacja ta pozwala nam przetestować bieżący rozwój i cechy w scenariuszu „produkcji”, nie wpływając na zwykłych użytkowników głównych platform FreCodeCamp.org. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Gdy zespół deweloperów [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) jest zadowolony ze zmian na platformie testowej, te zmiany są przenoszone co kilka dni do gałęzi [`aktualnej produkcji`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current). +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -To jest ostateczna wersja, która przenosi zmiany na nasze platformy produkcyjne na freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Testowanie zmian - Testowanie integracji i akceptacji użytkownika. +#### Testing changes - Integration and User Acceptance Testing. -Stosujemy różne poziomy integracji i testów akceptacji w celu sprawdzenia jakości kodu. Wszystkie nasze testy są wykonywane przez oprogramowanie takie jak [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) i [Azure Ruropeline](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Mamy testy jednostkowe do testowania naszych rozwiązań wyzwań, interfejsów API serwera i użytkowników klientów. Pomagają nam one przetestować integrację pomiędzy różnymi komponentami. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!NOTE] Jesteśmy również w trakcie pisania testów użytkowników końcowych, które pomogą w replikowaniu scenariuszy prawdziwego świata, takich jak aktualizacja wiadomości e-mail lub wywołanie połączenia do API lub usług innych firm. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Łącznie te testy pomagają zapobiec powtórzeniu się problemów i upewnić się, że nie wprowadzimy błędu podczas pracy nad innym błędem lub funkcją. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Wdrażanie zmian - Przesyłanie zmian na serwery. +#### Deploying Changes - Pushing changes to servers. -Skonfigurowaliśmy oprogramowanie do ciągłej dostawy, aby wprowadzać zmiany do naszych serwerów rozwojowych i produkcyjnych. +We have configured continuous delivery software to push changes to our development and production servers. -Po przepychaniu zmian do chronionych gałęzi uwalniania automatycznie uruchamia się budowę rurociągu dla gałęzi. Budowa rurociągów jest odpowiedzialna za budowę artefaktów i przechowywanie ich w chłodni do późniejszego wykorzystania. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -Budowa rurociągu uruchamia odpowiedni rurociąg wydania, jeśli zakończy się pomyślnym uruchomieniem. Rurociągi wydania są odpowiedzialne za zbieranie artefaktów budowy, przenoszenie ich na serwery i przechodzenie na żywo. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Status kompilacji i wydań jest [dostępny tutaj](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Uruchamianie budowy, testowania i rozmieszczenia. +## Trigger a build, test and deploy -Obecnie tylko członkowie zespołu deweloperskiego mogą przepychać do gałęzi produkcyjnych. Zmiany w `produkcji*` gałęzie mogą lądować tylko poprzez szybkie połączenie w przód do [`przed`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!UWAGA] W nadchodzących dniach poprawilibyśmy ten przepływ do wykonania poprzez pull-requests, aby poprawić zarządzanie dostępem i przejrzystość. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Przesyłanie zmian do aplikacji testowych. +### Pushing changes to Staging Applications. -1. Skonfiguruj pilota poprawnie. +1. Configure your remotes correctly. ```sh - git zdalny -v + git remote -v ``` - **Wyniki:** + **Results:** ``` - origingit@github.com:raisedadead/freeCodeCamp.git (fetch) - origingit@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Upewnij się, że Twoja gałąź `` jest niesamowita i w synchronizacji z upstreamem. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master @@ -77,24 +77,24 @@ Obecnie tylko członkowie zespołu deweloperskiego mogą przepychać do gałęzi git reset --hard upstream/master ``` -3. Sprawdź, czy Travis CI jest przekazywany na gałęzi `główny` dla upstream. +3. Check that the Travis CI is passing on the `master` branch for upstream. - Testy [ciągłej integracji](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) powinny być zielone i PASSING dla `głównego` gałęzi. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
      Sprawdzanie statusu w Travis CI (zrzut ekranu) +
      Checking status on Travis CI (screenshot)
      - ![Sprawdź status budowy w Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
      - Jeśli to się nie powiedzie, powinieneś zatrzymać i zbadać błędy. + If this is failing you should stop and investigate the errors. -4. Potwierdź, że możesz utworzyć repozytorium lokalnie. +4. Confirm that you are able to build the repository locally. ``` - npm uruchom czysto i rozwiń + npm run clean-and-develop ``` -5. Przenieś zmiany z `mistrza` do `etapu produkcji` poprzez szybkie scalanie +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` git checkout production-staging @@ -102,126 +102,607 @@ Obecnie tylko członkowie zespołu deweloperskiego mogą przepychać do gałęzi git push upstream ``` - > [!NOTE] Nie będziesz w stanie wymusić wypchnięcia i jeśli przepisałeś historię w każdym razie, te polecenia będą się błędne. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Jeśli tak się stanie, być może zrobiłeś coś niepoprawnego i po prostu powinieneś zacząć od nowa. + > If they do, you may have done something incorrectly and you should just start over. -Powyższe kroki automatycznie uruchomi się na rurociągu budowy dla gałęzi `etap produkcji`. Gdy kompilacja zostanie zakończona, artefakty są zapisywane jako pliki `.zip` w chłodni do pobrania i wykorzystania później. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -Rurociąg uwalniania jest uruchamiany automatycznie, gdy nowy artefakt jest dostępny z podłączonego rurociągu budowy. Dla platform testowych ten proces nie wymaga ręcznego zatwierdzania, a artefakty są wysyłane na serwery CDN i API klienta. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP|label:Estimates] Zwykle kompilacja trwa ~20-25 minut, a następnie uruchomienie wydania, które zajmuje ~15-20 minut dla klienta, i ~5-10 minut aby API było dostępne na żywo. Od wypychania kodu do bycia na platformach do testowania, cały proces zajmuje łącznie **~35-45 minut**. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Ładowanie zmian w aplikacjach produkcyjnych. +### Pushing changes to Production Applications. -Proces ten jest w większości taki sam jak platformy testowe, z kilkoma dodatkowymi kontrolami. Chodzi o to, aby mieć pewność, że nie niszczymy nic na wolnym CodeCamp.org, który widzi setki użytkowników z niego korzystających w każdej chwili. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| NIE wykonuj tych poleceń, chyba że sprawdziłeś czy wszystko działa na platformie testowej. Nie powinieneś omijać ani pomijać żadnych testów testowania przed kontynuowaniem testu. | -|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Upewnij się, że Twoja gałąź `stopniowania produkcji` jest niesamowita i w trakcie synchronizacji z górnym biegiem czasu. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh - git checkout production staging + git checkout production-staging git fetch --all --prune git reset --hard upstream/production-staging ``` -2. Przenieś zmiany z `etapu produkcji` na `prąd produkcyjny` poprzez szybkie połączenie w przód +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` git checkout production-current - git scalge production-staging + git merge production-staging git push upstream ``` - > [!NOTE] Nie będziesz w stanie wymusić wypchnięcia i jeśli przepisałeś historię w każdym razie, te polecenia będą się błędne. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Jeśli tak się stanie, być może zrobiłeś coś niepoprawnego i po prostu powinieneś zacząć od nowa. + > If they do, you may have done something incorrectly and you should just start over. -Powyższe kroki automatycznie uruchomi się na rurociągu budowy dla gałęzi `prądu produkcyjnego`. Gdy budowniczy artefakt będzie gotowy, uruchomi on proces uwalniania. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP|label:Estimates] Zwykle kompilacja trwa ~20-25 minut. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Dodatkowe kroki dla działań kadrowych** +**Additional Steps for Staff Action** -Jeden z uruchomień wydania jest uruchomiony, członkowie zespołu deweloperów otrzymają automatyczny ręczny e-mail z interwencją. Mogą one _zatwierdzić_ lub _odrzucić_ uruchomienie wydania. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Jeżeli zmiany działają ładnie i zostały przetestowane na platformie testowej, można je zatwierdzić. Homologacja musi zostać udzielona w ciągu 4 godzin od uruchomienia zwolnienia, zanim zostanie automatycznie odrzucona. Administracja może uruchomić ponownie uruchomienie ręcznie dla odrzuconych uruchomień, lub poczekać na następny cykl zwolnienia. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Dla personelu: +For staff use: -| Sprawdź swój adres e-mail, aby uzyskać bezpośredni link lub [przejść do panelu wydania](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) po zakończeniu kompilacji. | -|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Gdy jeden z członków personelu zatwierdzi wydanie, rurociąg przepycha zmiany na żywo na serwery CDN i API freeCodeCamp.org. Zwykle zajmują około 15-20 minut dla klienta i około 5 minut dla serwerów API dostępnych na żywo. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP|label:Estimates] Uruchamianie wydania zajmuje zazwyczaj ~15-20 minut dla każdej instancji klienta i ~5-10 minut dla każdej instancji API, aby była dostępna na żywo. Od wypychania kodu do życia na platformach produkcyjnych cały proces zajmuje łącznie **~90-120 min** (nie licząc czasu oczekiwania na zatwierdzenie personelu). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Stan budowy, testowania i wdrożenia +## Build, Test and Deployment Status -Oto bieżący test, kompilacja i stan rozmieszczenia bazy. +Here is the current test, build and deployment status of the codebase. -| Typ | Oddział | Status | Pulpit | -|:------------------- |:------------------------------------------------------------------------------------------ |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------ | -| CI Testy | [`mistrz`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Status kompilacji Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Przejdź do panelu stanu](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| CI Testy | [`etapy produkcji`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Status kompilacji Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Przejdź do panelu stanu](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Zbuduj rurociąg | [`etapy produkcji`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Status kompilacji](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Przejdź do panelu stanu](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Rurociąg uwolnienia | [`etapy produkcji`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Przejdź do panelu stanu](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| CI Testy | [`prąd produkcyjny`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Status kompilacji Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Przejdź do panelu stanu](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Zbuduj rurociąg | [`prąd produkcyjny`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Status kompilacji](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Przejdź do panelu stanu](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Rurociąg uwolnienia | [`prąd produkcyjny`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Przejdź do panelu stanu](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Wczesny dostęp i testy beta +## Early access and beta testing -Witamy w przetestowaniu tych wydań w trybie **"publicznego beta testowania"** i uzyskujemy szybki dostęp do nadchodzących funkcji platformy. Czasami te funkcje/zmiany są określane jako **następne, beta, etap,** itd. wymiennie. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Twój wkład poprzez informacje zwrotne i raporty o błędach pomoże nam stworzyć platformy produkcyjne na `freeCodeCamp. rg` bardziej **odporny**, **spójny** i **stabilny** dla wszystkich. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Dziękujemy za zgłaszanie błędów, które napotkasz i pomoc w ulepszeniu freeCodeCamp.org. Jesteś skalisty! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Identyfikacja przyszłej wersji platform +### Identifying the upcoming version of the platforms -Obecnie publiczna wersja beta testowa jest dostępna na stronie: +Currently a public beta testing version is available at: -

      dev

      +

      freecodecamp.dev

      -> [!NOTE] Nazwa domeny jest inna niż **`freeCodeCamp.org`**. Ma to na celu zapobieganie indeksowaniu wyszukiwarek i unikanie dezorientacji dla regularnych użytkowników platformy. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identyfikacja obecnej wersji platform +### Identifying the current version of the platforms -**Obecna wersja platformy jest zawsze dostępna pod adresem [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -Zespół dev-team scala zmiany z gałęzi `produkcyjnej` na `produkcję, prąd` po ich wydaniu. Najlepszym zatwierdzeniem powinno być to, co widzisz na żywo na stronie. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Możesz zidentyfikować dokładną wersję, odwiedzając dzienniki budowy i wdrożenia dostępne w sekcji statusu. Alternatywnie możesz również wypchnąć nas w [kontrybucji na czacie](https://gitter.im/FreeCodeCamp/Contributors) w celu potwierdzenia. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Znane ograniczenia +### Known Limitations -Istnieją pewne znane ograniczenia i kompromisy podczas używania wersji beta platformy. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### Wszystkie dane / osobisty postęp na tych platformach beta `NIE zostanie zapisany ani przeniesiony` do produkcji. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Użytkownicy wersji beta będą mieli oddzielne konto od produkcji.** Wersja beta używa fizycznie oddzielnej bazy danych od produkcji. Daje nam to możliwość zapobiegania przypadkowej utracie danych lub zmianom. Zespół deweloperski może w razie potrzeby oczyścić bazę danych w tej wersji beta. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Nie ma gwarancji dotyczących czasu pracy i niezawodności platform beta. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Przewiduje się, że stosowanie będzie częste i w przypadku szybkich iteracji, czasami wielokrotnych razy dziennie. W rezultacie pojawi się nieoczekiwany czas przestoju lub uszkodzona funkcjonalność wersji beta. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Nie wysyłaj regularnych użytkowników na tę witrynę w celu potwierdzenia naprawienia +- #### Do not send regular users to this site as a measure of confirming a fix - Witryna beta jest i zawsze wspierała rozwój lokalny i testowanie, nic innego. Nie jest to obietnica co nadchodzi, ale gwiazdka tego, co się sprawdza. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### Strona znaku może wyglądać inaczej niż produkcja +- #### Sign page may look different than production - W Auth0 używamy lokatora testowego dla freecodecamp.dev i dlatego nie mają możliwości ustawiania domeny niestandardowej. To sprawia, że wszystkie wywołania zwrotne przekierowania i strona logowania pojawiają się w domenie domyślnej, takiej jak: `https://freecodecamp-dev.auth0.com/`. Nie ma to wpływu na funkcjonalność tak blisko produkcji, jak to możliwe. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Kwestie związane ze sprawozdawczością i pozostawienie opinii +## Reporting issues and leaving feedback -Proszę otworzyć nowe problemy do dyskusji i zgłaszania błędów. Możesz oznaczyć je jako **[`wydanie: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** dla triage'u. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Możesz wysłać e-mail do `dev[at]freecodecamp.org` jeśli masz jakieś zapytania. Ponieważ zawsze wszystkie luki w zabezpieczeniach powinny być zgłaszane do `zabezpieczeń[at]freecodecamp.org` zamiast publicznego trackera i forum. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

      https://amplify.nginx.com

      +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Polish/flight-manuals/moderator-handbook.md b/docs/i18n/Polish/flight-manuals/moderator-handbook.md deleted file mode 100644 index 829251b369..0000000000 --- a/docs/i18n/Polish/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,325 +0,0 @@ -# Oficjalny podręcznik moderatora darmowego CodeCamp. - -Pomoże to Ci moderować różne miejsca w naszej społeczności, w tym: - -- Problemy z GitHub & pull requesty -- Forum i czaty, grupy na Facebooku i inne miejsca spotkań online -- Wydarzenia międzyludzkie, takie jak grupy analityczne, hakatony i konferencje - -**Wszyscy moderatorzy darmowego CodeCamp są społecznością moderatorów. Oznacza to, że wierzymy, że nadzoruje pan dowolne z tych miejsc.** - -To powiedziawszy, możesz służyć jako moderator w dowolnym miejscu o największym zainteresowaniu. Niektórzy moderatorzy po prostu pomagają na GitHubie. Inni po prostu pomagają na forum. Niektórzy moderatorzy są aktywni wszędzie. - -Dolną linią jest to, że chcesz, abyś był moderatorem, i inwestuj swój rzadki czas w interesujące Cię miejsca. - -> [!NOTE] "Z wielką potęgą wiąże się wielka odpowiedzialność." - Wujek Ben - -Jako moderator temperament jest ważniejszy niż umiejętności techniczne. - -Słuchaj. Bądź pomocny. Nie nadużywaj swojej mocy. - -Darmowy CodeCamp jest społecznością sprzyjającą włączeniu społecznemu i musimy tak utrzymać. - -Mamy jeden kodeks postępowania, który reguluje całą naszą społeczność. Im mniej zasad, tym łatwiej im o nich pamiętać. Możesz przeczytać te zasady i zatwierdzić je do pamięci [tutaj](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderatorzy mają możliwość zamykania problemów i akceptowania lub zamykania pull requestów. - -Moderatorzy mają dwie podstawowe obowiązki w odniesieniu do GitHub: - -1. QA'ing i scalanie pull requestów -2. Ocena i reagowanie na kwestie - -## Moderacja Pull Requestów - -Pull Requests (PRs) to sposób, w jaki współtwórcy przesyłają zmiany do repozytorium freeCodeCamp. Ważne jest, abyśmy wykonywali zapewnienie jakości (QA) na pull requestów, zanim zdecydujemy, czy je połączyć, czy zamknąć. - -### Rodzaje Pull Requestów - -1. **Edycje instrukcji wyzwań** Są to zmiany w tekście wyzwań - Opis, Instrukcje lub Tekst testowy. Możesz również przejrzeć te prawa na GitHub i zdecydować, czy je połączyć. Musimy być nieco bardziej ostrożni w tej kwestii, ponieważ miliony ludzi spotkają się z tym tekstem, ponieważ pracują przez program nauczania freeCodeCamp. Czy pull request sprawia, że tekst staje się bardziej jasny bez przedłużania jego obowiązywania? Czy zmiany są istotne i nie są nadmiernie pedantyczne? Pamiętaj, że naszym celem jest jak najjaśniejsze i jak najkrótsze wyzwania. Nie są miejscem dla niejasnych szczegółów. Współtwórcy mogą również próbować dodać linki do zasobów do wyzwań. Możesz zamknąć te Pull Requesty i odpowiedzieć na nie w następujący sposób: - - > Dziękujemy za Pull Request. - > - > Zamykam ten pull request. Zamiast tego dodaj linki i inne szczegóły do odpowiedniego artykułu poradnika wyzwania. - > - > Jeśli uważasz, że nie mam racji podczas zamykania tego problemu, proszę otworzyć go ponownie i dodać dalsze wyjaśnienia. Dziękujemy i szczęśliwe kodowanie. - -2. **Edycje kodu wyzwania** Są to zmiany w kodzie w wyzwaniu - Challenge Seed, Challenge Solution, i Testowe Ciągi Ciągów. Te pull requesty muszą zostać wyciągnięte z GitHub i przetestowane na lokalnym komputerze, aby upewnić się, że testy wyzwań mogą być przesłane z bieżącym rozwiązaniem, i nowy kod nie wprowadza żadnych błędów. Niektórzy współtwórcy mogą spróbować dodać dodatkowe testy, aby objąć pedantyczne przypadki. Musimy zachować ostrożność, aby nie uczynić tego wyzwania zbyt skomplikowanym. Te wyzwania i ich testy powinny być jak najbardziej proste i intuicyjne. Oprócz algorytmu wyzwania i wywiad przed sekcją, uczniowie powinni być w stanie rozwiązać każde wyzwanie w ciągu około 2 minut. - -3. **Codebase Changes** Ten kod zmienia funkcjonalność samej platformy freeCodeCamp. Czasami współtwórcy próbują dokonywać zmian bez wyjaśnień, ale w przypadku zmian w kodzie musimy upewnić się, że istnieje prawdziwa potrzeba zmiany. Zatem te Pull Requesty powinny odnosić się do istniejącego problemu GitHub, w którym omawiane są przyczyny zmiany. Następnie możesz otworzyć Pull Request na swoim komputerze i przetestować je lokalnie. Po tym jak to zrobisz, jeśli zmiany wyglądają dobrze, nie łączymy ich jeszcze całkiem dobrze. Możesz skomentować pull request z napisem "LGTM", a następnie wspomnieć @raisedadead, aby mógł spojrzeć w końcu. - -### Jak scalić lub zamknąć pull requesty - -Po pierwsze, gdy wybierzesz Pull Request do QA, powinieneś do niego przypisać. Możesz to zrobić klikając link "przypisz siebie" poniżej części "przypisane" po prawej stronie interfejsu GitHub. - -W zależności od typu polecenia ściągnięcia jest ono zgodne z odpowiednimi zasadami wymienionymi powyżej. - -Przed połączeniem dowolnego Pull Request'u, upewnij się, że GitHub ma zielone znaki kontrolne dla wszystkiego. Jeśli jest jakiś X, najpierw zbadaj je i dowiesz się, jak je przekształcić w zielone znaki kontrolne. - -Czasami będzie konflikt połączenia. Oznacza to, że w innym Pull Request dokonano zmiany w dokładnie tej samej części tego samego pliku. GitHub ma narzędzie do rozwiązywania konfliktów scalonych bezpośrednio na GitHubie. Możesz spróbować zająć się tymi konfliktami. Wystarczy użyć swojej najlepszej oceny. Zmiany Pull Request będą na górze, a zmiany Master branch będą na dole. Czasami pojawią się tam zbędne informacje, które mogą zostać usunięte. Przed zakończeniem upewnij się, że usuniesz `<<<<<<`, `=====`, i `>>>>>>` , który Git dodaje do wskazania obszarów konfliktu. - -Jeśli pull request wygląda na gotowy do scalenia (i nie wymaga zatwierdzenia od @raisedadead), możesz przejść dalej i połączyć go. Upewnij się, że używasz domyślnej funkcji "Squash and Merge" na GitHub. Spowoduje to zniszczenie wszystkich pull requestów w dół w pojedynczy commit, co sprawia, że historia Git jest znacznie łatwiejsza do odczytania. - -Następnie powinieneś skomentować żądanie ściągnięcia, dziękując współtwórcy w sposób osobisty. - -Jeśli autor Pull Request jest "pierwszym współtwórcą", powinieneś im również pogratulować ich pierwszego połączenia Pull Request do repozytorium. Możesz przyjrzeć się górnemu prawemu rogowi ciała PR, aby określić pierwszego współtwórcę. Wyświetli `pierwszy wkład` jak pokazano poniżej: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -Jeśli pull request nie wygląda na gotowy do scalenia, możesz uprzejmie odpowiedzieć na pytanie autora, co powinny zrobić, aby przygotować go. Miejmy nadzieję, że odpowiedzą i doczekają się ich pull request. - -Często pull request będzie oczywiście niewielkim wysiłkiem. Często możesz to powiedzieć natychmiast, gdy współtwórca nie przeszkadza sprawdzania pól wyboru w szablonie Pull Request Template, lub użyto ogólnego tytułu pull request jak "made changes" lub "Update index. - -Istnieją również sytuacje, w których podmiot przekazujący dane próbuje dodać link do własnej strony internetowej, lub dołącz bibliotekę, którą sami utworzyli, lub ma niepoważną edycję, która nie służy do pomocy nikomu oprócz siebie. - -W obu tych sytuacjach powinieneś przejść do przodu i zamknąć ich pull request i odpowiedzieć tą standardową wiadomością: - -> Dziękujemy za otwarcie tego Pull Requesta. -> -> Jest to standardowa wiadomość powiadamiająca Cię, że przejrzeliśmy Pull Request i zdecydowaliśmy się go nie scalić. Będziemy mile widziać od ciebie przyszłe żądania ściągnięcia. -> -> Dziękujemy i szczęśliwe kodowanie. - -Jeśli potrzebujesz drugiej opinii na temat Pull Request, przejdź dalej i zostaw swoje komentarze na temat Pull Request, następnie dodaj etykietę "dyskusyjna" do pull requesta. - -## Moderowanie zgłoszeń GitHub - -freeCodeCamp jest aktywnym projektem open source. Każdego dnia pojawiają się nowe kwestie, z których wszystkie muszą być oczyszczone i oznaczone. - -### Rodzaje zgłoszeń GitHub - -1. **Prośby o pomoc Code**, dla których ludzie pomyłkowo stworzyli problemy z GitHub. Jeśli ktoś prosi o pomoc, wklej następującą wiadomość, a następnie zamknij problem. - - > Dziękujemy za zgłoszenie tego problemu. - > - > Jest to standardowa wiadomość informująca, że ten problem wydaje się być prośbą o pomoc. Zamiast poprosić o pomoc tutaj, kliknij przycisk \*\*"Pomoc"\*\* na wyzwaniu na FreCodeCamp, co pomoże Ci zadać pytanie we właściwej części forum. Wolontariusze na forum zazwyczaj udzielają odpowiedzi na pytania w ciągu kilku godzin i mogą pomóc w ustaleniu, czy istnieje problem z Twoim kodem lub testami wyzwania. - > - > Jeśli użytkownicy forum stwierdzą, że nie ma nic złego z Twoim kodem, możesz poprosić o ponowne otwarcie tego problemu. - > - > Dziękujemy i szczęśliwe kodowanie. - -2. **Problemy z błędami lub wyjaśnieniem** Spróbuj odtworzyć błąd, jeśli możesz. Jeśli nie, poproś ich o kroki do odtworzenia błędu i czy mają jakiekolwiek zrzuty ekranu, filmy lub dodatkowe szczegóły, które mogą pomóc ci w powtórzeniu problemu. Gdy tylko będziesz mógł odtworzyć problem - lub przynajmniej potwierdzić, że jest to problem legitowy - etykieta `potwierdziła`. Następnie: - -- Jeśli jest to prosta zmiana istniejącego wyzwania, etykieta tylko jako `pierwsze timery`, w przeciwnym razie etykieta jako `pomoc chciała`. Stosować w stosownych przypadkach inne etykiety. -- Jeśli problem jest bardziej znaczący, flaga jako `błąd`.   Jeśli pojawią się jakiekolwiek niejasności co do właściwego przebiegu działań w danej sprawie, Możesz otagować @raisedadead na temat problemu, uzyskać opinię na ten temat, a następnie dodać etykietę `Dyskusyjna`. - -3. **Duplikuj problemy** Jeśli problem jest taki sam jak inny zgłoszony problem, poprzedni zgłoszony problem powinien mieć pierwszeństwo. Flaga jako `Duplikuj`, wklej następującą wiadomość zastępującą `#XXXXX` numerem zgłoszenia, a następnie zamknij zgłoszenie. - - > Dziękujemy za zgłoszenie tego problemu. - > - > To jest standardowa wiadomość powiadamiająca, że ten problem wydaje się być bardzo podobny do wydania #XXXXX, więc zamykam go jako duplikat. - > - > Jeśli uważasz, że nie mam racji podczas zamykania tego problemu, proszę otworzyć go ponownie i dodać dalsze wyjaśnienia. Dziękujemy i szczęśliwe kodowanie. - -4. **Naprawiono w staging** Niektóre problemy mogły być już rozwiązane w stagingu, ale nie ma problemów z GitHubem z nimi związanych. Jeśli tak jest, możesz wkleić następującą wiadomość, zamknąć problem i dodać `status: rozwiązany/wysyłka`: - - > Dziękujemy za zgłoszenie tego problemu. - > - > Jest to standardowa wiadomość informująca Cię, że problem, o którym tutaj wspomniałeś, występuje w produkcji, ale został już ustalony na etapie. Oznacza to, że następnym razem, gdy nakłaniamy nasz sektor produkcyjny, problem ten powinien zostać rozwiązany. Z tego względu zamykam ten problem. - > - > Jeśli uważasz, że nie mam racji podczas zamykania tego problemu, proszę otworzyć go ponownie i dodać dalsze wyjaśnienia. Dziękujemy i szczęśliwe kodowanie. - -### Zamknij Stale, Nieaktualne, Nieaktywne zgłoszenia i Pull Requesty - -- „Stale Issues” lub „PR” to te, które nie widziały żadnej aktywności w PO przez 21 dni (3 tygodnie od ostatniej aktywności), ale dopiero po tym, jak moderator poprosił o więcej informacji/zmian. Mogą one być zamknięte w automatycznym skrypcie bota lub przez samych moderatorów. - -- Aktywność jest zdefiniowana jako: Komentarze żądające aktualizacji w PR i triagach, takie jak `status: wymagana aktualizacja` etykieta itp. - -- Jeżeli PO zwraca się o dodatkową pomoc, a nawet o czas, powyższe można złagodzić i zweryfikować po udzieleniu odpowiedzi. W każdym razie mody powinny wykorzystać swoją najlepszą ocenę do rozwiązania zaległego statusu PR. - -### Inne wytyczne dla moderatorów na GitHub - -Chociaż masz dostęp do zapisu repozytorium FreeCamp, **nigdy nie powinieneś wysyłać kodu bezpośrednio do repozytoriów FreCodeCamp**. Cały kod powinien wprowadzić kodową bazę FreeCampa w formie pull request z forku repozytorium. - -Ponadto nigdy nie powinieneś akceptować własnych PR. Muszą być QA przez innego moderatora, tak jak w przypadku każdego innego PR. - -Jeśli zauważysz, że ktoś łamie [kod postępowania](https://code-of-conduct.freecodecamp.org) w sprawach GitHub, lub otwieranie pull requestów ze złośliwymi treściami lub kodem, e-mail dev@freecodecamp. rg z linkiem do obraźliwego pull request i możemy rozważyć całkowite zablokowanie ich w darmowej organizacji GitHub CodeCamp. - -# Moderacja forum - -Jako moderator pomagasz utrzymać naszą społeczność w przyjemnym miejscu dla każdego, kto może się uczyć i uzyskać pomoc. Będziesz zajmować się zgłoszonymi postami i obsługiwać spam, poza tematem i inne nieodpowiednie rozmowy. - -Zauważ, że gdy jesteś moderatorem na forum, zaczniesz widzieć niebieskie wskazówki moderatora o członkach forum, tak jak "to pierwszy raz [person] opublikował - powitajmy ich w społeczności! lub "[person] nie napisał w długim czasie - powitajmy ich ponownie." - -![Niebieska wiadomość tekstowa mówiąca "to pierwszy raz [person] opublikowała - powitajmy ich w społeczności!](https://i.imgur.com/mPmVgzK.png) - -Są to dla Ciebie możliwości powitania ich i sprawiają, że czują się one wyjątkowe. Nigdy nie wiesz, która osoba, która jest marginalnie zaangażowana, może stać się naszym następnym super-pomocnikiem, pomagając wielu innym osobom w ich podróżowaniu kodowaniem. Nawet najmniejsza życzliwość może wywołać kaskadę dobrych czynów. - -### Usuwanie postów na forum - -Moderatorzy forum mają możliwość usuwania postów użytkownika. Powinieneś to zrobić tylko w następujących przypadkach: - -1. Ktoś opublikował obrazek pornograficzny lub graficzny. -2. Ktoś opublikował link lub kod, który jest złośliwy i może zaszkodzić innym kamerom, którzy klikają na niego. -3. Ktoś zalał wątek z wieloma wiadomościami spamu. - -### Postępowanie ze spamem - -W przypadku pierwszego spamu użytkownika wyślij mu wiadomość wyjaśniającą problem i usuń link lub wpis, stosownie do przypadku. Pozostaw notatkę na profilu użytkownika, wyjaśniając działania, które wykonałeś. Jeśli problem będzie się powtarzał, należy postępować zgodnie z powyższym procesem. Cicho zablokuj użytkownikowi postowanie (przy użyciu opcji ciszy w panelu Administratora użytkownika), a następnie wyślij ostrzeżenie wraz z kodeksem postępowania. Zaznacz pole w prywatnej wiadomości wskazującej, że Twoja wiadomość jest „oficjalnym ostrzeżeniem”. - -Możesz zadawać pytania i zgłaszać incydenty w [sekcji forum pracowników](https://forum.freecodecamp.com/c/staff). - -### Postępowanie z rozmowami poza tematem - -Wpisy lub tematy, które wydają się znajdować się w niewłaściwym miejscu, mogą zostać przegrupowane lub przegrupowane na dowolne właściwe. - -W wyjątkowych okolicznościach może być właściwe, aby moderator przekształcił dyskusję w wiele wątków. - -Ponownie, jeśli masz jakieś problemy lub pytania, zrób post z czynnościami w kategorii Kostaryki, i otaguj innego moderatora, jeśli chcesz, aby przejrzeli swoje działania moderacyjne. - -### Niepełnoletni użytkownicy - -Nasz Regulamin wymaga od użytkowników darmowego CodeCamp w wieku co najmniej 13 lat. W przypadku gdy użytkownik wykaże, że ma mniej niż 13 lat, wyślij im poniższą wiadomość i usuń swoje konto na forum (jeśli usunięcie nie jest dostępne, zawieszenie konta jest wystarczające). Następnie napisz do [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) lub [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org), aby usunąć również konto użytkownika freeCodeCamp. - -```markdown -SUBJECT: Użytkownicy poniżej 13 roku życia nie mogą korzystać z forum na każdy Regulamin - -Zauważyliśmy, że jesteś w wieku poniżej 13 lat. Za [FreCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), musisz mieć co najmniej 13 lat, aby korzystać z witryny lub forum. Usuniemy zarówno Twoje konto FreeCamp, jak i Twoje konto na forum. Ograniczenie to jest dla nas zgodne z prawem Stanów Zjednoczonych. - -Proszę dołączyć ponownie po osiągnięciu wieku co najmniej 13 lat. - -Dziękuję za zrozumienie. -``` - -# Moderacja Facebooka - -Jeśli widzisz cokolwiek co wydaje się naruszać nasz [Kodeks postępowania](https://code-of-conduct.freecodecamp.org/), powinieneś go natychmiast usunąć. - -Czasami ludzie będą wysyłać rzeczy, które ich zdaniem są zabawne. Nie zdają sobie sprawy, że to, co oni mówili, ani to, co dzielili mogą być interpretowane jako obraźliwe. W takich przypadkach ich post powinien zostać usunięty, ale osoba, która go opublikowała, nie musi być zakazana. Dzięki usunięciu ich postów będą mieli nadzieję, że wiedzą, że ich publikacja była niewłaściwa. - -Jeśli jednak jest to rażąca obraźliwość, której nie można w rozsądny sposób przypisać różnicy kulturowej lub błędnemu zrozumieniu języka angielskiego, wtedy powinieneś zdecydowanie rozważyć zablokowanie użytkownika z grupy Facebook. - -# Moderacja Discorda - -Oto jak moderatorzy zajmują się łamaniem naszego [Kodeksu postępowania](https://code-of-conduct.freecodecamp.org/) na Discordzie: - -1. **Upewnij się, że miało to na celu naruszenie Kodeksu Postępowania.** Nie wszystkie naruszenia kodeksu postępowania były jako takie. Nowy kamer może wysłać dużą ilość kodu dla pomocy, nieświadomy tego, że można to uznać za spamowanie. W takich przypadkach możesz poprosić ich o wklejenie kodu za pomocą takich usług jak Codepen czy Pastebin. - -2. **Jeżeli kamer wyraźnie narusza kodeks postępowania, moderator będzie postępował w następujący sposób:** - -- Zawieś obraźliwego kamera, ale nie ostrzegaj ani nie gratuluj ich. Zamiast tego niechętnie nadaj im zawieszoną rolę na Discordzie, a następnie wyślij im następujący komunikat: - -``` -Jest to standardowa wiadomość powiadamiająca Cię, że musiałem czasowo zawiesić rozmowę na serwerze Discorda FreeCodeCamp. - -Jestem moderatorem działającym w imieniu naszej społeczności open source. Mogę rozważyć usunięcie twojej zawiesiny, ale muszę najpierw wykonać następujące 3 kroki: - -1. Przeczytaj nasz kodeks postępowania: https://code-of-conduct.freecodecamp.org/ -2. Napisz do mnie ponownie, potwierdzając, że zakończyłeś czytanie. 3. Wyjaśnij, dlaczego uważasz, że Cię zawiesiłem, i dlaczego powinienem usunąć twoje zawieszenie. -``` - -- Zgłoś krótkie podsumowanie wydarzenia i odpowiedź na nie w kanale #admin. Oto przykład takiego podsumowania: - -``` -Zawieszono: _@username_ -Powód: _Spamming, trolling_ -Dowód: _Jeden lub więcej linków do obraźliwych wiadomości_ -CoC: _Wysłane_ -``` - -- Raport o usunięciu zawieszenia powinien wyglądać następująco: - -``` -Usunąłem zawieszenie z ` @username `. Wysłałem im kodeks postępowania. Właśnie dziś zdali sobie sprawę, że zostali zawieszeni i przeprosieni za to, co zrobili. -``` - -- Na podstawie odpowiedzi sprawców moderator zdecyduje, czy usunąć zawieszenie z obraźliwego kamery. Jeżeli wydają się być szacowne i apologetyczne, moderator może usunąć zawieszenie. W ramach polityki moderatorzy będą uprzejmie w trakcie tego procesu, bez względu na to, jak źle zachowywał się oburzający kamper. Jeśli nie są one zachowane lub nie są skłonne zaakceptować CoC, po zawieszeniu należy wprowadzić zakaz z serwera Discord. Użyj tego samego podsumowania, co powyżej, ale zamiast "Zawieszenie:" zamienić "Zablokowane:". - -3. **Jak zakazać lub odbanować** - -- Aby zbanować kogoś, kliknij prawym przyciskiem myszy na ich nazwę użytkownika/zdjęcie profilowe i wybierz "Ban ". Otrzymasz możliwość usunięcia ich poprzednich wiadomości - wybierz "Nie usuwaj niko", ponieważ komunikaty powinny pozostać obecne jako rekordy historyczne. -- Jeśli zdecydujesz się zakazać kogoś, oznacza to, że nie chcą przestrzegać naszego kodeksu postępowania. Dlatego odbanowanie kamery powinno rzadko występować. Jeśli jednak zajdzie taka potrzeba, możesz to zrobić klikając na nazwę serwera, wybierając "Ustawienia serwera", wybranie "Bans", wybranie użytkownika, który chcesz odbanować i kliknięcie "Cofnij ban". - -Bany Discorda są globalne - nie możesz zbanować użytkownika z określonego kanału, tylko z całego serwera. - -4. **Usuwanie wiadomości** Moderatorzy mają możliwość usuwania wiadomości na Discordzie. Powinny one korzystać z tej możliwości jedynie w czterech bardzo szczególnych sytuacjach: - -- Ktoś opublikował obrazek pornograficzny lub graficzny. -- Ktoś opublikował link lub kod, który jest złośliwy i może zaszkodzić innym kamerom, którzy klikają na niego. -- Ktoś zalał czat mnóstwem wiadomości spamowych w tak skrajnym stopniu (zazwyczaj dotyczących botów), że czat jest całkowicie nieużyteczny. -- Ktoś opublikował reklamę / lub wiadomość promującą własną promocję / obraz (media społecznościowe). - -We wszystkich innych sytuacjach - nawet w sytuacjach, w których kodeks postępowania jest naruszony - Moderatorzy nie powinni usuwać wiadomości, ponieważ stanowią one ważny historyczny rekord. Kiedy usuniesz wiadomość, upewnij się, że najpierw wykonasz zrzut ekranu! Zrzut ekranu może być zalogowany na kanale #mod-log, ale dla #activity-log wystarczy powiedzieć, że dowody zostały "usunięte z powodu poufnych treści". Uwaga: Jeśli wiadomość zawiera materiały, które byłyby niezgodne z prawem do wykonania zrzutu ekranu, skopiuj link do wiadomości - podaj ten link do @raisedadead, aby przesłać go do zespołu Zaufania i Bezpieczeństwa Discorda. - -5. **Nie używaj @everyone ani @here** Nie używaj @everyone ani @here w żadnych okolicznościach! Każda osoba w tym pokoju czatu otrzyma powiadomienie. W niektórych przypadkach dziesiątki tysięcy ludzi. Zamiast tego, jeśli chcesz, aby ludzie widzieli ogłoszenie, możesz przypiąć je do kanału, aby każdy mógł je przeczytać. - -6. **Nie grożą zbanowaniem lub zawieszeniem** Jeśli kamuflaż łamie kod postępowania, nie grożą zakazem lub zawieszeniem ich i nigdy nie ostrzegają o nich publicznie. Zamiast tego porozmawiaj z nimi prywatnie lub wyślij im pamięć DM i wydaj zawieszenie (na podstawie powyższego protokołu). Nikt inny na tym kanale nie musi wiedzieć, że zbanowałeś / zawiesiłeś osobę - kamery mogą zobaczyć podsumowanie w kanale #activity-log jeśli chcą zachować te informacje. Jeśli naruszenie było wyraźnie niezamierzone i nie daje podstaw do zawieszenia lub prywatnej rozmowy, uświadomić obraźliwemu kamerzowi jego czynności, nie sprawiając, że znajdzie się on jako ostrzeżenie. Na przykład: - -- Kamery dodają ścianę kodu aby poprosić o pomoc - - Moderator: @nazwa użytkownika użyj Codepen lub Pastebin podczas publikowania dużych ilości kodu. - -- Lub jeśli naprawdę musisz wyjaśnić, dlaczego: - - Moderator: @username Proszę, użyj Codepen lub Pastebin podczas publikowania dużych ilości kodu, ponieważ zakłóca czat dla wszystkich i może być uznany za spamowanie zgodnie z naszym kodeksem postępowania. - -- W przypadku łagodnych i niezamierzonych naruszeń kodeksu postępowania - - Moderator: To przyjazne przypomnienie dla wszystkich o stosowaniu się do kodeksu postępowania: https://code-of-conduct.freecodecamp.org/ - -7. **Nie przeszkadzaj o byciu moderatorem** Nie widzisz siebie powyżej społeczności. Jesteś społecznością. Społeczność zaufała Tobie za pomoc w ochronie czegoś rzadkiego, co wszyscy dzielimy - _powitalne miejsce_ dla nowych programistów. Jeśli chcesz być moderatorem, ludzie mogą odczuwać niepokój wokół Ciebie, tak samo jak ludzie mogą odczuwać niepokój wokół funkcjonariusza policji, nawet jeśli nic nie robią. To jest czysta ludzka natura. - -8. **Nie przeszkadzaj innym moderatorom** Jeśli nie zgadzasz się z działaniem moderatora, porozmawiaj z nimi prywatnie lub podnieś go na kanale #mod-chat. Nigdy nie nadpisuj zakazu i nigdy nie przeszkadzać innym(-ym) moderatorowi(-om) publicznie. Zamiast tego kierować dyskusją na mod-chat i przekonać moderatora, że sami powinni odwrócić swój zakaz lub zmienić swój punkt widzenia. Pamiętaj: wszyscy jesteśmy w tym samym zespole. Chcemy godnej roli moderatorów i przedstawić jednolity front. - -9. **Porozmawiaj z innymi moderatorami** Mamy miejsce tylko dla moderatorów. Użyj tego! Jeśli czujesz się niewygodny jak radzić sobie z określoną sytuacją, poproś innych moderatorów o pomoc. Jeśli uważasz, że coś należy przedyskutować, zrób to. Jesteś częścią zespołu i cenimy wkład każdego członka zespołu! Nawet jeśli całkowicie nie zgadzasz się z czymkolwiek w tych wytycznych lub w kodeksie postępowania! - -10. **Tymczasowo nieaktywny** Jeśli nie będziesz aktywny jako moderator przez jakiś czas z powodu wakacji, choroba lub inny powód, upewnij się, że inni znają się na kanale #mod-chat. Tak więc wiemy czy możemy liczyć na to, że będziesz regularnie aktywny na serwerze. - -# Jak zostać moderatorem - -Jeśli pomagasz ludziom w społeczności konsekwentnie z upływem czasu, nasz zespół moderatorów ostatecznie uwzględni się, a jeden z nich wspomni Cię jako możliwego moderatora dla [naszego personelu](https://forum.freecodecamp.org/g/Team). Nie ma skrótów do moderatora. - -Jeśli jesteś zatwierdzony, dodamy Cię do naszych Zespołów Moderatorów na [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), itd. - -> [!NOTE] > **Dla GitHub:** Po zaakceptowaniu Cię jako moderatora, otrzymasz zaproszenie do repozytorium Github. Aby zaakceptować zaproszenie, musisz przejść do [darmowego CodeCamp GitHub Organizacji](https://github.com/orgs/freeCodeCamp/invitation). Jest to wymagane dla nas, abyśmy mogli dać Ci dostęp do zapisu w niektórych z naszych repozytoriów. - -# Jak przechodzimy na emeryturę nieaktywnych moderatorów - -Pamiętaj, że często usuwamy mody, które uważamy za nieaktywne. Kiedy to zrobimy, wyślemy następujący komunikat: - -> To jest standardowa wiadomość powiadamiająca Cię, ponieważ nie jesteś ostatnio aktywnym moderatorem, usuwamy Cię z naszego zespołu moderatora. Głęboko doceniamy Twoją pomoc w przeszłości. - -> Jeśli uważasz, że zrobiliśmy to w błędzie, lub kiedy będziesz gotowy wrócić i przyczynić się do zwiększenia wkładu, po prostu odpowiedz na tę wiadomość, dając mi znać. - -# Jak działa nasz pokój współtwórców - -Każdy jest mile widziany w [pokoju współtwórców na naszym Discordzie](https://discord.gg/KVUmVXA). To wyznaczone miejsce na czacie dla moderatorów i innych kamerów, które na dowolny sposób przyczyniają się do naszej społeczności, w tym za pośrednictwem grup analitycznych. - -Naszym założeniem jest to, że współtwórcy przeczytają wszystko w tym pomieszczeniu, które bezpośrednio wspomina o nich `@username`. Wszystko inne jest opcjonalne. Ale możesz czytać, cokolwiek tam wpisuje i interakcja. - -# Postępowanie z pracownikami kontraktowymi - -Do Ciebie mogą zwracać się organizacje, które chcą w jakiś sposób współpracować lub współmarki z FreCodeCamp. Gdy zdajesz sobie sprawę, że jest to to, co się po nim stanie, przestań z nimi rozmawiać i powiedz im na adres quincy@freecodecamp.org. On ciągle otrzymuje takie propozycje i jest w najlepszej sytuacji, aby ocenić, czy takie relacje będą warte tego dla naszej społeczności (a to niezmiernie nie). - -# Postępowanie z badaniami zdrowotnymi (umysłowymi) - -Mogą wystąpić sytuacje, w których użytkownicy szukają porady lekarskiej lub zajmują się kwestiami zdrowia psychicznego i szukają wsparcia. W ramach polityki należy unikać prywatnego mówienia o tych kwestiach. Jeżeli w pewnym momencie sytuacja będzie odzwierciedlona w fCC, chcielibyśmy odnotować rozmowę (rozmowy). Proszę jasno powiedzieć, że nie jesteśmy specjalistami medycznymi i że zachęcasz użytkownika do znalezienia profesjonalnej pomocy. Tak trudne, jak niekiedy może to być możliwe, unikaj jakichkolwiek wskazówek lub porad poza wskazaniem użytkownika w kierunku profesjonalnej pomocy! - -Jeśli tak się dzieje na Discordzie: zawiesić użytkownika. Nie chodzi o ich karanie! Zawieszenie użytkownika utworzy prywatny kanał, który jest dostępny tylko dla użytkownika i zespołu. Przyniesie to korzyści zarówno użytkownikowi, jak i fCC na kilka sposobów: - -- Użytkownik ma gwarancję prywatności -- Czat publiczny nie jest już zakłócony -- Inni członkowie drużyny mogą dostać się, jeśli jesteś niewygodny w sobie poradzi sobie z sytuacją - -> [!UWAGA] Zawieszenie użytkownika automatycznie daje mu wiadomość o czytaniu naszego kodeksu postępowania. Upewnij się, że poinformujesz użytkownika, że zawiesiłeś go, aby dać mu trochę prywatności i że nie są karane. To bardzo ważne! Bezwzględnie chcemy unikać dawania użytkownikom pojęcia, że są karani za dotarcie do nas i otrzymanie pomocy! - -Jeśli uważasz, że użytkownik może ponownie dołączyć do społeczności, kliknij prawym przyciskiem myszy na kanał prywatny i skopiuj ID. Umieść następującą wiadomość w #mod-log: - -> Odesłana opinia lekarska: - -Następnie można usunąć zawiesinę z użytkownika, tak jak zwykle. - -Pomocne URL: - -http://www.suicide.org/international-suicide-hotlines.html - -# Notatka o wolności słowa - -Czasami ludzie będą bronić czegoś ofensywnego lub podżegającego, co powiedzieli jako "wolność słowa”. - -Ten komiks XKCD doskonale podsumowuje myśli większości społeczności na temat wolności słowa. Więc jeśli ktoś broni czegoś, co mówi jako "wolna wypowiedź", czuje się do nich wolny. - -
      - -Dziękujemy za przeczytanie tego i dziękujemy za pomoc społeczności programistów! diff --git a/docs/i18n/Polish/flight-manuals/using-reply-templates.md b/docs/i18n/Polish/flight-manuals/using-reply-templates.md deleted file mode 100644 index 66b1362a78..0000000000 --- a/docs/i18n/Polish/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,128 +0,0 @@ -# Używanie szablonów odpowiedzi - -Są to niektóre ze standardowych szablonów odpowiedzi, które możesz używać podczas przeglądania pull requestów i triaging problemów. - -> Możesz zrobić swój własny z wbudowaną funkcją [**Zapisane odpowiedzi**](https://github.com/settings/replies/) lub użyj poniższych odpowiedzi. - -### Dziękujemy - -```markdown -Dziękujemy za twój wkład na stronę! 👍 -Z przyjemnością akceptujemy te zmiany i oczekujemy na przyszłe wkłady. 🎉 -``` - -### Dziękuję i gratuluję - -> Za podziękowanie i zachęcanie do udziału po raz pierwszy. - -```markdown -Witaj @username. Gratulacje za pierwsze Pull Request (PR)! 🎉 - -Dziękujemy za twój wkład na stronę! 👍 -Z przyjemnością akceptujemy te zmiany i oczekujemy na przyszłe wkłady. 📝 -``` - -### Błąd kompilacji - -```markdown -Witaj @username - -Chcielibyśmy połączyć Twoje zmiany, ale wygląda na to, że wystąpił błąd z wersją Travis CI. ⚠️ - -Po rozwiązaniu tych problemów będziemy mogli przejrzeć Twój PR i scalić go. 😊 - ---- - -> Odwołaj się do [przewodnika stylu pisania artykułów](https://github. om/freeCodeCamp/freeCodeCamp#article-title) dla tego repozytorium przy prawidłowym formatowaniu artykułu tak, aby Twój Travis CI kompilował przejazdy. ✅ -> -> Ponadto na GitHub jest dobrą praktyką pisania krótkiego opisu zmian podczas tworzenia PR. 📝 -``` - -### Synchronizuję Fork - -> Kiedy PR nie jest aktualny z gałęzią `główną`. - -``````markdown -Witaj @username - -Chcielibyśmy połączyć Twoje zmiany, ale wygląda na to, że wystąpił błąd z wersją Travis CI. ⚠️ - -```bash -Błąd: ENOTDIR: nie katalog, otwórz 'src/pages/java/data-abstraction/index.md' -`````` - -Ten konkretny błąd nie był spowodowany twoim plikiem, ale był starym błędem spowodowanym przez połączenie wadliwego kodu z gałęzią `master`. Od tego czasu zostało ono rozwiązane. - -Aby przejść do kompilacji, będziesz musiał zsynchronizować najnowsze zmiany z `głównej` gałęzi `freeCodeCamp/freeCodeCamp`. - -Używając wiersza poleceń, możesz to zrobić w trzech prostych krokach: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -Jeśli używasz GUI, możesz po prostu `dodać nowego pilota...` i użyć linku `git://github.com/freeCodeCamp/freeCodeCamp.git` z góry. - -Kiedy zsynchronizujesz fork i przejdziesz do budowy, będziemy mogli przejrzeć Twój PR i go scalić. 😊 - ---- - -> Odwołaj się do [Synchronizowania forka](https://help.github.com/articles/syncing-a-fork/) na GitHub, aby uzyskać więcej informacji na temat tego, jak aktualizować fork z repozytorium upstream. 🔄 -> -> Ponadto jest to dobra praktyka na GitHub do pisania krótkiego opisu zmian podczas tworzenia PR. 📝 -`````` - -### Scalanie konfliktów - -> Gdy PR łączy konflikty wymagające rozwiązania.1 - -```markdown -Hey @username - -Chcielibyśmy połączyć Twoje zmiany, ale wygląda na to, że masz pewne konflikty scalania. - -⚠️ - -Po rozwiązaniu tych konfliktów będziemy mogli przejrzeć twój PR i scalić go. 😊 - ---- - -> Jeśli nie znasz procesu konfliktów scalania, Przeglądaj poradnik GitHub na ["Rozwiązując konflikt scalania"](https://help. ithub.com/articles/resolving-a-merge-flict-on-github/). 🔍 -> -> Ponadto na GitHub jest dobrą praktyką do pisania krótkiego opisu zmian podczas tworzenia PR. 📝 -`````` -1 Jeśli pierwszy współtwórca ma konflikt scalony, opiekunowie rozwiążą dla nich konflikt. - -### Duplicate - -> Gdy PR jest powtarzalny lub duplikat. - -```markdown -Witaj @username - -Wygląda na to, że podobne zmiany zostały już wcześniej zaakceptowane dla tego artykułu, który edytujesz, przepraszamy za to. 😓 - -Jeśli masz więcej do dodania, prosimy o otwarcie nowego PR. - -Jeszcze raz dziękuję! 😊 - ---- - -> Jeśli masz jakiekolwiek pytania, skontaktuj się z nami [Gitter](https://gitter.im/FreeCodeCamp/Contributors) lub skomentuj poniżej. 💬 -``` - -### Zamknięcie nieprawidłowych pull requestów - -> Gdy PR jest nieprawidłowy. - -```markdown -Witaj @username - -Nie dodałeś żadnych treści, zamkniemy ten PR i oznacz go jako `invalid`. 😓 - -Możesz otworzyć kolejny PR! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Polish/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Polish/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 9c4a9776b7..0000000000 --- a/docs/i18n/Polish/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,478 +0,0 @@ -# Flight Manual for working on Virtual Machines - -Jako członek personelu lub zespół deweloperski, Być może otrzymałeś dostęp do naszych dostawców usług w chmurze, takich jak Azure, Ocean Cyfrowy itp. - -Oto kilka poręcznych poleceń, które możesz użyć do pracy na maszynach wirtualnych (VM), na przykład przeprowadzanie aktualizacji utrzymania lub prowadzenie ogólnych prac konserwacyjnych. - -# Get a list of the VMs - -> [!NOTE] Podczas gdy masz już dostęp SSH do VM, sam ten nie pozwoli Ci wyświetlić VM, chyba że otrzymasz również dostęp do portali w chmurze. - -## Azure - -Zainstaluj Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Zainstaluj Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Uwierzytelnianie i przełączanie kontekstów: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. zapewni, że maszyna wirtualna jest aktualizowana z najnowszymi poprawkami zabezpieczeń. - -> [!WARNING] Before you run these commands: -> -> - Upewnij się, że komputer VM został całkowicie zabezpieczony i nie działa czynności po zainstalowaniu. -> - Jeśli aktualizujesz pakiety VM, które już obsługują aplikację, upewnij się, że aplikacja została zatrzymana / zapisana. Aktualizacje pakietów spowodują przepustowość sieciową, pamięć i/lub użycie procesora, co prowadzi do przerw na uruchomionych aplikacjach. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -Używamy instancji Zrównoważonego Obciążenia (Azure Load Balancer) dla naszych serwerów . Te serwery obsługują NGINX, które odwrócą cały ruch do freeCodeCamp.org z różnych aplikacji działających na własną infrastrukturę. - -Konfiguracja NGINX jest dostępna w [tym repozytorium](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH i wprowadzają zmiany niezbędne dla poszczególnych instancji. - -Jeśli nie używałeś konfiguracji cloud-init poprzednio użyj poniższych dla instrukcji konfiguracji NGINX i stron błędów: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Pobierz certyfikaty pochodzenia Cloudflare z bezpiecznej pamięci i zainstaluj w wymaganych miejscach. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. W razie potrzeby możesz również dodać VM, aby załadować pulę zaplecza balancera. - -## Aktualizowanie instancji (konserwacja) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

      https://amplify.nginx.com

      -## Updating Instances (Maintenance) - -Zmiany konfiguracji do naszych instancji NGINX są utrzymywane na GitHub, powinny być rozmieszczone na każdej instancji jak tak: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Przetestuj i odśwież konfigurację [sygnałami](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Aktualizowanie instancji (konserwacja) - -```console -## Rejestrowanie i monitorowanie - -```console -logi pm2 -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. może to być aktualizacja krocząca lub ręczna aktualizacja. Późniejsze jest niezbędne podczas zmiany zależności lub dodawania zmiennych wirowych. - -> [!DANGER] Zautomatyzowane rurociągi nie obsługują aktualizacji zależności w minucie. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. nie musisz uruchamiać tych poleceń. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Rozpocznij instancje zastępcze dla klienta sieci web, będą one aktualizowane za pomocą artefaktów z pilotki Azure. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - client-start-primary.sh --name client-primary - echo "serve -c . /../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary. h - pm2 usuń klient-drugorzędny - pm2 start ./client-start-drugorzędny.sh --name klient-drugorzędny -``` - -## Aktualizowanie instancji (konserwacja) - -```console -## Rejestrowanie i monitorowanie - -```console -logi pm2 -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. może to być aktualizacja krocząca lub ręczna aktualizacja. Późniejsze jest niezbędne podczas zmiany zależności lub dodawania zmiennych wirowych. - -> [!DANGER] Zautomatyzowane rurociągi nie obsługują aktualizacji zależności w minucie. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. nie musisz uruchamiać tych poleceń. These are here for documentation. diff --git a/docs/i18n/Polish/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Polish/how-to-catch-outgoing-emails-locally.md index a1b2da4230..397ea3382a 100644 --- a/docs/i18n/Polish/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Polish/how-to-catch-outgoing-emails-locally.md @@ -1,75 +1,75 @@ -> **Uwaga:** Jest to **opcjonalny** krok i jest wymagany tylko podczas pracy z workflowami wiadomości e-mail +> **Note:** This is an **optional** step and is required only when working with email workflows -## Wprowadzanie +## Introduction -Niektóre workflowy e-mail, takie jak aktualizacja adresu e-mail użytkownika, wymagają back-end api-server do wysyłania wychodzących wiadomości. Alternatywa do korzystania z dostawcy usług e-mail do wysyłania aktualnych wiadomości e-mail, Mailhog jest narzędziem deweloperskim do testowania wiadomości e-mail, które złapają wiadomości wysłane przez Twoją instancję FreeCamp. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Instalacja MailHog +## Installing MailHog -MailHog może być zainstalowany na macOS, Windows i Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Wprowadzanie](#introduction) -- [Instalacja MailHog](#installing-mailhog) - - [Instalowanie MailHog na macOS](#installing-mailhog-on-macos) - - [Instalacja MailHog na Windows](#installing-mailhog-on-windows) - - [Instalowanie MailHog na Linux](#installing-mailhog-on-linux) -- [Używanie MailHog](#using-mailhog) -- [Przydatne linki](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Instalowanie MailHog na macOS +### Installing MailHog on macOS -Zainstaluj MailHog na macOS z [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash brew install mailhog brew services start mailhog ``` -Powyższe polecenia rozpoczną serwis mailhog w tle. +The above commands will start a mailhog service in the background. -Po zakończeniu instalacji, możesz rozpocząć [używając MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Instalacja MailHog na Windows +### Installing MailHog on Windows -Pobierz najnowszą wersję MailHog z oficjalnego repozytorium [MailHog'a](https://github.com/mailhog/MailHog/releases). Znajdź i kliknij na link dla wersji Windows (32 lub 64 bity) i plik .exe zostanie pobrany na twój komputer. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Po zakończeniu pobierania, kliknij aby otworzyć plik. Może pojawić się powiadomienie o zaporze systemu Windows, żądając pozwolenia dostępu dla MailHog. Standardowy wiersz poleceń Windows zostanie otwarty gdzie będzie działać MailHog po przyznaniu dostępu do zapory. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Zamknij MailHog zamykając okno monitu poleceń. Aby uruchomić MailHog ponownie, kliknij na plik wykonywalny MailHog (. xe) plik który został pobrany początkowo - nie jest konieczne pobieranie nowego pliku instalacyjnego MailHog. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Zacznij [używać MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Instalowanie MailHog na Linux +### Installing MailHog on Linux -Najpierw zainstaluj [Go](https://golang.org). +First, install [Go](https://golang.org). -Uruchom następujące polecenia, aby zainstalować GO w systemach debian, takich jak Ubuntu i Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Uruchom następujące polecenia, aby zainstalować GO w systemach opartych na RPM, takich jak CentOS, Fedora, Red Hat Linux, itp. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Alternatywnie, uruchom następujące polecenia, aby zainstalować GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Teraz ustaw ścieżkę do Idź z następującymi poleceniami. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile -źródło ~/.profile +source ~/.profile ``` -Na koniec wprowadź poniższe polecenia, aby zainstalować i uruchomić MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Zacznij [używać MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Używanie MailHog +## Using MailHog -Otwórz nową kartę przeglądarki lub okno i przejdź do [http://localhost:8025](http://localhost:8025) , aby otworzyć skrzynkę odbiorczą MailHog po zakończeniu instalacji MailHog i uruchomieniu MailHog. Skrzynka odbiorcza pojawi się podobnie do zrzutu ekranu poniżej. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![Zrzut ekranu MailHog 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -Wiadomości wysłane przez Twoją instalację FreeCamp pojawią się poniżej +Emails sent by your freeCodeCamp installation will appear as below -![Zrzut ekranu MailHog 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -Dwie zakładki, które umożliwiają wyświetlanie zwykłego tekstu lub treści źródłowych, będą dostępne po otwarciu danej wiadomości e-mail. Upewnij się, że zakładka zwykłego tekstu jest zaznaczona jak poniżej. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![Zrzut ekranu MailHog 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Wszystkie linki w wiadomości e-mail powinny być klikalne i rozwiązywane na adres URL. +All links in the email should be clickable and resolve to their URL. -## Przydatne linki +## Useful Links -- Sprawdź repozytorium [MailHog](https://github.com/mailhog/MailHog) , aby uzyskać dalsze informacje związane z MailHog. Dostępne są również dodatkowe informacje dotyczące niestandardowych konfiguracji MailHog. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Polish/how-to-help-with-video-challenges.md b/docs/i18n/Polish/how-to-help-with-video-challenges.md index 3204bead40..0724aaef02 100644 --- a/docs/i18n/Polish/how-to-help-with-video-challenges.md +++ b/docs/i18n/Polish/how-to-help-with-video-challenges.md @@ -1,67 +1,67 @@ -# Jak pomóc w wyzwaniach wideo +# How to help with video challenges -Wyzwania wideo są nowym wyzwaniem w programie nauczania darmowego CodeCamp. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -Wyzwanie wideo to mała część pełnego kursu wideo na dany temat. Strona wyzwania wideo zawiera film z YouTube. Każda strona wyzwania ma jedno pytanie wielokrotnego wyboru związane z filmem. Użytkownik musi odpowiedzieć na pytanie poprawnie, zanim przejdzie do następnego wyzwania wideo w kursie. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -Strony wyzwania wideo są tworzone przez członków zespołu FreeCamp. Filmy YouTube są również przesyłane przez członków zespołu FreeCamp. Wiele wyzwań związanych z filmami wideo nie ma z nimi jeszcze pytań. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Możesz pomóc tworząc pytania wielokrotnego wyboru związane z sekcjami wideo i dodając pytania do plików markdown dla wyzwań wideo. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Szablon wyzwania +## Challenge Template -Poniżej znajduje się szablon jak wyglądają pliki markdown wyzwań. +Below is a template of what the challenge markdown files look like. ````md --- -id: Unikalny identyfikator (alfanumeryczny, MongoDB_id) -title: Wyzwanie Tytuł -Typ: 11 -wideo Id: 'Id wideo YouTube dla wyzwania wideo' +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 11 +videoId: 'YouTube videoId for video challenge' --- -## Opis +## Description
      -Opcjonalny opis z pomocnymi informacjami związanymi z wideo. +An optional description with helpful information related to the video.
      -## Testy +## Tests
      ```yml -pytanie: - tekst: 'Pytanie' - odpowiedzi: - - 'Odpowiedz jedną' - - 'Odpowiedz druga' - - 'Odpowiedz ty' - rozwiązanie: 3 +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
      ```` -## Tworzenie pytań dla wyzwań wideo +## Creating questions for video challenges -### Uzyskaj dostęp do plików markdown wyzwania wideo +### Access the video challenge markdown files -Pliki markdown dla wyzwań wideo można znaleźć w następujących lokalizacjach w programie nauczania: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Analiza danych z kursem Pythona](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) -- [Kurs TensorFlow 2.0](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) -- [Kurs liczbowy](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpython/numpypy) -- [How Neural Networks WorkCourse](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) +- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -Wybierz plik z powyższych opcji. +Pick a challenge markdown file from the options above. -### Przeskocz przez film związany z wyzwaniem i utwórz pytanie wyboru wyboru wyboru +### Skim through the video associated with the challenge and create a mutiple choice question -Najpierw znajdź identyfikator wideo. +First, find the videoId. -Na przykład, w poniższym kodzie z nagłówka pliku markdown wyzwania wideo, wideo Id to "nVAaxZ34khk". Na GitHubie informacje powinny być wyświetlane w formacie tabeli. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 @@ -69,128 +69,131 @@ videoId: nVAaxZ34khk --- ``` -Następnie uzyskaj dostęp do filmu YouTube za pomocą tego identyfikatora wideo. Adres URL dla filmu to: -https://www.youtube. om/watch?v=[videoId] (dodaj identyfikator wideo do adresu URL bez nawiasów kwadratowych) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -W powyższym przykładzie url to https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim wideo z YouTube za pomocą tego wideo Id i pomyśl o pytaniu wielokrotnego wyboru w oparciu o zawartość filmu. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Dodaj pytanie do pliku markdown +### Add the question to the markdown file -Możesz dodać pytanie lokalnie lub bezpośrednio do interfejsu GitHub. Aby dodać pytanie lokalnie, musisz [skonfigurować darmowy CodeCamp lokalnie](how-to-setup-freecodecamp-lokcally.md). Możesz również znaleźć plik na GitHub i kliknąć przycisk edycji, aby dodać pytanie bezpośrednio w przeglądarce. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Jeśli pytanie nie zostało jeszcze dodane do konkretnego wyzwania wideo, będzie miało następujące domyślne pytanie: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -: - tekst: | - Pytanie - odpowiedzi: +question: + text: | + Question + answers: - | - jedno + one - | - dwa + two - | - trzy - rozwiązanie: 3 + three + solution: 3 ``` -Uaktualnić słowo "Pytanie" swoim pytaniem. Zaktualizować „jedną”, „dwa” i „trze” wraz z ewentualnymi odpowiedziami. Upewnij się, że zaktualizowano numer rozwiązania, który jest poprawny. Możesz dodać więcej możliwych odpowiedzi w tym samym formacie. Pytanie i odpowiedzi można załączyć znakiem cytowania. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### Użyj markdown aby sformatować swoje pytanie +#### Use markdown to format your question -Tekst w pytaniu jest oceniany jako markdown. Najprostszym sposobem zapewnienia prawidłowego sformatowania pytania jest rozpoczęcie pytania od `tekstu: |`, tak jak to: +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -pytanie: - tekst: | - Pytanie +question: + text: | + Question ``` -Następnie musisz się upewnić, że Twoje pytanie jest w nowej linii i wcięto o jeden poziom więcej niż `tekstu: |`. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -To samo podejście można zastosować do odpowiedzi, tak więc całe pytanie staje się +The same approach can be used for the answers, so the entire question becomes ```yml -pytanie: - tekst: | - Pytanie - odpowiedzi: +question: + text: | + Question + answers: - | - Pierwsza odpowiedź + First answer - | - Druga + Second - | - Trzecie - : 2 + Third + solution: 2 ``` -Upewnij się, że każda odpowiedź jest wiarygodna, ale jest tylko jedna poprawna odpowiedź. +Make sure each answer is plausible but there is only one correct answer. -#### Korzystanie z HTML +#### Use of HTML -Pytania i odpowiedzi mogą zawierać niektóre tagi HTML, takie jak `
      ` dla nowej linii. Znaczniki HTML powinny być używane źle, gdy pytania nie mogą być wyrażane bez nich. +Questions and answers can contain certain HTML tags like `
      ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Przykłady pytań +### Question examples -#### Przykłady bez HTML +#### Examples without HTML ````yml -pytanie: - tekst: | - Co to jest dziennik kodu JavaScript do konsoli? +question: + text: | + What does this JavaScript code log to the console? ```js console.log('hello world'); ```` - Wybierz odpowiedź! - odpowiedzi: - - | Witaj *świat* - - | **Witaj** świat - - | Witaj świat : 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -pytanie: - tekst: | - Co wydrukuje po uruchomieniu tego kodu: +question: + text: | + What will print out after running this code: ```py - szerokość = 15 - wysokość = 12. druk (wysokość/3) + width = 15 + height = 12.0 + print(height/3) ```` - odpowiedzi: + answers: - | 39 - | 4 - | 4.0 - | 5.0 - - | 5 rozwiązanie: 3 + - | 5 solution: 3 ```` -#### Przykład z pytaniem HTML +#### Example with HTML ```yml -: - tekst: | - Co wydrukuje po uruchomieniu tego kodu: -
      szerokość = 15
      wysokość = 12.
      print(wysokość/3)
      - odpowiedzi: +question: + text: | + What will print out after running this code: +
      width = 15
      height = 12.0
      print(height/3)
      + answers: - | 39 - | 4 - | - 4. - | - 5. - | + 4.0 + - | + 5.0 + - | 5 - rozwiązanie: 3 + solution: 3 ```` -Ostatni przykład pokazuje, że HTML może być użyty, ale nie jest tak czytelny jak wersja bez niego. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Na więcej przykładów możesz zapoznać się z plikami markdown dla następującego kursu wideo. Wszystkie wyzwania mają już pytania: [Python na kurs dla wszystkich](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Otwórz Pull Request +## Open a pull request -Po utworzeniu jednego lub więcej pytań, możesz zatwierdzić zmiany do nowej gałęzi i [otworzyć Pull Request](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Polish/how-to-open-a-pull-request.md b/docs/i18n/Polish/how-to-open-a-pull-request.md index f622b55939..2729cd6237 100644 --- a/docs/i18n/Polish/how-to-open-a-pull-request.md +++ b/docs/i18n/Polish/how-to-open-a-pull-request.md @@ -1,121 +1,121 @@ -# Jak otworzyć Pull Request (PR) +# How to open a Pull Request (PR) -Pull Request umożliwia wysyłanie zmian z forku na GitHub do głównego repozytorium FreCodeCamp.org. Po dokonaniu zmian w kodzie lub wyzwaniach w kodowaniu powinieneś postępować zgodnie z niniejszymi wytycznymi, aby wysłać PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Przygotuj dobry tytuł PR +## Prepare a good PR title -Zalecamy użycie [tradycyjnego tytułu i wiadomości](https://www.conventionalcommits.org/) dla poleceń i pull requesta. Konwencja ma następujący format: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([opcjonalny zakres(y)]): ` +> `([optional scope(s)]): ` > -> Na przykład: +> For example: > -> `fix(learn): testy dla do...while loop challenge` +> `fix(learn): tests for the do...while loop challenge` -Podczas otwierania Pull Request(PR) możesz użyć poniższego przycisku, aby określić typ, zakres (opcjonalnie) i opis. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**Typ:** +**Type:** -| Typ | Kiedy wybrać | -|:--------- |:-------------------------------------------------------------------------------------- | -| Napraw | Zmieniona lub zaktualizowana/udoskonalona funkcjonalność, testy, odwrotnie lekcji itp. | -| feat | Tylko w przypadku dodawania nowych funkcji, testów itp. | -| ruda | Zmiany niezwiązane z kodem, testami lub werbijaniem lekcji. | -| dokumenty | Zmiany w katalogu `/docs` lub wytycznych dotyczących wkładu, itp. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Zakres:** +**Scope:** -Możesz wybrać zakres z [tej listy etykiet](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Opis:** +**Description:** -Pozostaw to krótkie (mniej niż 30 znaków) i proste, możesz dodać więcej informacji w polu opisu PR i komentarze. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Przykładami dobrych tytułów PR: +Some examples of good PRs titles would be: -- `fix(a11y): poprawiony kontrast paska wyszukiwania` -- `feat: dodaj więcej testów do wyzwań html i css` -- `fix(api, klient): zapobiegaj błędom CORS przy składaniu formularza` -- `docs(i18n): chińskie tłumaczenie ustawień lokalnych` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Propozycja Pull Request +## Proposing a Pull Request -1. Gdy edycje zostaną zatwierdzone, zostaniesz poproszony o utworzenie pull request na swojej stronie GitHub forka. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Obraz - Porównaj monit Pull Request na GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Domyślnie wszystkie Pull Requesty powinny być skierowane przeciwko głównemu repozytorium FreeCamp, `master`. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Upewnij się, że twój Fork Bazowy jest ustawiony na darmowy CodeCamp/freeCodeCamp podczas podnoszenia Pull Request. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Obraz - Porównywanie forków podczas wysyłania pull request](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) 3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. W treści PR znajduje się bardziej szczegółowe podsumowanie wprowadzonych zmian i dlaczego. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Zostaniesz zaprezentowany z szablonem Pull Request. To jest lista kontrolna, którą powinieneś był obserwować przed otwarciem pull requesta. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Wypełnij szczegóły zgodnie z tym, co uważasz. Informacje te zostaną sprawdzone, a recenzenci zdecydują, czy Pull Request jest zaakceptowany. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Jeśli PR ma zająć się istniejącym problemem GitHub, wtedy pod koniec treści opisu PR, użyj słowa kluczowego _Zamyka_ z numerem zgłoszenia, aby [automatycznie zamknąć ten problem, jeśli PR jest akceptowany i scalony](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Przykład: `Zamyka #123` zamknie problem 123 + > Example: `Closes #123` will close issue 123 -5. Wskaż, czy przetestowałeś lokalną kopię witryny. +5. Indicate if you have tested on a local copy of the site or not. - Jest to bardzo ważne podczas wprowadzania zmian, które nie są tylko edytowane do treści tekstowych, takich jak dokumentacja lub opis wyzwania. Przykłady zmian, które wymagają lokalnych testów, to JavaScript, CSS lub HTML, które mogą zmienić funkcjonalność lub układ strony. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Opinie na temat pull requestów +## Feedback on pull requests -> Gratulacje! :tada: za wypełnienie PR i bardzo dziękuję za poświęcenie czasu na wniesienie wkładu. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Nasi moderatorzy teraz spojrzą na Ciebie i zostawią Ci opinię. Proszę być cierpliwy z innymi moderatorami i szanować ich czas. Wszystkie Pull Requesty są sprawdzane w odpowiednim czasie. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Jeśli potrzebujesz jakiejkolwiek pomocy, prosimy o omówienie w [rozmowach na czacie](https://gitter.im/FreeCodeCamp/Contributors), z przyjemnością Ci pomożemy. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!Wskazówka] Jeśli chcesz wnieść więcej pull requestów, zalecamy przeczytanie [wprowadzanie zmian i synchronizację](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) wytycznych, aby uniknąć konieczności usuwania forku. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Konflikt na pull request +## Conflicts on a pull request -Konflikty mogą powstać, ponieważ wielu współtwórców pracuje w repozytorium, a zmiany mogą przerwać Twój PR, który oczekuje na przegląd i połączenie. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Najczęściej niż nie potrzebujesz bazy danych, ponieważ zniszczymy wszystkie zobowiązania, jednakże jeśli prośba o rebazę jest tutaj o to, co powinieneś zrobić. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Dla zwykłych poprawek błędów i funkcji +### For usual bug fixes and features -Gdy pracujesz nad zwykłymi błędami i funkcjami w naszym oddziale programistycznym ``, możesz wykonać prostą rebasę: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Zmień swoją kopię lokalną: +1. Rebase your local copy: ```console git checkout git pull --rebase upstream master ``` -2. Rozwiąż wszelkie konflikty i dodaj / edytuj commity +2. Resolve any conflicts and add / edit commits ```console - # + # Either git add . - git commit -m "chole: rozwiązywanie konfliktów" + git commit -m "chore: resolve conflicts" - # lub + # Or git add . - git commit --change --no-edit + git commit --amend --no-edit ``` -3. Wciśnij ponownie swoje zmiany do PR +3. Push back your changes to the PR ```console - git push --force początek + git push --force origin ``` -### Nadchodzący program nauczania i funkcje +### For upcoming curriculum and features -Kiedy pracujesz nad funkcjami dla naszych przyszłych gałęzi programu nauczania, `następne-*` , wykonujesz wycinek wiśniowy: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Upewnij się, że twój upstream jest zsynchronizowany z twoim lokalnym: +1. Make sure your upstream comes in sync with your local: ```console git checkout master @@ -124,56 +124,56 @@ Kiedy pracujesz nad funkcjami dla naszych przyszłych gałęzi programu nauczani git reset --hard upstream/next-python-projects ``` -2. Zrób kopię zapasową +2. Take backup - „Technologia”, zgodnie z uwagą ogólną do technologii, służąca do „rozwoju”, „produkcji” lub „użytkowania” sprzętu lub „oprogramowania” wyszczególnionych w pozycji 1B001. Usuń swoją lokalną gałąź po wykonaniu kopii zapasowej (jeśli nadal masz ją lokalnie): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout - # przykład: + # example: # git checkout feat/add-numpy-video-question git checkout -b - # przykład: - # git checkout -b backup-feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - „Technologia”, zgodnie z uwagą ogólną do technologii, służąca do „rozwoju”, „produkcji” lub „użytkowania” sprzętu lub „oprogramowania” wyszczególnionych w pozycji 1B001. Lub tylko kopia zapasowa swojej lub gałęzi (jeżeli nie masz jej lokalnie): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # przykład: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Rozpocznij od czystego tabliczki: +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Rozwiąż wszelkie konflikty i czyszczenie, zainstaluj testy uruchamiania +5. Resolve any conflicts, and cleanup, install run tests ```console - npm uruchom czyste + npm run clean npm ci - npm uruchom test :curriculum --superblock= + npm run test:curriculum --superblock= - # przykład: + # example: - # npm uruchom test :curriculum --superblock=python-for-everybody + # npm run test:curriculum --superblock=python-for-everybody ``` -6. Jeśli wszystko wygląda na dobre wciśnięcie do PR +6. If everything looks good push back to the PR ```console - git push --force początek + git push --force origin ``` diff --git a/docs/i18n/Polish/how-to-setup-freecodecamp-locally.md b/docs/i18n/Polish/how-to-setup-freecodecamp-locally.md index 6481459e83..619db733cf 100644 --- a/docs/i18n/Polish/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Polish/how-to-setup-freecodecamp-locally.md @@ -1,326 +1,326 @@ -Postępuj zgodnie z niniejszymi wytycznymi, aby skonfigurować darmowy CodeCamp lokalnie w swoim systemie. Jest to wysoce zalecane, jeśli chcesz regularnie wnosić wkład. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Dla niektórych przepływów pracy z wkładem musisz mieć darmowy CodeCamp działający lokalnie. Na przykład przeglądanie wyzwań związanych z kodowaniem lub debugowanie i naprawianie błędów w kodelu. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!Wskazówka] Jeśli nie jesteś zainteresowany konfiguracją darmowego CodeCamp lokalnie rozważ użycie Gitpod, darmowego środowiska dev online. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Otwórz w Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Uruchamia gotowe do kodowania środowisko dev dla freeCodeCamp w przeglądarce.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Przygotuj swoją lokalną maszynę +### How to prepare your local machine -Zacznij od instalacji wstępnego oprogramowania dla Twojego systemu operacyjnego. +Start by installing the prerequisite software for your operating system. -Wspieramy przede wszystkim rozwój w systemach **\*nix**. Nasz personel i współpracownicy społeczności regularnie pracują z bazą kodową za pomocą narzędzi zainstalowanych na Ubuntu i macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Wspieramy również Windows 10 przez WSL2, który możesz przygotować [czytając ten poradnik](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Niektórzy członkowie społeczności opracowują również na Windows 10 native z Git for Windows (Git Bash) i innymi narzędziami zainstalowanymi w Windows. W tej chwili nie mamy oficjalnego wsparcia dla takiej konfiguracji, zalecamy użycie WSL2. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Warunki wstępne:** +**Prerequisites:** -| Wymagany | Wersja | Uwagi | -| ------------------------------------------------------------------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12.x` | [Harmonogram LTS](https://github.com/nodejs/Release#release-schedule) | -| npm (jest połączone z Node) | `6,x` | Nie ma wydań LTS, używamy wersji dołączonej do Node LTS | -| [Serwer Społeczności MongoDB](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Notatki o wydaniu](https://docs.mongodb.com/manual/release-notes/), Uwaga: obecnie jesteśmy `3.6`, [aktualizacja jest zaplanowana](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Jeśli masz inną wersję, zainstaluj zalecaną wersję. Możemy obsługiwać tylko problemy z instalacją dla zalecanych wersji. Zobacz [rozwiązywanie problemów](#troubleshooting) , aby uzyskać więcej informacji. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Jeśli Node.js jest już zainstalowany na Twoim komputerze, uruchom następujące polecenia, aby zatwierdzić wersje: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console -węzeł -v +node -v npm -v ``` -> [!TIP] Zalecamy aktualizację do najnowszych stabilnych wydań oprogramowania wymienionego powyżej, znanego również jako wydźwiękowe wsparcie (LTS). +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Po zainstalowaniu warunków wstępnych, musisz przygotować środowisko programistyczne. Jest to powszechne w wielu procesach rozwoju i będzie można to zrobić tylko raz. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Wykonaj te kroki, aby przygotować środowisko programistyczne:** +**Follow these steps to get your development environment ready:** -1. Zainstaluj [Git](https://git-scm.com/) lub swój ulubiony klient Git, jeśli jeszcze tego nie zrobiłeś. Aktualizacja do najnowszej wersji; wersja, która została dołączona do Twojego systemu operacyjnego, może być przestarzała. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Opcjonalne, ale zalecane) [Ustaw klucz SSH](https://help.github.com/articles/generating-an-ssh-key/) dla GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Zainstaluj wybrany przez siebie edytor kodu. +3. Install a code editor of your choice. - Zalecamy użycie [Visual Studio Code](https://code.visualstudio.com/) lub [Atom](https://atom.io/). To wspaniały, darmowy i open source edytor kodów. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Skonfiguruj linting dla edytora kodu. +4. Set up linting for your code editor. - Powinieneś mieć [ESLint uruchomiony w swoim edytorze](http://eslint.org/docs/user-guide/integrations.html), i podświetli wszystko, co nie jest zgodne z [darmowym przewodnikiem JavaScript Style CodeCamp'a](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!Wskazówka] Nie ignoruj żadnych błędów liningu. Ich celem jest **pomoc** i zapewnienie czystej i prostej ebazy kodowej. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Forkuj repozytorium na GitHub +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) to krok, w którym otrzymasz własną kopię głównego repozytorium freeCodeCampa (vel _repo_) na GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Jest to niezbędne, ponieważ pozwala ci pracować na własnej kopii FreCodeCamp na GitHubie, lub pobrać (klonuj) repozytorium do pracy lokalnie. Później będziesz mógł poprosić o wprowadzenie zmian do głównego repozytorium z forku poprzez Pull Request (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] Główne repozytorium na stronie `https://github.com/freeCodeCamp/freeCodeCamp` jest często nazywane repozytorium `przed`. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Twój fork na `https://github.com/YOUR_USER_NAME/freeCodeCamp` jest często nazywany repozytorium `pochodzenia`. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Wykonaj te kroki, aby rozwidlić repozytorium `https://github.com/freeCodeCamp/freeCodeCamp`:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Przejdź do repozytorium freeCodeCamp na GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. Kliknij przycisk "Fork" w prawym górnym rogu interfejsu ([Więcej szczegółów tutaj](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Po rozwinięciu repozytorium zostaniesz przeniesiony do kopii repozytorium freeCodeCamp na `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
      - Jak rozwidlić FreeCamp na GitHub (zrzut ekranu) + How to fork freeCodeCamp on GitHub (screenshot)
      - Jak rozwidlić FreeCamp na GitHub + How to fork freeCodeCamp on GitHub
      -## Sklonuj swój fork z GitHub +## Clone your fork from GitHub -[Klonowanie](https://help.github.com/articles/cloning-a-repository/) to miejsce, w którym **pobierzesz** kopię repozytorium z `zdalnego` miejsca, które jest własnością Ciebie lub kogoś innego. W Twoim przypadku, ta zdalna lokalizacja jest twoim `forkiem` repozytorium FreeCamp, które powinno być dostępne na `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Uruchom te polecenia na lokalnym komputerze: +Run these commands on your local machine: -1. Otwórz Terminal / Polecenie / Polecenie w katalogu projektów +1. Open a Terminal / Command Prompt / Shell in your projects directory - _np.: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. Sklonuj swój fork darmowego CodeCamp, zastępując `YOUR_USER_NAME` nazwą użytkownika GitHub +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console - [PLACEHOLDER] git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git + git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Spowoduje to pobranie całego repozytorium FreCodeCamp do katalogu Twoich projektów. +This will download the entire freeCodeCamp repository to your projects directory. -Uwaga: `--depth=1` tworzy płytki klon Twojego forka, tylko z najnowszą historią/zatwierdzeniem. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Skonfiguruj synchronizację z nadrzędnego +## Set up syncing from parent -Teraz, gdy pobrałeś kopię forka, musisz skonfigurować zdalny `upstream` do repozytorium nadrzędnego. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Jak wspomniano wcześniej](#fork-the-repository-on-github), główne repozytorium jest skierowane `do repozytorium`. Twój fork nazywany `źródłowym repozytorium`. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Potrzebujesz odniesienia z lokalnego klonu do repozytorium `upstream` oprócz repozytorium `pochodzenia`. Jest to tak, że możesz synchronizować zmiany z głównego repozytorium bez konieczności wielokrotnego forkowania i klonowania. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Zmień katalog na nowy folder freeCodeCamp: +1. Change directory to the new freeCodeCamp directory: ```console cd freeCodeCamp ``` -2. Dodaj zdalne odniesienie do głównego repozytorium freeCodeCamp: +2. Add a remote reference to the main freeCodeCamp repository: ```console git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Upewnij się, że konfiguracja wygląda poprawnie: +3. Ensure the configuration looks correct: ```console - git zdalny -v + git remote -v ``` - Wynik powinien wyglądać w sposób następujący: + The output should look something like below: ```console - źródło https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - pochodzenia https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - na górze https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - na górze https://github.com/freeCodeCamp/freeCodeCamp/CodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Uruchamianie darmowego Obozowania lokalnie +## Running freeCodeCamp locally -Teraz, gdy masz lokalną kopię darmowego CodeCamp, możesz postępować zgodnie z tą instrukcją, aby uruchomić ją lokalnie. Pozwoli to na: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Podgląd edycji na stronach, które pojawiłyby się na platformie nauki. -- Prace nad kwestiami i ulepszeniami dotyczącymi interfejsu użytkownika. -- Debugowanie i naprawianie problemów z serwerami aplikacji i aplikacjami klienckimi. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Jeśli napotkasz problemy, najpierw wykonaj wyszukiwanie internetowe dla swojego problemu i sprawdź, czy odpowiedź już została udzielona. Jeśli nie można znaleźć rozwiązania, przeszukaj naszą stronę [GitHub](https://github.com/freeCodeCamp/freeCodeCamp/issues) w poszukiwaniu rozwiązania i zgłoś problem, jeśli jeszcze nie został zgłoszony. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -I jak zawsze, możesz przejść do naszego [pokoju na czacie współautorów na Gitterze](https://gitter.im/FreeCodeCamp/Contributors) lub [naszego serwera Discord](https://discord.gg/pFspAhS), dla szybkich zapytań. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!Wskazówka] Możesz pominąć uruchomienie darmowego CodeCamp lokalnie, jeśli po prostu edytujesz pliki. Na przykład, wykonanie `rebase`lub rozwiązanie `scalania` konfliktów. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Zawsze możesz wrócić do tej części instrukcji później. Powinieneś **tylko** pominąć ten krok, jeśli nie musisz uruchamiać aplikacji na swoim komputerze. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Pomiń wprowadzanie zmian](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Konfigurowanie zależności +### Configuring dependencies -#### Krok 1: Skonfiguruj plik zmiennych środowiskowych +#### Step 1: Set up the environment variable file -Domyślne klucze API i zmienne środowiskowe są przechowywane w pliku `sample.env`. Ten plik musi zostać skopiowany do nowego pliku o nazwie `.env` , który jest dostępny dynamicznie podczas etapu instalacji. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Utwórz kopię "sample.env" i nazwij ją ".env". -# Wypełnij go niezbędnymi kluczami API i sekretami: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -próbka cp. nv .env +cp sample.env .env # Windows -skopiuj przykład.env .env +copy sample.env .env ``` -Klucze w pliku `.env` _nie są wymagane_ do zmiany aby uruchomić aplikację lokalnie. Możesz zostawić wartości domyślne skopiowane z `sample.env` jako. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!Wskazówka] Pamiętaj, jeśli chcesz korzystać z usług takich jak Auth0 lub Algolia, musisz zdobyć własne klucze API dla tych usług i odpowiednio edytować wpisy w `. nv` plik. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Krok 2: Instalacja zależności +#### Step 2: Install dependencies -Ten krok zainstaluje zależności wymagane do uruchomienia aplikacji: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Krok 3: Uruchom MongoDB i seed bazy danych +#### Step 3: Start MongoDB and seed the database -Zanim będziesz mógł uruchomić aplikację lokalnie, musisz uruchomić usługę MongoDB. +Before you can run the application locally, you will need to start the MongoDB service. -> [!NOTE] chyba że MongoDB działa w konfiguracji innej niż domyślna, adres URL przechowywany jako wartość `MONGOHQ_URL` w `. Plik nv` powinien działać dobrze. Jeśli używasz konfiguracji niestandardowej, zmodyfikuj tę wartość w razie potrzeby. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Uruchom serwer MongoDB w osobnym terminalu: +Start the MongoDB server in a separate terminal: -- Na macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- W systemie Windows, musisz określić pełną ścieżkę do pliku binarnego `mongod` +- On Windows, you must specify the full path to the `mongod` binary ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Upewnij się, że zastąpić `3.6` wersją, którą zainstalowałeś + Make sure to replace `3.6` with the version you have installed -> [!Wskazówka] Możesz uniknąć konieczności uruchamiania MongoDB za każdym razem instalując go jako usługę w tle. Możesz [dowiedzieć się więcej o tym w swojej dokumentacji dla systemu operacyjnego](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Następnie, zacznijmy seedować bazę danych. W tym kroku uruchamiamy poniższe polecenie, które wypełnia serwer MongoDB niektórymi początkowymi zestawami danych, które są wymagane przez usługi. Obejmują one między innymi kilka programów. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -npm Uruchom seed +npm run seed ``` -#### Krok 4: Uruchom aplikację klienta freeCodeCamp i serwer API +#### Step 4: Start the freeCodeCamp client application and API server -Możesz teraz uruchomić serwer API i aplikacje klientów. +You can now start up the API server and the client applications. ```console -npm uruchom +npm run develop ``` -Ta pojedyncza komenda wystrzeli wszystkie usługi, w tym serwer API i aplikacje klienckie dostępne do pracy. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!UWAGA] Kiedy gotowe, otwórz przeglądarkę internetową i **odwiedź **. Jeśli aplikacja się ładuje, gratulacje - wszystko gotowe! Masz teraz kopię platformy edukacyjnej FreeCamp, działającej na lokalnym komputerze. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] Serwer API obsługuje API na `http://localhost:3000`. Aplikacja Gatsby obsługuje aplikację klienta na `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Jeśli odwiedzisz powinieneś zobaczyć dostępne API. +> If you visit you should see the available APIs. -## Zaloguj się przy użyciu lokalnego użytkownika +## Sign in with a local user -Twoja lokalna konfiguracja automatycznie wypełnia lokalnego użytkownika w bazie danych. Kliknięcie przycisku `Zaloguj się` automatycznie uwierzytelni Cię w lokalnej aplikacji. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Dostęp do strony portfolio użytkownika jest jednak nieco skomplikowany. W fazie rozwoju, Gatsby przejmuje obsługę stron po stronie klienta, a zatem otrzymasz stronę `404` dla portfolio użytkownika podczas pracy lokalnie. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Po prostu kliknięcie przycisku **"Podgląd niestandardowej strony 404** przeniesie Cię na poprawną stronę. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
      - Jak zalogować się podczas pracy lokalnie (zrzut ekranu) + How to sign in when working locally (screenshot)
      - Jak zalogować się podczas pracy lokalnie + How to sign in when working locally
      -## Dokonywanie zmian lokalnie +## Making changes locally -Możesz teraz wprowadzić zmiany do plików i zatwierdzić zmiany do lokalnego klonu forku. +You can now make changes to files and commit your changes to your local clone of your fork. -Wykonaj następujące kroki: +Follow these steps: -1. Sprawdź, czy jesteś na gałęzi `głównej`: +1. Validate that you are on the `master` branch: ```console git status ``` - Powinieneś otrzymać dane wyjściowe takie jak: + You should get an output like this: ```console - W gałęzi - Twoja gałąź jest aktualna z 'origin/master'. + On branch master + Your branch is up-to-date with 'origin/master'. - nic do zatwierdzenia, czyszczenie katalogu roboczego + nothing to commit, working directory clean ``` - Jeśli nie jesteś w głównym lub Twój katalog roboczy nie jest czysty, rozwiąż zaległe pliki/commity i zamówienie `główny`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - Główny zamówiony git + git checkout master ``` -2. Synchronizuj najnowsze zmiany z gałęzi FreCodeCamp przed `głównym` do swojej lokalnej gałęzi głównej: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!OSTRZEŻENIE] Jeśli masz jakieś zaległe Pull Requesty, które wykonałeś z gałęzi `główny` fork, stracisz je na końcu tego kroku. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Przed wykonaniem tego kroku powinieneś upewnić się, że pull request jest scalony przez moderatora. Aby uniknąć tego scenariusza, powinieneś **zawsze** pracować nad gałęzią inną niż `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Ten krok **zsynchronizuje najnowsze zmiany** z głównego repozytorium freeCodeCamp. Ważne jest, aby przebazować swoją gałąź na najnowszym `upstream/master` tak często, jak to możliwe, aby uniknąć konfliktów później. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Zaktualizuj swoją lokalną kopię repozytorium FreCodeCamp na upstream: + Update your local copy of the freeCodeCamp upstream repository: ```console - git pobierz w górę + git fetch upstream ``` - Trudno zresetować swoją główną gałąź za pomocą magisterskiego darmowego CodeCamp: + Hard reset your master branch with the freeCodeCamp master: ```console git reset --hard upstream/master ``` - Wrzuć swoją główną gałąź do swojego pochodzenia, aby mieć czystą historię na forku na GitHub: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console - Główny wyjście git --force + git push origin master --force ``` - Możesz sprawdzić poprawność aktualnego głównego pasującego do górnego/głównego, wykonując różnicę: + You can validate your current master matches the upstream/master by performing a diff: ```console - diff git górny/główny + git diff upstream/master ``` - Wynikające z tego wyniki powinny być puste. + The resulting output should be empty. -3. Utwórz nowy oddział: +3. Create a fresh new branch: - Praca nad osobną gałąź dla każdego problemu pomaga zachować kopię Twojego lokalnego utworu w czystości. Nigdy nie powinieneś pracować nad `mistrzem`. To zabrudzi twoją kopię darmowego CodeCamp i być może będziesz musiał zacząć od świeżego klonu lub widelca. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Sprawdź, czy jesteś na `master` jak wyjaśniono wcześniej, i oddziel się stąd: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Nazwa gałęzi powinna zaczynać się od `fix/`, `feat/`, `docs/`, itd. Unikaj używania numerów zgłoszeń w gałęziach. Pozostaw je krótkie, sensowne i wyjątkowe. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Przykłady dobrych nazw oddziałów to: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,213 +330,217 @@ Wykonaj następujące kroki: translate/add-spanish-basic-html ``` -4. Edytuj strony i pracuj nad kodem w swoim ulubionym edytorze tekstowym. +4. Edit pages and work on code in your favorite text editor. -5. Gdy będziesz zadowolony ze zmian, powinieneś opcjonalnie uruchomić darmowy CodeCamp lokalnie, aby wyświetlić zmiany. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Upewnij się, że naprawiłeś błędy i sprawdź formatowanie zmian. +6. Make sure you fix any errors and check the formatting of your changes. -7. Sprawdź i potwierdź aktualizowane pliki: +7. Check and confirm the files you are updating: ```console git status ``` - To powinno pokazywać listę `niezłożonych` plików, które edytowałeś. + This should show a list of `unstaged` files that you have edited. ```console - Na oddziale feat/dokumentacja - Twoja gałąź jest aktualna z 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Zmiany do zatwierdzenia: - (użyj "git reset HEAD ..." aby cofnąć) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - zmodyfikowany: CONTRIBUTING.md - zmodyfikowany: docs/README.md - zmodyfikowany: docs/how-to-setup-freecodecamp-lokcally.md - zmodyfikowany: docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Etapy zmian i zgłoś zatwierdzenie: +8. Stage the changes and make a commit: - W tym kroku należy oznaczać tylko pliki, które edytowałeś lub dodałeś. Możesz wykonać resetowanie i rozwiązywanie plików, których nie zamierzasz zmienić, jeśli to konieczne. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console - git add ścieżkę/do/my/changed/file.ext + git add path/to/my/changed/file.ext ``` - Lub możesz dodać wszystkie `niezłożone` pliki do obszaru testowania: + Or you can add all the `unstaged` files to the staging area: ```console - git dodaj . + git add . ``` - Tylko pliki, które zostały przeniesione do obszaru testowego, zostaną dodane po dokonaniu zatwierdzenia. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Wyjście: + Output: ```console - Na oddziale feat/dokumentacja - Twoja gałąź jest aktualna z 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - d - zmodyfikowany: docs/README.md - zmodyfikowany: docs/how-to-setup-freecodecamp-lokalnie. d - zmodyfikowany: docs/how-to-work-on-guide-articles.md -... + Changes to be committed: + (use "git reset HEAD ..." to unstage) + + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Teraz możesz zatwierdzić swoje zmiany za pomocą krótkiej wiadomości takiej jak: + Now, you can commit your changes with a short message like so: ```console - git commit -m "fix: mój krótki komunikat zatwierdzenia" + git commit -m "fix: my short commit message" ``` - Niektóre przykłady: + Some examples: ```md - Naprawa: aktualizuj artykuł przewodnika dla Java - pętla - feat: dodaj artykuł przewodnika dla umiejętności alexa + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - Opcjonalne: + Optional: - Zalecamy wysłanie standardowego komunikatu. Jest to dobra praktyka, którą zobaczysz w niektórych popularnych repozytoriach Open Source. Jako programista zachęca Cię to do stosowania standardowych praktyk. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Przykładami standardowych komunikatów o zobowiązaniach są: + Some examples of conventional commit messages are: ```md - Naprawa: zaktualizuj artykuł z poradnika HTML - : aktualizuj skrypty kompilacji dla pociągów CI - : dodaj artykuł dla podciągania JavaScript - docs: aktualizuj wytyczne dotyczące przekazywania danych + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - Zachowaj te krótkie i nie więcej niż 50 znaków. Zawsze możesz dodać dodatkowe informacje w opisie wiadomości zatwierdzenia. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - To nie wymaga dodatkowego czasu niż niekonwencjonalna wiadomość taka jak "plik aktualizacji" lub "dodaj index.md" + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Możesz dowiedzieć się więcej o tym, dlaczego powinieneś używać tradycyjnych commitów [tutaj](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Jeśli zdajesz sobie sprawę, że musisz edytować plik lub zaktualizować wiadomość zatwierdzenia po dokonaniu zatwierdzenia, możesz to zrobić po edycji plików z: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - git commit --change + git commit --amend ``` - To otworzy domyślny edytor tekstowy, taki jak `nano` lub `vi` , gdzie możesz edytować tytuł wiadomości zatwierdzenia i dodawać/edytować opis. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Następnie możesz wypchnąć zmiany na fork: +10. Next, you can push your changes to your fork: ```console - git push branch/name-here + git push origin branch/name-here ``` -## Propozycja Pull Request (PR) +## Proposing a Pull Request (PR) -Po zatwierdzeniu zmian sprawdź [, jak otworzyć Pull Request](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Odwołanie do szybkich poleceń +## Quick commands reference -Szybkie odwołanie do poleceń, których potrzebujesz podczas pracy lokalnej. +A quick reference to the commands that you will need when working locally. -| polecenie | opis | -| ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- | -| `npm ci` | Instalacje / ponownie zainstaluj wszystkie zależności i bootstraps różnych usług. | -| `npm Uruchom seed` | Analizuje wszystkie pliki markdown wyzwania i wstawia je do MongoDB. | -| `npm uruchom` | Uruchamia freeCodeCamp API Server i Aplikacje Klienta. | -| `test npm` | Uruchom wszystkie testy JS w systemie, w tym testy klienta, serwera, krzemienia i wyzwań. | -| `npm Uruchom test :client` | Uruchom zestaw testowy klienta. | -| `npm test uruchomienia: program nauczania` | Wykonaj test programu nauczania. | -| `npm wykonanie testu: curriculum --block='Podstawowy HTML i HTML5'` | Przetestuj konkretny blok. | -| `npm test uruchomienia: curriculum --superblock='responsive-web-design'` | Sprawdź konkretny SuperBlock. | -| `npm run test-program nauczania pełnego-wyjścia` | Uruchom zestaw testowy programu nauczania, bez porażki po pierwszym błędzie | -| `npm uruchom test:server` | Uruchom zestaw testowy serwera. | -| `npm uruchom e2e` | Uruchom koniec Cypress, aby zakończyć testy. | -| `npm uruchom czyste` | Odinstalowuje wszystkie zależności i czyści pamięć podręczną. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Rozwiązywanie problemów +## Troubleshooting -### Problemy z instalacją zalecanych warunków wstępnych +### Issues with installing the recommended prerequisites -Regularnie opracowujemy najnowsze lub najpopularniejsze systemy operacyjne, takie jak macOS 10.15 lub później, Ubuntu 18.04 lub później, Windows 10 (z WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Zaleca się zbadanie Twojego konkretnego problemu dotyczącego zasobów takich jak Google, Stack Overflow i Stack Exchange. Istnieje duża szansa, że ktoś stanął w obliczu tego samego problemu i istnieje już odpowiedź na pańskie konkretne pytanie. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Jeśli korzystasz z innego systemu operacyjnego i/lub nadal występują problemy, zobacz [uzyskaj pomoc](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!OSTRZEŻENIE] +> [!WARNING] > -> Proszę unikać tworzenia problemów na GitHub dla wymaganych problemów. Nie wchodzą one w zakres tego projektu. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Problemy z interfejsem użytkownika, czcionki, błędy konstrukcyjne itp. +### Issues with the UI, Fonts, build errors etc. -Jeśli napotkasz problemy z interfejsem użytkownika, czcionki lub widzisz błędy kompilacji, czyszczenie może być użyteczne: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console -npm uruchom czysty +npm run clean npm ci npm run seed -npm run develop; +npm run develop ``` -LUB +OR -Użyj skrótu +Use the shortcut ``` -npm uruchom czysto i rozwiń +npm run clean-and-develop ``` -Jeśli nadal napotkasz problemy z budową, zaleca się sprzątanie obszaru roboczego. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Użyj `git clean` w trybie interative mode: +Use `git clean` in interative mode: ``` -git czysty -ifdX +git clean -ifdX ```
      - Jak czyścić nieśledzone pliki git (zrzut ekranu) + How to clean git untracked files (screenshot)
      - Jak czyścić nieśledzone pliki git + How to clean git untracked files
      -### Problemy z API, Login, Przedłożenia Wyzwań itp. +### Issues with API, Login, Challenge Submissions, etc. -Jeśli nie możesz się zalogować, zobaczysz baner z komunikatem o błędzie, że zostanie zgłoszony do freeCodeCamp, sprawdź, czy twój port lokalny `3000` nie jest używany przez inny program. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**Na systemie Linux / macOS / WSL na systemie Windows - z terminalu:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console netstat -ab | grep "3000" -tcp4 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**Na Windows - z podwyższonego PowerShell:** +**On Windows - From Elevated PowerShell:** ```powershell netstat -ab | Select-String "3000" -TCP 0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Problemy z instalacją zależności +### Issues installing dependencies -Jeśli pojawią się błędy podczas instalowania zależności, upewnij się, że nie jesteś w ograniczonej sieci lub Twoje ustawienia zapory nie uniemożliwiają dostępu do zasobów. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -Pierwsza konfiguracja może zająć chwilę w zależności od przepustowości sieci. Bądź cierpliwy, a jeśli nadal utkniesz, zaleciliśmy użycie GitPoda zamiast konfiguracji offline. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Uzyskanie pomocy +## Getting Help -Jeśli utkniesz i potrzebujesz pomocy, daj nam znać, pytając do kategorii ["Współtwórcy" na naszym forum](https://forum.freecodecamp.org/c/contributors) lub ["Czat room](https://gitter.im/FreeCodeCamp/Contributors) na Gitterze. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Może wystąpić błąd w konsoli przeglądarki lub w Bash / Terminal / Linie poleceń, który pomoże zidentyfikować problem. Podaj ten komunikat o błędzie w opisie problemu, aby inni mogli łatwiej zidentyfikować problem i pomóc w znalezieniu rozwiązania. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Polish/how-to-setup-wsl.md b/docs/i18n/Polish/how-to-setup-wsl.md index f98616449e..68bce6dde6 100644 --- a/docs/i18n/Polish/how-to-setup-wsl.md +++ b/docs/i18n/Polish/how-to-setup-wsl.md @@ -1,83 +1,83 @@ -# Skonfiguruj freeCodeCamp w podsystemie Windows dla Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!UWAGA] Przed wykonaniem tych instrukcji upewnij się, że Twój system spełnia wymagania +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (wersja 2004, Build 19041 lub nowszy) - dostępny dla wszystkich dystrybucji, w tym Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop dla Windows**: Zobacz odpowiednie wymagania dla [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) i [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Przewodnik ten obejmuje pewne wspólne kroki z konfiguracją WSL2. Po rozwiązaniu niektórych wspólnych problemów z WSL2 powinieneś być w stanie postępować zgodnie z naszym lokalnym przewodnikiem konfiguracyjnym, aby pracować z freeCodeCamp na Windowsie, w którym działa WSL distro jak Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Włącz WSL +## Enable WSL -Postępuj zgodnie z instrukcjami zawartymi w [oficjalnej dokumentacji](https://docs.microsoft.com/en-us/windows/wsl/install-win10) aby zainstalować WSL1, a następnie aktualizuj do WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Zalecamy użycie Ubuntu-18,04 lub więcej z WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!UWAGA] + > [!NOTE] > - > Podczas gdy pacjent może stosować inne distropy niezwiązane z debianem, wszyscy wychodzą z własnymi gośćmi i wykraczają poza zakres tego przewodnika. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Aktualizuj zależności dla systemu operacyjnego +2. Update the dependencies for the OS ```console - aktualizacja sudo apt + sudo apt update sudo apt upgrade -y # cleanup sudo apt autoremove -y ``` -## Skonfiguruj Git +## Set up Git -Git jest wstępnie zainstalowany z Ubuntu 18.04, sprawdź czy wersja Git z `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ - git --version -git wersja 2.25.1 +❯ git --version +git version 2.25.1 ``` -(Opcjonalne, ale zalecane) Możesz teraz przejść do [konfiguracji kluczy ssh](https://help.github.com/articles/generating-an-ssh-key) z GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Instalowanie edytora kodu +## Installing a Code Editor -Zalecamy zainstalowanie [Visual Studio Code](https://code.visualstudio.com) w systemie Windows 10. Ma on ogromne wsparcie dla WSL i automatycznie instaluje wszystkie niezbędne rozszerzenia na Twoim distro. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -Zasadniczo będziesz edytować i przechowywać swój kod na Ubuntu-18.04 z VS Code zainstalowanym w Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Instalacja pulpitu dokującego +## Installing Docker Desktop -**Docker Desktop dla Windows** pozwala zainstalować i uruchomić bazę danych i usługi takie jak MongoDB, NGINX itp. Jest to przydatne do uniknięcia wspólnych pułapek z instalacją MongoDB lub innych usług bezpośrednio w systemie Windows lub WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Śledź brak struktury na [oficjalnej dokumentacji](https://docs.docker.com/docker-for-windows/install) i zainstaluj Docker Desktop dla Twojej dystrybucji Windows. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Istnieją pewne minimalne wymagania dotyczące sprzętu, aby uzyskać najlepsze doświadczenie. +There are some minimum hardware requirements for the best experience. -## Skonfiguruj pulpit dokujący dla WSL +## Configure Docker Desktop for WSL -Po zainstalowaniu pulpitu Docker, [postępuj zgodnie z poniższymi instrukcjami](https://docs.docker.com/docker-for-windows/wsl) i skonfiguruj go, aby użyć instalacji Ubuntu-18.04 jako zaplecza. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Dzięki temu kontenery działają po stronie WSL zamiast na Windows. Będziesz mógł uzyskać dostęp do usług przez `http://localhost` zarówno na Windowsie, jak i Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Zainstaluj MongoDB z Docker Hub +## Install MongoDB from Docker Hub -Po skonfigurowaniu pulpitu dokującego do pracy z WSL2, wykonaj następujące kroki, aby uruchomić usługę MongoDB: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Uruchomienie nowego terminalu w Ubuntu-18.04 +1. Launch a new Ubuntu-18.04 terminal -2. Pull `MongoDB 3.6` z dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Uruchom usługę MongoDB w porcie `27017`i skonfiguruj ją automatycznie po ponownym uruchomieniu systemu +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console - docker uruchom -it \ + docker run -it \ -v mongodata:/data/db \ -p 27017:27017 \ --name mongodb \ @@ -85,18 +85,18 @@ Po skonfigurowaniu pulpitu dokującego do pracy z WSL2, wykonaj następujące kr -d mongo:3 ``` -4. Teraz możesz uzyskać dostęp do usługi zarówno z Windows jak i Ubuntu pod adresem `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Instalowanie Node.js i npm +## Installing Node.js and npm -Zalecamy zainstalowanie wersji LTS dla Node.js z menadżerem wersji węzła - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Po zainstalowaniu użyj tych poleceń, aby zainstalować i użyć wersji Node.js w razie potrzeby +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts -# LUB +# OR # nvm install nvm install 14 @@ -107,23 +107,23 @@ nvm install 14 nvm use 12 ``` -Node.js łączy się z `npm`, możesz zaktualizować do najnowszych wersji `npm` z: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console -npm zainstaluj -g npm@latest +npm install -g npm@latest ``` -## Skonfiguruj darmowy CodeCamp lokalnie +## Set up freeCodeCamp locally -Teraz, gdy zainstalowałeś warunki wstępne, postępuj zgodnie z [naszym lokalnym przewodnikiem konfiguracyjnym](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) , aby sklonować, zainstalować i skonfigurować freeCodeCamp lokalnie na swoim komputerze. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!OSTRZEŻENIE] +> [!WARNING] > -> Pamiętaj, że w tej chwili konfiguracja testów Cypress (i związanych z nimi potrzeb GUI) to praca w toku. Nadal powinieneś być w stanie pracować nad większością bazy. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Przydatne linki +## Useful Links -- [The WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - artykuł Mrugesh Mohapatra (Developer Personel at freeCodeCamp.org) -- Najczęściej zadawane pytania dotyczące: - - [Podsystem Windows dla Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Pulpit dokujący dla Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Polish/how-to-use-docker-on-windows-home.md b/docs/i18n/Polish/how-to-use-docker-on-windows-home.md index 2d49458919..85ac65a3e3 100644 --- a/docs/i18n/Polish/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Polish/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Jak korzystać z Dockera na Windows Home +# How to use Docker on Windows Home -Istnieje kilka pułapek do unikania podczas ustawiania docker na Windows Home. Najpierw musisz użyć [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) jako Administrator. Niestety Windows Home nie obsługuje Dockera dla pulpitu Windows, więc narzędzie musi być użyte. Musi być uruchomiony jako Administrator, ponieważ instalacja wykorzystuje dowiązania symboliczne, których nie można utworzyć w innym przypadku. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Po zainstalowaniu przybornika uruchom Docker Terminal Quickstart jako Administrator. Spowoduje to utworzenie `domyślnej` maszyny wirtualnej, jeśli jeszcze nie istnieje. Kiedy to się wydarzyło, zamknij terminal i otwórz VirtualBox (ponownie jako Administrator). Powinieneś być w stanie zobaczyć `domyślną` maszynę. Witryna jest dość zasobochłonna, więc zatrzymaj maszynę wirtualną i podnieś ustawienia tak daleko, jak tylko potrafisz - w szczególności pamięć. Potwierdzono, że praca z 4GB trybu. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Gdy jesteś zadowolony, że Docker działa, sklonuj repozytorium freeCodeCamp do katalogu wewnątrz `C:\Users`. Te katalogi są udostępniane, dając Dockerowi dostęp do lokalnych katalogów, których potrzebuje podczas instalacji. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Jeśli widzisz wiadomości jak +If you see messages like ```shell -bash: change_volumes_owner.sh: Brak takiego pliku lub katalogu +bash: change_volumes_owner.sh: No such file or directory ``` -kiedy `npm uruchom docker:init` to prawdopodobnie jest winowajca. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Polish/how-to-work-on-coding-challenges.md b/docs/i18n/Polish/how-to-work-on-coding-challenges.md index 75acb414bc..2b95545e91 100644 --- a/docs/i18n/Polish/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Polish/how-to-work-on-coding-challenges.md @@ -1,389 +1,470 @@ -# Jak pracować nad wyzwaniami kodowania +# How to work on coding challenges -Naszym celem jest rozwój zabawnego i jasnego interaktywnego doświadczenia w nauce. +Our goal is to develop a fun and clear interactive learning experience. -Tworzenie interaktywnych wyzwań w zakresie kodowania jest trudne. O wiele łatwiej byłoby napisać długie wyjaśnienie lub stworzyć samouczek wideo, i jest miejsce dla tych na średnim i YouTube. Jednak dla naszego podstawowego programu nauczania, trzymamy się tego, co najlepiej działa dla większości ludzi - w pełni interaktywnego, wideo podobnego do gry. +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. -Chcemy, aby kamerzy osiągnęli stan przepływu. Chcemy, aby budowali dynamikę i przebili się przez nasz program nauczania z jak najmniejszą ilością snagów. Chcemy, aby wzięły one udział w projektach z ufnością i spotkały się z szerokim zaangażowaniem w koncepcje programowania. +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. -Tworzenie tych wyzwań wymaga ogromnej kreatywności i skupienia uwagi na szczegółach. Dostępna jest mnóstwo pomocy. Będziesz mieć wsparcie od całego zespołu współtwórców, do którego możesz odbić pomysły i demo swoich wyzwań. Bądź aktywny w [sali współtwórców](https://gitter.im/freecodecamp/contributors) i zadaj wiele pytań. +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/). -Dzięki Twojej pomocy możemy zaprojektować interaktywny program nauczania kodowania, który pomoże milionom ludzi nauczyć się kodowania na nadchodzące lata. +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. -Zawartość dla każdego wyzwania jest przechowywana w jego własnym pliku markdown Zawartość dla każdego wyzwania jest przechowywana w jego własnym pliku markdown Ten plik markdown jest później przekonwertowany do HTML za pomocą naszych narzędzi do tworzenia interaktywnych stron internetowych. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Wszystkie treści programu nauczania freeCodeCamp.org można znaleźć w katalogu [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges). +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. -## Skonfiguruj oprzyrządowanie programu nauczania +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Zanim zaczniesz pracować nad programem nauczania, musisz skonfigurować jakieś narzędzia, aby pomóc Ci przetestować zmiany. Możesz użyć dowolnej opcji z poniżej: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- Możesz [skonfigurować darmowy CodeCamp lokalnie](how-to-setup-freecodecamp-locally.md). Jest to **wysoce zalecane** dla regularnych/powtarzanych kontrybucji. Ta konfiguracja pozwala ci pracować i testować zmiany. -- Użyj Gitpod, darmowego środowiska dev online. Kliknięcie poniższego przycisku uruchomi gotowe do kodowania środowisko dev dla darmowego CodeCamp w przeglądarce. Zajmie to tylko kilka minut. +## Set up the tooling for the curriculum - [![Otwórz w Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Edytuj pliki na interfejsie GitHuba klikając ikonę ołówka dla odpowiedniego pliku. Chociaż jest to najszybszy sposób, to **nie jest zalecany**, ponieważ nie możesz przetestować zmian na GitHubie. Jeśli nasi opiekunowie stwierdzą, że wprowadzone przez Ciebie zmiany muszą być testowane lokalnie, zamiast tego musisz ponownie zastosować się do powyższych metod. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Szablon wyzwania + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Poniżej znajduje się szablon tego, jak wyglądają obecnie pliki markdown wyzwań. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: Unikalny identyfikator (alfanumeryczny, MongoDB_id) -title: Wyzwanie Tytuł -wyzwanie: 0 -videoUrl: 'url of video explanation ' +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 0 +videoUrl: 'url of video explanation' --- ## Description
      -Opis wyzwania i co jest wymagane do wykonania +A Description of the challenge and what is required to pass
      -## Instrukcje +## Instructions
      -Instrukcje dotyczące tego, co dokładnie należy zrobić. +Instructions about what exactly needs to be done.
      -## Testy +## Tests
      ```yml -testy: +tests: - text: Should return "foo" - testString: 'A stringified function may using Chai asserts' + testString: 'A stringified function possibly using Chai asserts' ````
      -## Nasiona wyzwania +## Challenge Seed
      ```{ext} -Kod wyświetlany domyślnie w edytorze. +Code displayed in the editor by default. -Jest to sekcja wymagana, aby sprostać wyzwaniu. +This is a required section for the challenge. ```
      -### Przed testem +### Before Test
      ```{ext} -Opcjonalny kod konfiguracji testu. +Optional Test setup code. ```
      -### Po teście +### After Test
      ```{ext} -Opcjonalny kod testowy. +Optional Test tear down code. ```
      -## Rozwiązanie +## Solution
      ```{ext} -// rozwiązanie wymagane +// solution required ```
      ```` -> [!UWAGA] +> [!NOTE] > -> 1. W powyższych sekcjach, Przykładami `{ext}` są: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Dla sekcji `Tests` powyżej, `text` i `testString` powinny być poprawnymi ciągami YAML. `testString` może być uciętą funkcją lub wyrażeniem przy użyciu których można użyć asertów Chai. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Wyzwania liczbowe +## Numbering Challenges -Każde wyzwanie wymaga `id`. Jeśli nie określisz jednego, MongoDB utworzy nowy, losowy, gdy zapisze dane; nie chcemy, aby tak się stało, ponieważ chcemy, aby identyfikatory wyzwań były spójne w różnych środowiskach (etapy, produkcja, wiele różnych deweloperów itp.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -Aby wygenerować nowy w skorupce (zakładając, że MongoDB działa oddzielnie): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Uruchom komendę "mongo". -2. Uruchom komendę `ObjectId()`. +1. Run `mongo` command. +2. Run `ObjectId()` command. -Na przykład: +For example: ```bash $ mongo MongoDB shell version v3.6.1 -łączące się z: mongodb://127.0.0.1:27017 -wersja serwera MongoDB: 3.4.10 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Wynik jest nowym identyfikatorem, na przykład `5a474d78df58bafeb3535d34` powyżej. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -Po otrzymaniu identyfikatora, umieść go w pliku markdown jako pole `id` na górze, np. +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- id: 5a474d78df58bafeb3535d34 -tytuł: Wyzwanie Tytuł +title: Challenge Title ``` -## Nazewnictwo wyzwań +## Naming challenges -Nazewnictwo rzeczy jest trudne. Ułatwiliśmy to nakładając pewne ograniczenia. +Naming things is hard. We've made it easier by imposing some constraints. -Wszystkie tytuły wyzwania powinny być jednoznaczne i powinny być zgodne z tym wzorem: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[klauzula obiektu\] +\[verb\]\[object clause\] -Oto kilka przykładowych nazw wyzwań: +Here are some example challenge names: -- Użyj Notacji zegara aby określić dodawanie elementu -- Kondensuj tablice z .reduction -- Użyj Notacji z nawiasem, aby znaleźć pierwszy znak w ciągu +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Opis wyzwań/instrukcje +## Challenge descriptions/instructions -Zdania powinny być jasne i zwięzłe przy minimalnym żargonu. W przypadku użycia jargon należy natychmiast zdefiniować w prostym języku angielskim. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Zachowaj krótkie punkty (około 1-4 zdań). Istnieje większe prawdopodobieństwo, że ludzie przeczytają kilka krótkich ustępów, niż ściana tekstu. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Tekst wyzwania powinien użyć drugiej osoby („Ty”), aby pomóc jej nadać ton rozmowy. W ten sposób wydaje się, że tekst i instrukcje będą rozmawiać bezpośrednio z kamuflażem pracującym w ramach wyzwania. Staraj się unikać używania pierwszej osoby ("I", "my", "niech się" i "nas"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Nie używaj linków wychodzących. Przerwuje przepływ. W czasie tych wyzwań kamery nigdy nie powinny być zmuszane do czegokolwiek. Jeśli istnieją zasoby, z których uważasz, że kamery odniosłyby korzyści, dodaj je do artykułu dotyczącego poradnika wyzwania. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -Jeśli jest to absolutnie konieczne, można dodać schematy. +You can add diagrams if absolutely necessary. -Nie używaj emotikonów ani emotikonów w wyzwaniach. darmowy CodeCamp ma globalną społeczność, a kulturowe znaczenie emoji lub emocji może być różne na całym świecie. Ponadto emotikony mogą renderować się inaczej w różnych systemach. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Odpowiednie publikacje powinny używać poprawnej kapitalizacji, jeśli to możliwe. Poniżej znajduje się lista słów, które powinny pojawić się w wyzwaniach. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (wielkie litery w "J" i "S" i bez skrótów) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Rozwój przedniej części (przymiotnik z myślnikiem) to kiedy pracujesz na przednim końcu (noun form bez myślnika). To samo dotyczy „backend”, „full stack” i wielu innych złożonych terminów. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### Reguła 2 minuty +### The 2-minute rule -Każde wyzwanie powinno być możliwe do rozwiązania w ciągu 120 sekund przez rodzimego angielskiego użytkownika, który ukończył związane z nim wyzwania. Obejmuje to czas potrzebny na przeczytanie wskazówek/instrukcji zrozumienia kodu siedzącego, Napisz własny kod i uzyskaj wszystkie testy do przejrzenia. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Jeśli ukończenie wyzwania trwa dłużej niż dwie minuty, masz dwie opcje: +If it takes longer than two minutes to complete the challenge, you have two options: -- Uproszczenie wyzwania, lub -- Podziel wyzwanie na dwa wyzwania. +- Simplify the challenge, or +- Split the challenge into two challenges. -Reguła 2-minutowa zmusza ciebie, projektanta wyzwania, aby Twoje kierunki były zwięzłe, Twój kod ziarenka był jasny, a Twoje testy były proste do przodu. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Śledzimy czas potrzebny kamperom na rozwiązanie zmian i wykorzystujemy te informacje do określenia wyzwań, które należy uprościć lub podzielić. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modularność +### Modularity -Każde wyzwanie powinno uczyć dokładnie jednej koncepcji, a ta koncepcja powinna być widoczna z imienia wyzwania. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Możemy wzmocnić wcześniej uwzględnione koncepcje poprzez powtórzenie się i zróżnicowanie - na przykład wprowadzenie elementów h1 do jednego wyzwania, a następnie h3 do kilku wyzwań później. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Naszym celem jest stworzenie tysięcy 2-minutowych wyzwań. Mogą się one zebrać i powtórzyć wcześniej omówione koncepcje. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Formatowanie tekstu wyzwania +### Formatting challenge text -Oto szczegółowe wytyczne dotyczące formatowania tekstu i przykładów: +Here are specific formatting guidelines for challenge text and examples: -- Słowa kluczowe języka idą w `` tagów. Na przykład nazwy tagów HTML lub nazwy właściwości CSS -- Pierwsza instancja słowa kluczowego, gdy jest zdefiniowana, lub ogólne słowa kluczowe (np. "obiekt" lub "niezmienne") idź w `` tagi -- Odniesienia do części kodu (np. funkcja, metoda lub zmienne) powinny być zawinięte w tagi ``. Zob. przykład poniżej: -- Użyj parseInt , aby przekonwertować zmienną RealNumber na liczbę całkowitą. -- Wieloliniowe bloki kodu **muszą być poprzedzone pustą linią**. Następny wiersz musi zaczynać się od trzech tyłek, a następnie od razu jednym z [obsługiwanych języków](https://prismjs.com/#supported-languages). Aby ukończyć blok kodu, musisz uruchomić nową linię z tylko trzema tyłami i **inną pustą linią**. **Uwaga:** Jeśli zamierzasz użyć przykładowego kodu w YAML, użyj `yaml` zamiast `yml` dla języka na prawo od tyłu. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Zob. przykład poniżej: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Poniżej znajduje się przykład kodu: +The following is an example of code: ```{language} -[TWOJA KOD HERE] +[YOUR CODE HERE] ```` ```` -- Dodatkowe informacje w formie notatki powinny być sformatowane `Uwaga: Tekst notatki... -- Jeśli potrzebne są wielokrotne notatki, następnie wyświetl wszystkie notatki w oddzielnych zdaniach w formacie `Uwagi: Tekst pierwszej notatki. Tekst drugiej notatki.`. -- W stosownych przypadkach używaj podwójnych cytatów +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Testy pisania +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Wyzwania powinny mieć minimalną liczbę testów niezbędnych do sprawdzenia, czy kamper rozumie pojęcie. +## Writing tests -Naszym celem jest przekazanie informacji o pojedynczym punkcie, który próbuje uczyć i przetestować, czy zrozumiały ten punkt. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Testy na wyzwania mogą korzystać z bibliotek asercji Node.js i Chai.js. Ponadto, w razie potrzeby, można uzyskać dostęp do kodu wygenerowanego przez użytkownika w zmiennej `code`. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Formatowanie kodu ziarenka +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Oto szczegółowe wytyczne formatowania kodu ziarenka wyzwania: +## Formatting seed code -- Użyj dwóch spacji do wcięcia -- wyrażenie JavaScript kończy się średnikiem -- W stosownych przypadkach używaj podwójnych kwotowań -- Komentarze powinny mieć spację między znakami komentarskimi a komentarzami +Here are specific formatting guidelines for the challenge seed code: - `// Popraw ten wiersz` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Wskazówki i Rozwiązania +### Seed code comments -Każde wyzwanie ma przycisk "Uzyskaj wskazówkę", aby użytkownik miał dostęp do wskazówek/rozwiązań, które zostały stworzone dla wyzwania. Tematy programu nauczania hintów/rozwiązań znajdują się na [naszym forum](https://forum.freecodecamp.org/c/guide) w kategorii `Guide`. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Jeśli znajdziesz problem z istniejącym tematem hint/rozwiązań, możesz przedstawić sugestie w [kategorii współtwórców](https://forum.freecodecamp.org/c/contributors) na forum. Moderatorzy i użytkownicy posiadający zaufanie poziomu 3 dokonają przeglądu komentarzy i decydują o tym, czy uwzględnić zmiany w odpowiednim temacie wskazówki/rozwiązań. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Dodawanie nowych wskazówek/rozwiązań wyzwań +Example of valid single line JavaScript comment: -Podejmij następujące kroki, dodając nowe podpowiedzi i rozwiązania związane z tematem. +```js +// Only change code below this line +```` -1. Zacznij od tych samych kroków, aby utworzyć nowy temat, ale przejrzyj następny do tworzenia tytułu. -2. Tytuł tematu powinien zaczynać się od `FreCodeCamp Challenge Guide: ` połączony z aktualnym tytułem wyzwania programowego. Na przykład, jeśli wyzwanie nosi nazwę "Chunky Monkey", tytuł tematu będzie "`freeCodeCamp Challenge Guide: Chunky Monkey`". -3. `camperbot` powinien być właścicielem tych tematów/postów, musisz poprosić administratora o zmianę właściciela głównego wpisu na `camperbot`. -4. Po utworzeniu nowego tematu zostanie utworzony identyfikator tematu. Znajduje się na końcu adresu URL tematu forum. Ten identyfikator musi zostać dodany do frontacji pliku programu nauczania poprzez normalny proces pull request dla przycisku `Get a Hint` aby połączyć się z tematem. +Example of a valid CSS comment: -### Wytyczne dotyczące treści wskazówek i rozwiązań tematów +```js +/* Only change code above this line */ +``` -Proponując rozwiązanie dla tematu przewodnika dotyczącego programu nauczania, należy dodać pełny kod. Obejmuje to wszystkie oryginalne kody ziaren, a także wszelkie zmiany potrzebne do zdania wszystkich testów wyzwań. Następujący szablon powinien być użyty podczas tworzenia nowych tematów wskazówek/rozwiązań: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. -``md -# Challenge Name Goes here +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
      + { /* Change code below this line */ } + + { /* Change code above this line */ } +

      {this.state.text}

      +
      + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md +# Challenge Name Goes Here --- -## Problem Wyjaśnienie +## Problem Explanation -Podsumowanie tego, co należy zrobić bez przedefiniowania opisu i/lub instrukcji. Jest to opcjonalna sekcja +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section -#### Odpowiednie Linki +#### Relevant Links - [Link Text](link_url_goes_here) - [Link Text](link_url_goes_here) --- -## Wskazówki +## Hints -### Wskazówka 1 +### Hint 1 -idzie tutaj +Hint goes here -### Wskazówka 2 +### Hint 2 -Wskazówka znajduje się tutaj +Hint goes here --- -## Rozwiązania +## Solutions -
      Solution 1 (Kliknij, aby pokazacząć/ukryć) +
      Solution 1 (Click to Show/Hide) ```js function myFunc() { - konsola. og('Witaj Świat!'); + console.log('Hello World!'); } ```` -#### Wyjaśnienie kodu +#### Code Explanation -- Wyjaśnienie kodu idzie tutaj -- Wyjaśnienie kodu idzie tutaj +- Code explanation goes here +- Code explanation goes here -#### Odpowiednie linki +#### Relevant Links -- [Tekst linku](link_url_goes_here) -- [Tekst linku](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
      ```` -## Testowanie Wyzwań +## Testing Challenges -Zanim [stwórz pull request](how-to-open-a-pull-request). d) w związku ze swoimi zmianami, należy potwierdzić, że wprowadzone przez Ciebie zmiany nie powodują nieumyślnych problemów z wyzwaniem. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Aby przetestować wszystkie wyzwania uruchom poniższe polecenie z katalogu głównego +1. To test all challenges run the below command from the root directory ```` -npm test uruchomienia: program nauczania +npm run test:curriculum ``` -2. Możesz również przetestować blok lub superblok wyzwań za pomocą tych poleceń +2. You can also test a block or a superblock of challenges with these commands ``` -npm wykonanie testu: curriculum --block='Podstawowy HTML i HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` -npm test uruchomienia: curriculum --superblock=responsive-web-design +npm run test:curriculum --superblock=responsive-web-design ``` -Możesz również przetestować jedno wyzwanie indywidualnie, wykonując następujące kroki: +You are also able to test one challenge individually by performing the following steps: -1. Przełącz do katalogu `curriculum`: +1. Switch to the `curriculum` directory: ``` - cd program nauczania + cd curriculum ``` -2. Uruchom następujące dla każdego pliku wyzwania, dla którego zmieniłeś: +2. Run the following for each challenge file for which you have changed: ``` - test npm run -- -g 'pełny angielski tytuł wyzwania' + npm run test -- -g 'the full English title of the challenge' ``` -Po sprawdzeniu, że każde wyzwanie, nad którym pracujesz, przechodzi testy, [utwórz pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). -> [!Wskazówka] -> Możesz ustawić zmienną środowiskową `LOCALE` w `.env` na język wyzwania, które musisz przetestować. +> [!TIP] +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> Obecnie akceptowane wartości to `english` i `chinese`, przy czym domyślnie ustawiono `english`. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Nadchodzący Szablon Wyzwania +## Upcoming Challenge Template -Szablon wyzwania w procesie aktualizacji do czystszej, mniej zagnieżdżonych struktur. To nie zostało całkowicie sfinalizowane, ale następujące powinny być bliskie końcowej struktury: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: -``mdx +````mdx --- -id: unikalny identyfikator (alfanumeryczny, MongoDB_id) -tytuł: 'Challenge Title' -challengeType: Integer, zdefiniowane w `client/utils/challengeTypes. s` -videoUrl: 'url of video explanation +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` +videoUrl: 'url of video explanation' forumTopicId: 12345 --- -import skryptu z './script. dx'; +import Script from './script.mdx'; ## --step-description-- -Tekst opisu, w markdown +Description text, in markdown ```html
      - przykład kodu + example code
      ``` @@ -391,32 +472,32 @@ Tekst opisu, w markdown ![test-id-1] -Będzie arbitralna liczba trzykrotnych identyfikatorów, instrukcji (w górnictwie) i bloków kodu. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Kod badania 1 +Code for test one ``` ![test-id-2] -Więcej instrukcji w składni markdown +More instructions in markdown syntax ```js -Więcej kodu +More code ``` -## --step-seed- +## --step-seed-- ### --before-user-code-- ```lang -Kod oceniony przed użytkownikiem +Code evaluated before the user’s ``` ### --after-user-code-- ```lang -Kod oceniany po użytkowniku i tuż przed testami +Code evaluated after the user’s, and just before the tests ``` ### --seed-content-- @@ -424,15 +505,15 @@ Kod oceniany po użytkowniku i tuż przed testami ![index-html] ```html -Niektóre html +Some html ``` ```css -Niektóre css +Some css ``` ```js -Kilka js +Some js ``` ![index-js] @@ -447,7 +528,7 @@ Kilka js

      - Dokładnie taka sama jak sekcja dotycząca nasion + Exactly the same as the seeds section

      @@ -457,11 +538,11 @@ Kilka js

      - To samo jeszcze raz + Same again

      - --pyton-marker-- + --question-marker--

      @@ -471,7 +552,7 @@ Kilka js

      - Pytanie pojawiłoby się tutaj (używane tylko do wyzwań związanych z filmami). + The question would go here (only used for video challenges)

      @@ -481,19 +562,19 @@ Kilka js

      - Odpowiedź 1 + Answer 1


      - Odpowiedź 2 + Answer 2


      - Odpowiedź 2 + More answers

      @@ -513,13 +594,13 @@ Kilka js

      - Przydatne linki + Useful Links

      - Tworzenie i edycja wyzwań: + Creating and Editing Challenges:

      @@ -527,14 +608,14 @@ Kilka js
      1. - Rodzaje wyzwań - co oznaczają wartości liczbowe typu wyzwania (enum). + Challenge types - what the numeric challenge type values mean (enum).

      2. - Przyczynianie się do FreeCodeCamp - Pisanie testów wyzwań ES6 - film po Ethan Arrowood , ponieważ przyczynia się do starej wersji programu nauczania. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

      3. diff --git a/docs/i18n/Polish/how-to-work-on-the-docs-theme.md b/docs/i18n/Polish/how-to-work-on-the-docs-theme.md index 265a05012c..bf8bf8f6c9 100644 --- a/docs/i18n/Polish/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Polish/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Jak pracować nad tematem docs +# How to work on the docs theme -> [!NOTE] Szybkie przypomnienie, że nie musisz niczego skonfigurować do pracy nad zawartością strony dokumentacji. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Aby pracować nad wytycznymi dotyczącymi wkładu, możesz edytować lub dodawać pliki w katalogu `docs` [dostępnym tutaj](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Kiedy Twoje zmiany zostaną scalone, zostaną one udostępnione automatycznie na stronie dokumentacji. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Struktura strony internetowej dokumentów +## Structure of the docs website -Witryna jest generowana za pomocą [`docsify`](https://docsify.js.org)i obsługiwana za pomocą stron GitHub. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Zazwyczaj nie musisz zmieniać żadnej konfiguracji ani budować witryny lokalnie. Jeśli jesteś zainteresowany, oto jak to działa: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- Źródło strony głównej dla tej witryny jest dostępne w [`docs/index.html`](index.html). -- Obsługujemy ten plik jako SPA używając `docsify` i GitHub Stron. -- Skrypt `docsify` generuje zawartość plików `markdown` w katalogu `docs` na żądanie. -- Strona główna jest generowana z [`_coverpage.md`](_coverpage.md). -- nawigacja na pasku bocznym jest generowana z [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Obsługa witryny dokumentacji lokalnie +## Serving the documentation site locally -Klonuj darmowy kod: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -Zainstaluj `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -i podaj katalog `/docs` +and serve the `/docs` directory -```sh -docsify służy dokumentom +```console +docsify serve docs ``` -Alternatywnie, jeśli zainstalowałeś freeCodeCamp lokalnie (zobacz lokalny przewodnik konfiguracyjny), łączymy CLI z narzędziami programistycznymi, dzięki czemu możesz uruchomić `npm run docs:serve` z katalogu głównego repozytorium. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Polish/how-to-work-on-the-news-theme.md b/docs/i18n/Polish/how-to-work-on-the-news-theme.md index 665b22e5f9..51ad62ccf0 100644 --- a/docs/i18n/Polish/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Polish/how-to-work-on-the-news-theme.md @@ -1,8 +1,99 @@ - https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md \ No newline at end of file +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). + +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Polish/index.md b/docs/i18n/Polish/index.md index b9a911d2ac..1c4add4ab3 100644 --- a/docs/i18n/Polish/index.md +++ b/docs/i18n/Polish/index.md @@ -1,45 +1,43 @@ -Społeczność [freeCodeCamp.org](https://freecodecamp.org) jest możliwa dzięki tysiącom życzliwych wolontariuszy takich jak Ty. Z radością witamy każdy wkład we wspólnotę i jesteśmy podekscytowani do państwa na pokładzie. Z radością witamy każdy wkład we wspólnotę i jesteśmy podekscytowani do państwa na pokładzie. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!UWAGA] Zanim przejdziesz dalej, zajmij 2 minuty, aby przeczytać nasz [Kodeks postępowania](https://www.freecodecamp.org/code-of-conduct). Wprowadzamy je ściśle w całej naszej społeczności. Chcemy, aby wkład w darmowy CodeCamp.org był bezpiecznym i integracyjnym doświadczeniem dla wszystkich. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Wszystkiego najlepszego. +Happy contributing. -Witamy w: +You are welcome to: -- Utwórz, aktualizuj i naprawiaj błędy w naszym [wyzwaniu kodowania](#coding-challenges). -- Pomóż nam naprawić błędy w platformie [freeCodeCamp.org](#learning-platform). -- _(Już wkrótce)_ Pomóż nam przetłumaczyć darmowy CodeCamp.org na języki świata. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Masz pytania? Przejdź do [tych najczęściej zadawanych pytań](/FAQ.md) , w których odpowiadamy na niektóre powszechne zapytania dotyczące wkładu. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Wyzwania kodowania +## Curriculum -Wszystkie nasze wyzwania w zakresie kodowania są rozwiązywane przez społeczność, zapewniając wiedzę ekspercką od wolontariuszy takich jak ty. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Możesz pomóc w ich rozszerzeniu i ulepszeniu ich sformułowań. Możesz również zaktualizować historie użytkownika, aby lepiej wyjaśnić tę koncepcję lub usunąć zbędne i ulepszyć testy wyzwań, aby lepiej przetestować kod ludzi. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Jeśli jesteś zainteresowany ulepszeniem tych wyzwań kodowania, oto [jak pracować nad wyzwaniami kodowania](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Platforma edukacyjna +## Learning Platform -Nasza platforma edukacyjna prowadzi nowoczesną stackę JavaScript. Ma różne komponenty, narzędzia i biblioteki, w tym Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, i wiele więcej. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -ogólnie, +Broadly, we use -- Mamy serwer API oparty na Node.js. -- Zestaw aplikacji klienckich opartych na React. -- Skrypt używany do oceny naszych projektów front-end. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Przyczynianie się do tego wymaga pewnego zrozumienia API, składni ES6 i dużej ciekawości. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Zasadniczo oczekujemy podstawowej znajomości niektórych z wyżej wymienionych technologii, narzędzi i bibliotek. Mówiąc o tym, nie wymaga się od was bycia ekspertem w tym zakresie. +If you want to help us improve our codebase... -**Jeśli chcesz pomóc nam ulepszyć nasz kod, możesz użyć Gitpod, darmowego środowiska dev online** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Otwórz w Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Uruchamia gotowe do kodowania środowisko dev dla freeCodeCamp w przeglądarce.) +Or you can... -LUB - -**możesz [skonfigurować darmowy CodeCamp lokalnie](how-to-setup-freecodecamp-locally.md) na swoim komputerze.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Polish/moderator-handbook.md b/docs/i18n/Polish/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Polish/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
        + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Portuguese/FAQ.md b/docs/i18n/Portuguese/FAQ.md index c7357304b5..e6ef4fed0d 100644 --- a/docs/i18n/Portuguese/FAQ.md +++ b/docs/i18n/Portuguese/FAQ.md @@ -1,101 +1,82 @@ -### Eu sou novo no GitHub e no Código Aberto, por onde devo começar? +### I am new to GitHub and Open Source. Where should I start? -Leia nosso ["Como Contribuir com o Guia de Código Aberto"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). É um recurso opressivo de projetos e diretrizes amigáveis do primeiro temporizador +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Posso traduzir o currículo do freeCodeCamp? +### Can I translate freeCodeCamp's curriculum? -Vamos começar os esforços de localização no freeCodeCamp começando com **Chinês** primeiro. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Pretendemos disponibilizar o currículo em mais línguas, mas ainda não podemos comprometer-nos com prazos. Vários limites operacionais, como pessoal, colaboradores activos e custos do servidor, desempenham um papel na condução dos esforços de internacionalização (i18n). +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Tencionamos começar os esforços de i18n nesses idiomas: árabe, português, Russo e Espanhol (em nenhuma ordem específica) depois de termos liberado o currículo em chinês. +### How can I report a new bug? -**Por que você se concentra primeiro no currículo chinês?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -A China é as maiores regiões demográficas, no nosso público de língua não nativa em inglês. Atualmente, temos centenas de milhares de usuários usando uma versão antiga da plataforma. Focar nos currículos chineses dar-nos-á uma estimativa da logística envolvida no i18n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Concentrar-nos-emos na América Latina como região demográfica para português e espanhol. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -Não temos quaisquer planos para outras línguas que não as das que referi no futuro previsível. +### How can I report a security issue? -Não o encorajamos a trabalhar nos dias 18n sobre as línguas acima. Podemos aceitar pull requests, sem qualquer expectativa de quaisquer cronogramas sobre implantações. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Como posso relatar um novo erro? +### I am a student. Can I work on a feature for academic credits? -Se você acha que encontrou um erro, primeiro leia o [artigo "Ajude-me a encontrar um erro"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) e siga suas instruções. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Se você está confiante de que é um novo erro, vá em frente e crie um novo problema no GitHub. Certifique-se de incluir o máximo de informações possível para que possamos reproduzir o erro. Temos um modelo de issue predefinido para ajudar você neste domínio. +We request you to plan ahead and work on code contributions with this in mind. -Observe que quaisquer problemas que busquem ajuda na codificação em um desafio serão fechados. O rastreador de questões é estritamente para questões e discussões relacionadas à base de código. Sempre que a dúvida, você deve [procurar ajuda no fórum](https://forum.freecodecamp.org) antes de fazer um relatório. +### What do these different labels that are tagged on issues mean? -### Como posso relatar um problema de segurança? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Por favor, não crie problemas no GitHub para problemas de segurança. Em vez disso, por favor, envie um e-mail para `security@freecodecamp.org` e nós vamos investigar isso imediatamente. +### Where do I start if I want to work on an issue? -### Sou um estudante, posso ou trabalhar em nossa equipe com uma característica para créditos acadêmicos? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Sim, certeza. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -Enquanto estamos abertos a todas as contribuições, estamos abertos a todas as contribuições. por favor, note que não podemos nos comprometer com nenhuma linha do tempo que possa ser um requisito na sua faculdade ou universidade. Recebemos muitos pedidos de pulso e contribuições de código por desenvolvedores voluntários, e respeitamos o seu tempo e esforços. Não poderemos dar qualquer atenção especial a qualquer tipo de relações públicas para sermos justos com todos. +### I found a typo. Should I report an issue before I can make a pull request? -Solicitamos que você planeje com antecedência e trabalhe em um recurso tendo isso em mente. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### O que significam estas diferentes etiquetas marcadas em questões? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -O código mantenedor do [triagem](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues e pull requests com base em suas prioridade, gravidade e outros fatores. Você pode [encontrar um glossário completo de seus significados aqui](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Onde eu começo se quero trabalhar em uma questão? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Você deve passar por [**`ajuda queria`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) ou [**`primeiros cronômetros apenas`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) problemas para uma rápida visão geral do que está disponível para você trabalhar. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`help wanted`** issues are finished for grabs, and você não precisa procurar permissão antes de trabalhar neles. No entanto, problemas com os **`primeiros cronômetros apenas`** são reservados para pessoas que não contribuíram antes para a base de código freeCodeCamp. Se estas questões não forem esclarecidas sobre o que é preciso fazer, sinta-se livre de fazer perguntas nos comentários. +### I am stuck on something that is not included in this documentation. -### Encontrei um erro de digitação, devo relatar um problema antes de poder fazer um pull request? - -Para erros de digitação e outras alterações de formulação, você pode abrir diretamente pull requests sem criar uma issue primeiro. As questões são mais para discutir problemas maiores associados ao código ou aspectos estruturais do currículo. - -No entanto, mencione detalhes, contexto, etc. na área de descrição da pull request para nos ajudar a entender e rever sua contribuição mesmo para pequenas alterações. - -### Como recebo uma tarefa atribuída para mim? - -Normalmente não atribuímos problemas a ninguém além de contribuidores de longa data para evitar avisos ambíguos. Em vez disso, seguimos a política abaixo para ser justo para todos: - -1. A primeira pull request para qualquer problema é preferida para o merge. -2. No caso de múltiplas pull requests para o mesmo problema, damos prioridade à qualidade do código nas pull requests. - - Você incluiu testes? - - Você pegou todos os usos? - - Asseguraram que todos os testes passassem e confirmaram que tudo funciona localmente? -3. Finalmente, preferimos pull requests que seguem nossas diretrizes recomendadas. - - Você seguiu a checklist do pull request? - - Você nomeou significativamente seu título do pull request? - -Você não precisa de nenhuma permissão para issues que são marcadas `ajuda desejada` ou `primeiros temporizadores apenas` como explicado anteriormente. - -Siga as diretrizes cuidadosamente e abra um pull request. - -### Estou espantado com um aspecto que não está incluído nesta documentação. - -**Sinta-se à vontade para pedir ajuda em:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Estamos animados para ajudá-lo a contribuir com qualquer um dos tópicos em que você gostaria de trabalhar. Sinta-se à vontade para nos fazer perguntas sobre os tópicos relacionados a estas questões, e ficaremos felizes em esclarecer. Certifique-se de pesquisar sua consulta antes de postar uma nova. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Seja educado e paciente. Nossa comunidade de voluntários e moderadores está sempre à disposição para guiá-lo em suas consultas. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Assistência Adicional:** +**Additional Assistance:** -Se você tiver dúvidas sobre o pilho, arquitetura da base de código, sinta-se à vontade para entrar em contato com nossa equipe de desenvolvedores: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Funcionários | Enviar mensagem no fórum | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | -| Mrugesh Mohapatra | [@raisedad](https://forum.freecodecamp.org/u/raisedadead) | +| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | | Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | | Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | -| Randell Alvorada | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | +| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Você pode enviar um e-mail para a nossa equipe de desenvolvedores em: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Portuguese/_sidebar.md b/docs/i18n/Portuguese/_sidebar.md index 733f4401c1..1b5bda2bdc 100644 --- a/docs/i18n/Portuguese/_sidebar.md +++ b/docs/i18n/Portuguese/_sidebar.md @@ -1,36 +1,39 @@ -- **Primeiros passos** - - [Introdução](index 'Contribua para a comunidade freeCodeCamp.org') - - [Perguntas Frequentes](FAQ.md) -- **Contribuição de código** -- - [Configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md) - - [Abrir um pull request](how-to-open-a-pull-request.md) - - [Trabalhe em desafios de programação](how-to-work-on-coding-challenges.md) - - [Trabalho em desafios de vídeo](how-to-help-with-video-challenges.md) - - [Trabalhe no tema de notícias](how-to-work-on-the-news-theme.md) - - [Trabalhe no tema de docs](how-to-work-on-the-docs-theme.md) -- **Guias opcionais** - - [Captura de e-mails enviados localmente](how-to-catch-outgoing-emails-locally.md) - - [Configurar Campo Livre na WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Manuais de Voo** (para equipe & Mods) - - [Manual do Moderador](flight-manuals/moderator-handbook.md) - - [Modelos De Resposta](flight-manuals/using-reply-templates.md) - - [Visão Geral DevOps](devops.md) - - [Trabalhando em servidores](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Nossa Comunidade** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Fórum do Discourse**](https://freecodecamp.org/forum/c/contributors) - - [**Chat do Gitter**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Portuguese/devops.md b/docs/i18n/Portuguese/devops.md index b38c271c67..46fb8b5382 100644 --- a/docs/i18n/Portuguese/devops.md +++ b/docs/i18n/Portuguese/devops.md @@ -1,75 +1,75 @@ -# Operações de Desenvolvedor em freeCodeCamp.org +# DevOps Handbook -Este guia irá ajudá-lo a entender a nossa pilha de infraestrutura e como mantemos nossas plataformas. Embora este guia não tenha detalhes exaustivos para todas as operações, pode ser usado como referência para a sua compreensão dos sistemas. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Sejamos informados, se tiverem resposta ou dúvidas, e teremos todo o prazer em esclarecer. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Como é que vamos construir, testar e implantar o código? +# Flight Manual - Code deployments -Este repositório é continuamente criado, testado e implantado em **conjuntos de infraestrutura (Servers, Databases, CDNs, etc.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Isto implica três passos a seguir em sequência: +This involves three steps to be followed in sequence: -1. Novas alterações (correções e recursos) são mescladas em nosso branch de desenvolvimento primário (`master`) através de pull requests. -2. Estas alterações são executadas por uma série de testes automatizados. -3. Uma vez que os testes passem, liberamos as alterações (ou atualizá-las se necessário) para implantações em nossa infraestrutura. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Construindo a base de código - Mapeando Branches Git para implantações. +#### Building the codebase - Mapping Git Branches to Deployments. -Normalmente, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (o ramo de desenvolvimento padrão) é mesclado com o branch [`de produção de`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) uma vez por dia e é liberado em uma infraestrutura isolada. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Esta é uma versão intermediária para nossos desenvolvedores e colaboradores voluntários. É também conhecido como a nossa versão "staging" ou "beta". +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -É idêntico ao nosso ambiente de produção ao vivo em `freeCodeCamp.org`, além de usar um conjunto separado de bancos de dados, servidores, web-proxies, etc. Este isolamento nos permite testar o desenvolvimento contínuo e as funcionalidades em uma "produção" como um cenário, sem afetar os usuários regulares da plataforma principal do freeCodeCamp.org. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Uma vez que a equipe de desenvolvedores [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) está feliz com as mudanças na plataforma de preparo, essas alterações são movidas a cada poucos dias para o branch [`de produção -atual`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current). +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -Esta é a versão final que move mudanças para nossas plataformas de produção em freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Testando alterações - Teste de integração e de aceitação de usuário. +#### Testing changes - Integration and User Acceptance Testing. -Empregamos vários níveis de testes de integração e aceitação para verificar a qualidade do código. Todos os nossos testes são feitos por software como [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) e [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Temos testes unitários para testar nossas soluções desafiais, APIs do Servidor e interfaces de Usuário do Cliente. Eles nos ajudam a testar a integração entre diferentes componentes. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!NOTE] Também estamos escrevendo testes de usuário finais que ajudarão a replicar cenários do mundo real, como atualizar um e-mail ou fazer uma chamada para a API ou serviços de terceiros. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Juntos esses testes ajudam a evitar que problemas se repitam e garantir que não introduzimos um erro enquanto trabalhamos em outro bug ou em um recurso. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Implementando Alterações - Enviando alterações para os servidores. +#### Deploying Changes - Pushing changes to servers. -Nós configuramos software de entrega contínua para fazer push de mudanças no nosso servidor de desenvolvimento e produção. +We have configured continuous delivery software to push changes to our development and production servers. -Uma vez que as alterações são enviadas para os branches de lançamento protegidos, um pipeline de construção é automaticamente acionado para o branch. Os pipelines de construção são responsáveis pela construção de artefatos e guardá-los em um armazenamento frio para uso posterior. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -O pipeline de construção prossegue para acionar um pipeline de lançamento correspondente se ele completar uma execução bem-sucedida. Os pipelines de lançamento são responsáveis por coletar os artefatos de construção, movendo-os para os servidores e indo ao vivo. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Status de compilações e lançamentos estão [disponíveis aqui](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Desencadeando uma compilação, teste e implantação. +## Trigger a build, test and deploy -Atualmente, somente membros na equipe de desenvolvedores podem empurrar para os branches de produção. As alterações nas ramificações de `produção-*` podem pousar apenas por meio de uma fusão rápida para o [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!NOTE] Nos próximos dias nós melhoraríamos este fluxo a ser feito por meio de pedidos pully, para melhor gerenciamento de acesso e transparência. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Enviando alterações para aplicativos de Staging. +### Pushing changes to Staging Applications. -1. Configure os seus controles remotos corretamente. +1. Configure your remotes correctly. ```sh - git remoto -v + git remote -v ``` - **Resultados:** + **Results:** ``` - git@github.com:raisedadead/freeCodeCamp.git (fetch) - origin git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Certifique-se de que o seu branch `master` é imaculado e sincronizado com o upstream. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master @@ -77,24 +77,24 @@ Atualmente, somente membros na equipe de desenvolvedores podem empurrar para os git reset --hard upstream/master ``` -3. Verifique se o Travis CI está passando o `master` branch para upstream. +3. Check that the Travis CI is passing on the `master` branch for upstream. - Os [testes de integração contínua](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) devem ser verdes e PASSING para o `branch` principal. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
        Verificando status no Travis CI (captura de tela) +
        Checking status on Travis CI (screenshot)
        - ![Verificar status de construção no Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
        - Se isso está a falhar, você deve parar e investigar os erros. + If this is failing you should stop and investigate the errors. -4. Confirme se você consegue criar o repositório localmente. +4. Confirm that you are able to build the repository locally. ``` npm run clean-and-develop ``` -5. Mover alterações de `master` para `production-staging` através de uma rápida merge +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` git checkout production-staging @@ -102,124 +102,607 @@ Atualmente, somente membros na equipe de desenvolvedores podem empurrar para os git push upstream ``` - > [!NOTE] Você não será capaz de forçar o push e, se você reescreveu o histórico de qualquer forma, esses comandos irão falhar. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Se o fizerem, você pode ter feito algo errado e você deve apenas começar de novo. + > If they do, you may have done something incorrectly and you should just start over. -As etapas acima ativarão automaticamente uma execução de compilação do pipeline para o branch
        de produção de `. Uma vez que a compilação é concluída, os artefatos são salvos como arquivos .zip` em um armazenamento frio para serem recuperados e usados mais tarde. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -O pipeline de lançamento é acionado automaticamente quando um novo artefato está disponível a partir do pipeline de compilação conectada. Para plataformas de staging, este processo não envolve aprovação manual e os artefatos são empurrados para os servidores de CDN do cliente e API. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP├label:Estimates] Normalmente a execução de compilação leva ~20-25 minutos para completar seguida pela execução do lançamento, que leva ~15-20 minutos para o cliente, e ~5-10 mins para a API estar disponível ao vivo. De código push para ser vivo nas plataformas de staging todo o processo leva **~35-45 minutos** no total. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Empurrando alterações para Aplicações de Produção. +### Pushing changes to Production Applications. -O processo é principalmente o mesmo que as plataformas de preparo, com algumas verificações extras no lugar. Só para garantir, não quebramos nada no freeCodeCamp.org que possa ver centenas de usuários usá-lo a qualquer momento. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| NÃO execute esses comandos a menos que tenha verificado que tudo está funcionando na plataforma de preparo. Não deve ignorar ou ignorar qualquer teste no teste antes de prosseguir com o processo. | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Certifique-se de que seu branch de produção de `é imaculado e em sincronia com o stream. -
           git checkout production-staging
        +1. Make sure your `production-staging` branch is pristine and in sync with the upstream.
        +
        +   ```sh
        +   git checkout production-staging
            git fetch --all --prune
            git reset --hard upstream/production-staging
        -`
        + ``` -2. Mover alterações de `production-staging` para `production-current` por meio de uma rápida merge +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` - git checkout production-corrente + git checkout production-current git merge production-staging git push upstream ``` - > [!NOTE] Você não será capaz de forçar o push e, se você reescreveu o histórico de qualquer forma, esses comandos irão falhar. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Se o fizerem, você pode ter feito algo errado e você deve apenas começar de novo. + > If they do, you may have done something incorrectly and you should just start over. -The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Assim que um artefato de compilação estiver pronto, ele acionará uma execução no release pipeline. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP├label:Estimates] Normalmente a execução de compilação leva ~20-25 minutos para ser concluída. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Etapas adicionais para ação do pessoal** +**Additional Steps for Staff Action** -Um release run é acionado, membros da equipe de desenvolvedores receberão um e-mail manual de intervenção automático. Eles podem _aprovar_ ou _rejeitar_ a versão executar. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Se as alterações estão funcionando bem e foram testadas na plataforma de preparo, então podem ser aprovadas. A aprovação deve ser dada no prazo de 4 horas após a liberação ser acionada antes de ser automaticamente rejeitada. Uma equipe pode acionar novamente a execução de lançamento manualmente para execuções rejeitadas ou esperar pelo próximo ciclo de lançamento. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Para uso de funcionários: +For staff use: -| Verifique seu e-mail para obter um link direto ou [vá para o painel de liberação](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) depois que a execução da compilação estiver concluída. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Uma vez que um dos membros da equipe aprove uma liberação, o pipeline irá empurrar as mudanças ao vivo para o CDN de produção do freeCodeCamp.org. Eles normalmente levam cerca de 15 a 20 minutos para o cliente e ~5 mins para que os servidores API estejam disponíveis ao vivo. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP├label:Estimates] A execução do lançamento geralmente leva ~15-20 minutos para cada instância do cliente, e ~5-10 minutos para que cada instância da API esteja disponível ao vivo. De código a ser vivo nas plataformas de produção, todo o processo leva **~90-120 minutos** no total (não contando o tempo de espera para a aprovação de funcionários). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Status de Construção, Teste e Implantação +## Build, Test and Deployment Status -Aqui está o status atual de teste, compilação e implantação do código. +Here is the current test, build and deployment status of the codebase. -| tipo | Filial | SItuação | Painel | -|:------------------ |:------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------- | -| Testes de CI | [`mestre`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Status de compilação Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Ir para Painel de Status](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Testes de CI | [`preparo-produção`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Status de compilação Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Ir para Painel de Status](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Construir Pipeline | [`preparo-produção`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Estado da compilação](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Ir para Painel de Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Lançar Pipeline | [`preparo-produção`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Ir para Painel de Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| Testes de CI | [`produção-corrente`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Status de compilação Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Ir para Painel de Status](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Construir Pipeline | [`produção-corrente`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Estado da compilação](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Ir para Painel de Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Lançar Pipeline | [`produção-corrente`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Ir para Painel de Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Acesso antecipado e teste beta +## Early access and beta testing -Bem-vindo a você para testar estes lançamentos em um modo **de "beta testing"** e obter acesso antecipado às plataformas que estão por vir. Às vezes, esses recursos/mudanças são referidos como **próxima, beta, estágio,** etc. interligadamente. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Suas contribuições por meio de comentários e relatórios de issues nos ajudarão a fazer as plataformas de produção no `freeCodeCamp. rg` mais **resiliente**, **consistente** e **estável** para todos. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Agradecemos por relatar erros que você encontra e ajuda para melhorar o freeCodeCamp.org. Você deita! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Identificando a próxima versão das plataformas +### Identifying the upcoming version of the platforms -Atualmente uma versão pública de testes de beta está disponível em: +Currently a public beta testing version is available at:

        freecodecamp.dev

        -> [!NOTE] O nome de domínio é diferente de **`freeCodeCamp.org`**. Isso é intencional para evitar a indexação de mecanismos de busca e evitar confusão para usuários regulares da plataforma. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identificando a versão atual das plataformas +### Identifying the current version of the platforms -**A versão atual da plataforma está sempre disponível em [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -A equipe dev-team mescla mudanças do `branch` de produção de staging para `produção-corrente` quando eles lançam mudanças. O commit principal deve ser o que você ver ao vivo no site. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Você pode identificar a versão exata implantada visitando os logs de compilação e implantação disponíveis na seção de status. Como alternativa, você também pode nos pingar no chat dos [colaboradores](https://gitter.im/FreeCodeCamp/Contributors) para uma confirmação. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Limitações conhecidas +### Known Limitations -Existem algumas limitações e compromissos conhecidos ao usar a versão beta da plataforma. +There are some known limitations and tradeoffs when using the beta version of the platform. - #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Os usuários na versão beta terão uma conta separada da produção.** A versão beta usa um banco de dados fisicamente separado da produção. Isso nos dá a capacidade de evitar qualquer perda acidental de dados ou modificações. A equipe de desenvolvimento pode limpar o banco de dados nesta versão beta conforme necessário. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Não há garantias no uptime e confiabilidade das plataformas beta. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Espera-se que a implantação seja frequente e em iterações rápidas, às vezes várias vezes ao dia. Como resultado, haverá tempos de inatividade inesperados ou funcionalidades quebradas na versão beta. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Não enviar usuários regulares para este site como uma medida de confirmar uma correção +- #### Do not send regular users to this site as a measure of confirming a fix - O site beta é e sempre foi para melhorar o desenvolvimento e os testes locais, nada mais. Não é uma promessa do que está por vir, mas um vislumbre do que está sendo trabalhado. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### A página de sinais pode parecer diferente da produção +- #### Sign page may look different than production - Nós usamos um inquilino de teste para freecodecamp.dev no Auth0 e, portanto, não temos a capacidade de definir um domínio personalizado. Isso faz com que todas as callbacks de redirecionamento e a página de login apareçam em um domínio padrão como: `https://freecodecamp-dev.auth0.com/`. Isso não afeta que a funcionalidade esteja tão próxima da produção quanto podemos obter. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Relatar problemas e deixar feedback +## Reporting issues and leaving feedback -Por favor, abra novos problemas para discussões e reportar erros. Você pode rotulá-los como uma **[`versão: próxima/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** para triagem. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Você pode enviar um e-mail para `desenvolvimento[at]freecodecamp.org` se você tiver alguma dúvida. Como sempre, todas as vulnerabilidades de segurança devem ser relatadas à `segurança[at]freecodecamp.org` em vez do rastreador público e fórum. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

        https://amplify.nginx.com

        +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Portuguese/flight-manuals/moderator-handbook.md b/docs/i18n/Portuguese/flight-manuals/moderator-handbook.md deleted file mode 100644 index de71c85536..0000000000 --- a/docs/i18n/Portuguese/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# Manual oficial do Moderador Cadastro de Cadastramento. - -Isso ajudará você a moderar lugares diferentes em nossa comunidade, incluindo: - -- Problemas no GitHub & pull requests -- O fórum, salas de bate-papo, grupos do Facebook e outros locais de reuniões online -- Eventos presenciais como grupos de estudo, hackathons e conferências - -**Todos os moderadores são moderadores em toda a comunidade. Isso significa que confiamos em V. Exa. para supervisionar qualquer destes lugares.** - -Dito isto, você pode servir como moderador em quaisquer lugares que sejam do seu maior interesse. Alguns moderadores apenas ajudam no GitHub. Outros apenas ajudam no fórum. Alguns moderadores estão ativos em toda parte. - -O mais importante é que queremos que você goste de ser um moderador, e invista seu tempo escasso em lugares que sejam de interesse para você. - -> [!NOTA] "Com grande poder vem grande responsabilidade." - Tio Ben - -Como moderador, temperamento é mais importante do que habilidade técnica. - -Escutem. Seja útil. Não abuse do seu poder. - -free CodeCamp é uma comunidade inclusiva, e temos de a manter assim. - -Temos um código de conduta único que rege toda a nossa comunidade. Quanto menos forem as regras, mais fáceis de recordar. Você pode ler essas regras e confirmá-las na memória [aqui](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Os moderadores têm a capacidade de fechar issues e aceitar ou fechar pull requests. - -Moderadores têm duas responsabilidades primárias em relação ao GitHub: - -1. QA'ing e merge de pull requests -2. Avaliando e respondendo a problemas - -## Moderando Pull Requests - -Pull Requests (PRs) são como os colaboradores enviam alterações para o repositório do freeCodeCamp. É importante que realizemos uma Garantia de Qualidade (QA) nos pull requests antes de decidirmos se os mesclamos ou fechamos. - -### Tipos de Pull Requests - -1. **Edições de Instrução de Desafios** Estas são mudanças no texto dos desafios - Descrição, Instruções ou Texto de Testes. Você também pode revisá-los corretamente no GitHub e decidir se deseja mesclá-los. Temos de ser um pouco mais cuidadosos com estas medidas, porque milhões de pessoas vão encontrar este texto no seu trabalho através do currículo "freeCodeCampo". O pull request torna o texto mais claro sem deixá-lo muito mais longo? As edições são relevantes e não são excessivamente pedantes? Lembrem-se que o nosso objectivo é que os desafios sejam o mais claros e o mais curtos possível. Eles não são o lugar para detalhes obscuros. Além disso, contribuidores podem tentar adicionar links para os recursos dos desafios. Você pode fechar estes pull requests e responder com isto: - - > Obrigado por seu pull request. - > - > Termino este pull request. Por favor, adicione links e outros detalhes ao artigo guia correspondente do desafio. - > - > Se você acha que estou errado ao fechar este problema, por favor, reabra-o e adicione mais esclarecimentos. Muito obrigado e feliz codificação. - -2. **Edições do Código de Desafios** Estas são mudanças no código de um desafio - Semente de Desafio, Solução de Desafios e Strings de Testes. Esses pull requests precisam ser removidos do GitHub e testados em seu computador local para se certificar de que os testes de desafio ainda podem ser passados com a solução atual. e o novo código não introduz nenhum erro. Alguns contribuidores podem tentar adicionar testes adicionais para cobrir casos caídos pedantes. Temos de ter o cuidado de não complicar demasiado o desafio. Estes desafios e os seus testes devem ser tão simples e intuitivos quanto possível. Além dos desafios do algoritmo e da seção de preparação da entrevista, os alunos devem ser capazes de resolver cada desafio em cerca de 2 minutos. - -3. **A Codebase altera** Estas edições de código alteram a funcionalidade da própria plataforma freeCodeCamp. Às vezes contribuidores tentam fazer mudanças sem muita explicação, mas para que as alterações de código sejam necessárias para garantir que haja uma verdadeira necessidade de mudança. Portanto, esses pull requests devem fazer referência a um problema existente no GitHub, onde são discutidos os motivos da alteração. Então você pode abrir o pull request no seu computador e testá-los localmente. Depois que tiver feito isso, se as mudanças estiverem boas, não mescle elas ainda assim. Você pode comentar sobre o pull request dizendo "LGTM", e mencionar @raisedadead para que ele possa dar um olhar final. - -### Como fazer merge ou fechar pull requests - -Em primeiro lugar, quando você escolhe um pull request para controle de qualidade, você deve atribuir a si mesmo a ele. Você pode fazer isso clicando no link "Atribuir" abaixo da parte "atribuídos" na coluna direita da interface do GitHub. - -Dependendo do tipo de pull request que é, siga as regras correspondentes listadas acima. - -Antes de mesclar qualquer pull request, certifique-se de que o GitHub tem checkmarks verdes para tudo. Se houver qualquer X, investigue-os primeiro e descubra como fazê-los transformar em checkmarks verdes primeiro. - -Às vezes haverá um Conflito de Mesclagem. Isso significa que outro pull request fez uma alteração na mesma parte exata do mesmo arquivo. O GitHub tem uma ferramenta para resolver esses conflitos de merge diretamente no GitHub. Você pode tentar resolver esses conflitos. Basta usar seu melhor julgamento. As alterações do pull request serão no topo, e as alterações do branch principal serão abaixo. Por vezes, haverá informação redundante que pode ser eliminada. Antes de terminar, certifique-se de excluir o `<<<<<<`, `======`, e `>>>>>>` que o Git adiciona para indicar áreas de conflito. - -Se o pull request parece pronto para mesclar (e não requer aprovação de @raisedadead), você pode ir em frente e mesclá-lo. Certifique-se de usar a funcionalidade padrão "Squash and Merge" no GitHub. Isto irá esmagar todos os commits de pull requests em um único commit, o que tornará o histórico do Git muito mais fácil de ler. - -Em seguida, você deve comentar na pull request, agradecendo ao colaborador da sua própria maneira pessoal. - -Caso o autor da pull request seja um "colaborador pela primeira vez", você também deve felicitá-los por seu primeiro pull request com merge de um repositório. Pode-se olhar para o canto superior direito do corpo da RP para determinar um contribuinte pela primeira vez. Ele irá mostrar o `primeiro colaborador` como mostrado abaixo: - -![Copiar_editar_para_Java_arrays_article_por_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp,690x281](https://i.imgur.com/dTQMjGM.png) - -Se o pull request não parece pronto para fazer o merge, você pode responder educadamente dizendo ao autor o que ele deve fazer para prepará-lo. Esperamos que eles respondam e que preparem seu pull request. - -Muitas vezes, um pull request é manifestamente pouco empenhado. Você costuma dizer isso imediatamente quando o colaborador não se incomodava em marcar as caixas de seleção no modelo de Pull Request, ou usou um título genérico de pull request como "alterações feitas" ou "índice de atualização. d". - -Há também situações em que o colaborador está tentando adicionar um link para o seu próprio site, ou inclua uma biblioteca que eles mesmos criaram, ou tem uma edição frívola que não serve para ajudar ninguém, exceto a si mesmos. - -Em ambas as situações, você deve prosseguir e fechar sua pull request e responder com esta mensagem padrão: - -> Obrigado por abrir este pull request. -> -> Esta é uma mensagem padrão avisando que revisamos sua pull request e decidimos não fazer o merge. Gostaríamos de receber futuros pull requests. -> -> Muito obrigado e feliz codificação. - -Se você precisar de uma segunda opinião em uma pull request, vá em frente e deixe seus comentários no pull request, em seguida, adicione o rótulo "discutir" ao pull request. - -## Moderando problemas no GitHub - -freeCodeCamp é um projeto de código aberto ativo. Todos os dias recebemos novas questões, todas elas precisam de ser testadas e identificadas. - -### Tipos de Problemas no GitHub - -1. **Code Help Requests**, para os quais as pessoas criaram erroneamente problemas no GitHub. Se alguém estiver pedindo ajuda, cole a seguinte mensagem, então feche o problema. - - > Obrigado por relatar este problema. - > - > Esta é uma mensagem padrão que notifica que este problema parece ser um pedido de ajuda. Ao invés de pedir ajuda aqui, por favor, clique no botão \*\*"Ajuda"\*\* no desafio no freeCodeCamp, que o ajudará a criar uma pergunta na parte correta do fórum. Voluntários no fórum geralmente respondem a perguntas dentro de algumas horas e podem ajudar a determinar se há algum problema com seu código ou com os testes do desafio. - > - > Se os membros do fórum determinarem que não há nada de errado com seu código, você pode solicitar que essa issue seja reaberta. - > - > Muito obrigado e feliz codificação. - -2. **Bug ou problemas de esclarecimento** Tente reproduzir o bug você mesmo, se puder. Se não, peça a eles as etapas para reproduzir o erro, e se eles têm alguma captura de tela, vídeos ou detalhes adicionais que podem ajudá-lo a reproduzir o problema. Uma vez que você possa reproduzir a issue - ou pelo menos confirmar que é uma issue legítima - rotule-a como `confirmada`. Então: - -- Se for uma mudança simples para um desafio existente, rotule como `primeiros temporizadores somente`, caso contrário, label como `help desejado`. Use outros rótulos conforme apropriado. -- Se a questão for mais significativa, sinalize como `bug`.   Se houver alguma ambiguidade quanto ao rumo adequado da ação em uma questão, Sinta-se à vontade para marcar @raisedadead sobre o problema obter sua opinião sobre o assunto, e então adicionar o rótulo `discutindo`. - -3. **Problemas duplicados** Se uma issue é o mesmo que outro problema reportado, a issue reportada anterior deve ter prioridade. Marque como `Duplicar`, cole a seguinte mensagem substituindo `#XXXXX` pelo número do problema, e então feche a issue. - - > Obrigado por relatar este problema. - > - > Esta é uma mensagem padrão avisando que este problema parece ser muito semelhante à issue #XXXXX, É por isso que a encerro como uma duplicação. - > - > Se você acha que estou errado ao fechar este problema, por favor, reabra-o e adicione mais esclarecimentos. Muito obrigado e feliz codificação. - -4. **Corrigido no staging** Alguns problemas podem já ter sido corrigidos no staging, mas não tem um problema no GitHub associado a eles. Se esse for o caso, você pode colar a seguinte mensagem, fechar o problema e adicionar um status de `: resolveu/frete` label: - - > Obrigado por relatar este problema. - > - > Esta é uma mensagem padrão que informa que o problema que aqui referiu está presente em produção. mas que já foi fixada em estagnação. Isto significa que na próxima vez que pressionarmos o ramo de preparação para a produção, este problema deve ser resolvido. Por causa disso, estou encerrando essa questão. - > - > Se você acha que estou errado ao fechar este problema, por favor, reabra-o e adicione mais esclarecimentos. Muito obrigado e feliz codificação. - -### Fechando o Estale, Desatualizado, Issues Inativas e Pull Requests - -- Problemas obsoletos ou PRs são aqueles que não viram nenhuma atividade do OP por 21 dias (3 semanas após a última atividade), mas somente após um moderador solicitar mais informação/alterações. Estes podem ser fechados em um script automático/bot ou pelos próprios moderadores. - -- Atividade é definida como: Comentários solicitando uma atualização no PR e triagens como o status `: atualização necessária` label etc. - -- Se o OP pedir assistência adicional ou mesmo tempo, o acima pode ser relaxado e revisto após uma resposta. De qualquer forma, os mods devem usar o seu melhor julgamento para resolver o status de RP pendente. - -### Outras diretrizes para moderadores no GitHub - -Embora você tenha acesso de escrita ao repositório do freeCodeCamp, **você nunca deve enviar o código diretamente para repositórios do freeCodeCamp**. Todos os códigos devem inserir a base de código do freeCodeCamp na forma de uma pull request de uma bifurcação do repositório. - -Além disso, você nunca deve aceitar suas próprias PRs. Eles devem ser QA'd por outro moderador, assim como qualquer outro PR. - -Se você notar que alguém quebrou o [código de conduta](https://code-of-conduct.freecodecamp.org) em questões GitHub, ou abrindo pull requests com conteúdo ou código malicioso, e-mail dev@freecodecamp. rg com um link para a solicitação de tração contrária e podemos considerar bani-los da organização do freeCodeCamp no GitHub. - -# Moderando o Fórum - -Como moderador, você ajuda a manter nossa comunidade um lugar agradável para qualquer pessoa aprender e buscar ajuda. Você lidará com postagens sinalizadas e tratará de spam, fora do tópico e outras conversas inapropriadas. - -Note que uma vez que você é um moderador no fórum, você vai começar a ver dicas azuis sobre os membros do fórum. como"esta é a primeira vez que o [person] postou - vamos dar as boas-vindas à comunidade! ou "[person] não postou há muito tempo - vamos recebê-los de volta." - -![Uma mensagem de texto azul dizendo "esta é a primeira vez [person] que postou - vamos dar as boas-vindas à comunidade!](https://i.imgur.com/mPmVgzK.png) - -Estas são oportunidades para você recebê-las e fazê-las sentirem-se mais especiais. Nunca se sabe qual pessoa que está marginalmente envolvida pode ser o nosso próximo super-ajudante, ajudando muitas outras pessoas na sua viagem de codificação. Mesmo a menor bondade pode desencadear uma cascata de boas ações. - -### Excluir publicações no fórum - -Moderadores do fórum têm a capacidade de excluir as postagens do usuário. Você só deve fazer isso para as seguintes instâncias: - -1. Alguém publicou uma imagem pornográfica ou graficamente violenta. -2. Alguém postou uma ligação ou código malicioso na natureza e pode prejudicar outros camufladores que clicam nela. -3. Alguém inundou um tópico com muitas mensagens de spam. - -### Lidando com spam - -Para a primeira postagem de spam de um usuário, envie uma mensagem explicando o problema e remova o link ou postar conforme apropriado. Deixe uma nota no perfil do usuário explicando a ação que você tomou. Se o problema persistir, siga o processo acima. Bloqueia silenciosamente o usuário de postar (usando a opção de silêncio no painel de Administração do Usuário), e então envie um aviso com o Código de Conduta. Marque a caixa na mensagem privada que indica que a sua mensagem é um "aviso formal." - -Você pode fazer perguntas e relatar incidentes na [seção do fórum da equipe](https://forum.freecodecamp.com/c/staff). - -### Lidando com conversas fora do tópico - -Posts ou tópicos que parecem estar no lugar errado podem ser renomeados para o que for apropriado. - -Em circunstâncias excepcionais, pode ser apropriado que um moderador bifurque uma discussão em vários assuntos. - -Novamente, se você tiver algum problema ou dúvidas, faça um post com suas ações na categoria Pessoal, e marcar outro moderador se você quiser que eles revisem suas ações de moderação. - -### Usuários menores - -Nossos Termos de Serviço exigem que os usuários do freeCodeCamp tenham pelo menos 13 anos de idade. No caso que um usuário revele que ele tem menos de 13 anos envie a mensagem abaixo e exclua sua conta do fórum (se a exclusão não estiver disponível, suspender a conta é suficiente). Em seguida, envie um e-mail para [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) ou [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) para excluir a conta freeCodeCamp do usuário também. - -```markdown -ASSUNTO: Usuários com menos de 13 anos não têm permissão para usar o fórum por termos de serviço - -Chegou à nossa atenção o facto de você ter menos de 13 anos de idade. Por força dos [termos de serviço](https://www.freecodecamp.org/news/terms-of-service), você deve ter pelo menos 13 anos para usar o site ou o fórum. Vamos excluir sua conta no Modo Livre e sua conta no fórum. Esta restrição mantém-nos em conformidade com as leis dos Estados Unidos. - -Por favor entre novamente quando tiver pelo menos 13 anos de idade. - -Obrigado pela vossa compreensão. -``` - -# Moderação do Facebook - -Se você ver algo que pareça quebrar nosso [Código de Conduta](https://code-of-conduct.freecodecamp.org/), você deve excluí-lo imediatamente. - -Às vezes, as pessoas publicam coisas que acham engraçadas. Eles não percebem que o que disseram ou o que compartilharam podem ser interpretados como ofensivos. Nesses casos, sua publicação deve ser excluída, mas a pessoa que a publicou não precisa necessariamente ser banida. Ao serem deletados o seu cargo, espera-se que venham a compreender que o que publicaram era inadequado. - -Mas se é um delito flagrante que não pode razoavelmente ser atribuído a uma diferença cultural ou a um mal-entendido da língua inglesa. então você deve considerar fortemente bloquear o membro do grupo do Facebook. - -# Moderando o Discord - -Veja como os moderadores lidam com violações do nosso [Código de Conduta](https://code-of-conduct.freecodecamp.org/) no Discord: - -1. **Certifique-se de que a intenção foi violar o Código de Conduta.** Nem todas as violações do CoC se destinavam a tal. Um novo camper pode postar uma grande quantidade de código para ajuda, sem saber que isso pode ser considerado spamming. Nesses casos, você pode apenas pedir que cole o código com serviços como Codepen ou Pastebin. - -2. **Se o acampador violar claramente o Código de Conduta, o moderador procederá da seguinte forma:** - -- Suspender o acampamento ofensivo, mas não avisar ou ameaçá-los. Em vez disso, dê a eles a função Suspensa no Discord, e então envie-lhes a seguinte mensagem: - -``` -Esta é uma mensagem padrão avisando que tive que te suspender temporariamente de falar no servidor do Discord freeCodeCamp. - -Sou um moderador agindo em nome da nossa comunidade de código aberto. Eu posso considerar a remoção de sua suspensão, mas preciso que você dê os seguintes 3 passos primeiro: - -1. Leia o nosso Código de Conduta: https://code-of-conduct.freecodecamp.org/ -2. Mande-me uma mensagem confirmando que você terminou de lê-la. -3. Me explique por que você acha que eu te suspendi e por que devo remover sua suspensão. -``` - -- Reporte um breve resumo do evento e como eles responderam a ele no canal #admin. Aqui está um exemplo de como esse resumo pode parecer: - -``` -Suspenso: _@username_ -Motivo(s): _Spamming, trolling_ -evidência: _Um ou mais links para a(s) mensagem(ns)_ -CoC: _Enviado_ -``` - -- Deve ser parecido com um relatório para a eliminação da suspensão: - -``` -Eu removi a suspensão de ` @username `. Eu lhes enviei o Código de Conduta. Hoje, eles perceberam que foram suspensos e pediram desculpas pelo que fizeram. -``` - -- Com base na resposta dos delinquentes, o moderador decidirá se deseja retirar a suspensão do acampamento delituoso. Se parecerem respeitadores e desculpas, o moderador pode remover a suspensão. Por uma questão de política, os moderadores serão educados durante este processo, por muito pobre que tenha sido o acampamento delituoso. Se eles não são respeitadores ou não estiverem dispostos a aceitar o CoC, a suspensão deve ser seguida de um banimento do servidor do Discord. Utilize o mesmo resumo como acima, mas substitua "Suspenso:" por "Banned:". - -3. **Como banir e/ou desbanir** - -- Para banir alguém, clique com o botão direito na foto de usuário/perfil deles e selecione "Banir ". Você terá a opção de excluir suas mensagens anteriores - selecione "Não excluir nenhum", uma vez que as mensagens devem permanecer presentes como um recorde histórico. -- Se você decidir banir alguém, isso significa que eles não estão dispostos a cumprir o nosso Código de Conduta. Por conseguinte, a proibição de um Camper raramente deverá ocorrer. No entanto, se surgir a necessidade, você pode fazê-lo clicando no nome do servidor, escolhendo "Configurações do servidor", escolhendo "Bans", selecionando o usuário que deseja desbanir, e clicando em "Revogar Bando". - -Os banimentos do Discord são globais - você não pode banir um usuário de um canal específico, somente do servidor inteiro. - -4. **Excluindo mensagens** Moderadores podem excluir mensagens no Discord. Deverão exercer essa capacidade apenas em quatro situações muito específicas: - -- Alguém publicou uma imagem pornográfica ou graficamente violenta. -- Alguém postou uma ligação ou código malicioso na natureza e pode prejudicar outros camufladores que clicam nela. -- Alguém inundou o bate-papo com muitas mensagens de spam em medida extrema (geralmente envolvendo bots) que tornam o chat completamente inutilizável. -- Alguém publicou anúncio e / ou uma mensagem / imagem auto-promovida (mídias sociais). - -Em todas as outras situações - mesmo em situações em que o código de conduta é violado - os moderadores não devem apagar a mensagem, uma vez que se trata de um importante registo histórico. Quando você apagar uma mensagem, certifique-se de tirar uma captura de tela primeiro! A captura de tela pode ser registrada no canal #mod-log, mas para o #log de actividades, é suficiente dizer que a evidência foi "removida devido a um conteúdo sensível". Nota: Se a mensagem contém material que seria ilegal para tirar uma captura de tela, copie o link da mensagem - forneça o link da mensagem para @raisedadead para avançar para a equipe de confiança e segurança do Discord. - -5. **Não use @all ou @here** Não use @all ou @here sob nenhuma circunstância! Cada pessoa naquela sala de bate-papo receberá uma notificação. Em alguns casos, dezenas de milhares de pessoas. Em vez disso, se querem que as pessoas vejam um anúncio, podem fixá-lo no canal para permitir que todos o lem. - -6. **Não ameace banir ou suspender** Se um camper está quebrando o código de conduta, não ameace banir ou suspendê-los e nunca avisá-los em público. Em vez disso, fale com eles em privado, ou envie-lhes um MD e emita uma suspensão (por acordo com o protocolo acima). Ninguém mais desse canal precisa saber que você baniu / suspendeu a pessoa - os camponeses podem ver o resumo no canal #activity-log se quiserem continuar acompanhando essas informações. Se uma violação tiver sido claramente não intencional e não justificar uma suspensão ou conversa privada, sensibiliza o acampador ofuscante de suas ações / dela sem fazê-lo aparecer como um aviso. Por exemplo: - -- Camper postou uma parede de código para solicitar ajuda - - Moderador: @username Use Codepen ou Pastebin para postar grandes quantidades de código. - -- Ou se você realmente tem que explicar o porquê: - - Moderador: @username Use Codepen ou Pastebin para publicar grandes quantidades de código, porque perturba o chat para todos e pode ser considerado spamming de acordo com o nosso Código de Conduta. - -- Para violações suaves e não intencionais do código de conduta - - Moderador: Este é um lembrete amigável para todos seguirem o código de conduta: https://code-of-conduct.freecodecamp.org/ - -7. **Não se divirta em ser moderador** Não se veja como acima da comunidade. Você é a comunidade. E a comunidade confiou em você para proteger algo raro que todos compartilhamos - um _lugar_ de recepção para novos desenvolvedores. Se você se gaba de ser um moderador, as pessoas podem se sentir desconfortáveis ao seu redor, da mesma forma que as pessoas podem se sentir desconfortáveis ao redor de um policial, mesmo que não estejam fazendo nada de errado. Isto é apenas uma natureza humana. - -8. **Não contradiga os outros moderadores** Se você discordar da ação de um moderador, fale com eles em privado ou levante-o no canal de chat #mod. Nunca sobrescrever um banimento e nunca contradiz os outros moderadores publicamente. Em vez disso, realizem uma discussão fria no chat de moderação e convençam o moderador de que ele próprio deveria reverter a sua proibição ou mudar o seu ponto de vista. Lembre-se: estamos todos na mesma equipe. Queremos dignificar o papel dos moderadores e apresentar uma frente unificada. - -9. **Fale com outros moderadores** Só temos espaço para moderadores. Use-o. Se você se sentir desconfortável com como lidar com uma determinada situação, peça ajuda a outros moderadores. Se você acha que algo deveria ser discutido, faça. Você é parte da equipe e valorizamos a entrada de cada membro da equipe! Mesmo que você discorde totalmente de qualquer coisa destas orientações ou do Código de Conduta! - -10. **Temporariamente inativo** Se você não estiver ativo como moderador por um tempo de férias, doença ou qualquer outro motivo, certifique-se de que os outros saibam no canal de chat #mod. É assim que sabemos se podemos contar com você para estar regularmente ativo no servidor ou não. - -# Como se tornar um moderador - -Se você estiver ajudando pessoas da comunidade de forma consistente ao longo do tempo, nossa equipe de moderadores eventualmente tomará nota, e um deles vai te mencionar como um moderador possível de [nossa equipe](https://forum.freecodecamp.org/g/Team). Não há atalhos para se tornar um moderador. - -Se você for aprovado, vamos adicioná-lo a nosso Moderador Times no [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [fórum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTE] > **Para o GitHub:** Depois de ser aceito como moderador, você receberá um convite para o repositório do Github. Você precisará ir para [freeCodeCamp GitHub Organisation convite](https://github.com/orgs/freeCodeCamp/invitation) para poder aceitar o convite. Isso é necessário para que possamos lhe dar acesso de escrita em alguns dos nossos repositórios. - -# Como aposentamos moderadores inativos - -Por favor, note que frequentemente removeremos mods que achamos estarem inativos. Quando fizermos isso, enviaremos a seguinte mensagem: - -> Esta é uma mensagem padrão avisando que, já que você não parece ter sido um moderador ativo recentemente, nós o removemos de nossa equipe de moderadores. Agradecemos profundamente a sua ajuda no passado. - -> Se você acha que fizemos isso por engano, ou quando você estiver pronto para voltar e contribuir mais, apenas responda a essa mensagem me informando. - -# Como funciona a sala dos nossos colaboradores - -Qualquer pessoa é bem-vindo na sala de [Colaboradores no nosso Discord](https://discord.gg/KVUmVXA). É a sala de bate-papo designada para moderadores e outros campistas que estão contribuindo para a nossa comunidade de todas as maneiras incluindo através de grupos de estudo. - -Nossa suposição é que contribuidores irão ler qualquer coisa nesta sala que os mencionam diretamente com um `@username`. Tudo o resto é opcional. Mas sinta-se à vontade para ler o que quer que seja lá posto e interagir. - -# Lidando com solicitantes - -Você pode ser abordado por organizações que queiram parceira ou co-marca com o freeCodeCamp de alguma forma. Assim que você perceber que é isso que eles estão depois, por favor pare de falar com eles e diga-lhes para enviar um e-mail para quincy@freecodecamp.org. Ele recebe sempre propostas como esta e está em melhor posição para avaliar se tal relação valerá a pena para a nossa comunidade (e raramente vale). - -# Lidando com dúvidas (mentais) sobre saúde - -Você pode encontrar situações em que os usuários estão à procura de aconselhamento médico ou estão a lidar com problemas de saúde mental e estão à procura de apoio. Por uma questão de política, deveria evitar falar em privado sobre estas questões. Caso a situação em algum momento reflicta o fCC, queremos que as conversas sejam registadas. Deixar claro que não somos profissionais de saúde e que você incentiva o usuário a encontrar ajuda profissional. Por mais difícil que seja às vezes, evite dar dicas ou conselhos além de apontar o usuário para a ajuda profissional! - -Se isso acontecer no Discord: Suspense o usuário. Não se trata de os castigar! Suspender um usuário criará um canal privado que só é acessível pelo usuário e pela equipe. Isso irá beneficiar tanto o usuário como o fCC de várias maneiras: - -- O usuário tem a garantia de alguma privacidade -- O chat público não está mais interrompido -- Outros membros da equipe podem intervir, caso você se sinta desconfortável em lidar com a situação você mesmo - -> [!NOTE] Suspender um usuário automaticamente lhe dá uma mensagem sobre a leitura do nosso Código de Conduta. Certifique-se de informar ao usuário que você o suspendeu para dar alguma privacidade a ele e que ele não está sendo punido. Isto é muito importante! Nós queremos, absolutamente, evitar dar aos usuários a ideia de que eles estão sendo punidos por conseguirem ajuda! - -Se você acredita que o usuário é capaz de se rejuntar à comunidade, clique com o botão direito no canal privado e copie o ID. Coloque as seguintes mensagens no log #mod: - -> Referência de aconselhamento médico: - -Depois disso, você pode remover a suspensão do usuário como normalmente faz. - -URLs úteis: - -http://www.suicide.org/international-suicide-hotlines.html - -# Uma nota sobre a voz livre - -Às vezes as pessoas vão defender algo ofensivo ou incendiário que disseram como "liberdade de expressão". - -Esta cómica XKCD resume perfeitamente a maioria dos pensamentos das comunidades sobre a liberdade de expressão. Então se alguém defender algo que está dizendo como "voz livre" sinta-se à vontade para enviá-lo para eles. - -
        - -Obrigado por ler isto, e obrigado por ajudar a comunidade de desenvolvedores! diff --git a/docs/i18n/Portuguese/flight-manuals/using-reply-templates.md b/docs/i18n/Portuguese/flight-manuals/using-reply-templates.md deleted file mode 100644 index 3da84f4219..0000000000 --- a/docs/i18n/Portuguese/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Usando Modelos de Resposta - -Estes são alguns dos modelos de resposta padrão que você pode usar durante a revisão de pull requests e problemas de triagem. - -> Você pode criar seu próprio com o recurso embutido do GitHub [**As respostas salvas**](https://github.com/settings/replies/) ou usar as abaixo. - -### Muito obrigado - -```markdown -Obrigado por sua contribuição para a página! 👍 -Estamos felizes em aceitar essas alterações e aguardamos futuras contribuições. 🎉 -``` - -### Obrigado e parabéns - -> Por agradecer e incentivar os primeiros colaboradores. - -```markdown -Olá, @username. Parabéns pelo seu primeiro pull request (PR)! 🎉 - -Obrigado pela sua contribuição para a página! 👍 -Estamos felizes em aceitar essas alterações e aguardamos futuras contribuições. 📝 -``` - -### Erro na compilação - -```markdown -Olá @username - -Nós adoraríamos ser capazes de mesclar suas mudanças, mas parece que há um erro com a compilação do Travis CI. ⚠️ - -Depois de resolver esses problemas, poderemos revisar seu PR e mesclá-lo. 😊 - ---- - -> Sinta-se à vontade para fazer referência ao [Guia de estilo para escrever artigos](https://github. om/freeCodeCamp/freeCodeCamp#article-title) para este repositório ao formatar um artigo corretamente para que o seu Travis CI possa ser aprovado. ✅ -> -> Além disso, é uma boa prática no GitHub escrever uma breve descrição de suas alterações ao criar um PR. 📝 -``` - -### Sincronizando o Fork - -> Quando o PR não está atualizado com o branch `master`. - -``````markdown -Olá @username - -Nós adoraríamos ser capazes de mesclar suas mudanças, mas parece que há um erro com a compilação do Travis CI. ⚠️ - -```bash -Error: ENOTDIR: not a directory, abra 'src/pages/java/data-abstraction/index.md' -`````` - -Esse erro em particular não foi causado pelo seu arquivo, mas foi um erro antigo causado por mesclar o código defeituoso no branch `master`. Desde então, a questão está resolvida. - -Para passar a compilação, você precisará sincronizar as últimas alterações do repositório `master` do repositório `freeCodeCamp/freeCodeCamp`. - -Usando a linha de comando, você pode fazer isso em três etapas simples: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -Se você estiver usando uma interface gráfica, basta `adicionar um novo controle remoto...` e usar o link `git://github.com/freeCodeCamp/freeCodeCamp.git` de cima. - -Depois de sincronizar seu fork e passar a compilação, poderemos rever seu PR e mesclá-lo. 😊 - ---- - -> Sinta-se à vontade para fazer referência ao artigo [Sincronizando um Fork](https://help.github.com/articles/syncing-a-fork/) no GitHub para saber mais sobre como manter o seu fork atualizado com o repositório a montante. 🔄 -> -> Além disso, é uma boa prática escrever uma breve descrição de suas alterações ao criar um PR. 📝 -`````` - -### Conflitos de Mesclagem - -> Quando PR tem conflitos de mesclagem que precisam ser resolvidos.1 - -```markdown -Olá @username - -Adoraríamos fazer merge de suas alterações, mas parece que você tem alguns conflitos de mesclagem. ⚠️ - -Quando você resolver esses conflitos, poderemos rever seu PR e fazer o merge. 😊 - ---- - -> Se você não estiver familiarizado com o processo de conflito de merge, sinta-se à vontade para analisar o guia do GitHub sobre ["Resolvendo um conflito de mesclagem"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> Além disso, é uma boa prática no GitHub escrever uma breve descrição das alterações ao criar um PR. 📝 -`````` -1 Se um primeiro contribuidor do tempo tiver um conflito de fusão, os mantenedores resolverão o conflito para eles. - -### Duplicate - -> Quando o PR é repetitivo ou duplicado. - -```markdown -Olá @username - -Parece que mudanças semelhantes já foram aceitas anteriormente por esse artigo que você está editando, desculpe por isso. 😓 - -Se você acha que tem mais para adicionar, por favor, sinta-se à vontade para abrir um novo PR. - -Obrigado novamente! 😊 - ---- - -> Se tiver alguma dúvida, fique à vontade para entrar em contato através de [Gitter](https://gitter.im/FreeCodeCamp/Contributors) ou comentando abaixo. 💬 -``` - -### Fechando pull requests inválidos - -> Quando o PR é inválido. - -```markdown -Olá, @username - -Você não adicionou nenhum conteúdo, vamos fechar este PR e marcá-lo como `inválido`. 😓 - -Sinta-se à vontade para abrir outro PR! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Portuguese/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Portuguese/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Portuguese/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

        https://amplify.nginx.com

        -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Portuguese/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Portuguese/how-to-catch-outgoing-emails-locally.md index 8b3bbc2f6f..397ea3382a 100644 --- a/docs/i18n/Portuguese/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Portuguese/how-to-catch-outgoing-emails-locally.md @@ -1,68 +1,67 @@ -> **Nota:** Esta é uma **etapa** opcional e é necessária somente quando trabalhando com fluxos de trabalho de e-mail +> **Note:** This is an **optional** step and is required only when working with email workflows -## Introdução +## Introduction -Alguns fluxos de e-mail, como atualizar o e-mail de um usuário, requer que o servidor api-end envie e-mails de saída. Uma alternativa ao uso de um provedor de serviço de e-mail para enviar mensagens reais de e-mail, Mailhog é uma ferramenta de desenvolvedor para teste de e-mail que irá pegar as mensagens de e-mail enviadas pela sua instância de freeCodeCamp. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Instalando MailHog +## Installing MailHog -MailHog pode ser instalado no macOS, Windows e Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Introdução](#introduction) -- [Instalando MailHog](#installing-mailhog) - - [Instalando MailHog no macOS](#installing-mailhog-on-macos) - - [Instalando MailHog no Windows](#installing-mailhog-on-windows) - - [Instalando MailHog no Linux](#installing-mailhog-on-linux) -- [Usando MailHog](#using-mailhog) -- [Links Úteis](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Instalando MailHog no macOS +### Installing MailHog on macOS -Instale o MailHog no macOS com [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash - -brew install mailhog - brew services start mailhog +brew install mailhog +brew services start mailhog ``` -Os comandos acima iniciarão um serviço de mailhog em segundo plano. +The above commands will start a mailhog service in the background. -Quando a instalação for concluída, você pode começar [usando MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Instalando MailHog no Windows +### Installing MailHog on Windows -Baixe a versão mais recente do MailHog do [repositório oficial do MailHog](https://github.com/mailhog/MailHog/releases). Localize e clique no link para a sua versão do Windows (32 ou 64 bits) e um arquivo .exe será baixado para o computador. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Quando o download terminar, clique para abrir o arquivo. Uma notificação de firewall do Windows pode aparecer, solicitando permissão de acesso para MailHog. Um prompt de linha de comando padrão do Windows abrirá onde o MailHog será executado quando o acesso ao firewall for concedido. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Feche o MailHog fechando a janela de solicitação. Para iniciar o MailHog novamente, clique no executável do MailHog (. xe) arquivo que foi baixado inicialmente - não é necessário baixar um novo arquivo de instalação do MailHog. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Comece [usando MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Instalando MailHog no Linux +### Installing MailHog on Linux -Primeiro, instale [Go](https://golang.org). +First, install [Go](https://golang.org). -Execute os seguintes comandos para instalar GO em sistemas baseados em Debian, como o Ubuntu e o Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Execute os seguintes comandos para instalar GO em sistemas baseados em RPM, como CentOS, Fedora, Red Hat Linux, etc. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Como alternativa, execute os seguintes comandos para instalar o GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Agora defina o caminho para ir com os seguintes comandos. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile @@ -70,7 +69,7 @@ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile source ~/.profile ``` -Finalmente, digite os comandos abaixo para instalar e executar MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -78,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Comece [usando MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Usando MailHog +## Using MailHog -Abra uma nova guia ou janela do navegador e navegue até [http://localhost:8025](http://localhost:8025) para abrir sua caixa de entrada do MailHog quando a instalação do MailHog for concluída e o MailHog estiver em execução. A caixa de entrada se parece parecida com a captura de tela abaixo. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![Screenshot do MailHog 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -E-mails enviados pela instalação do seu CodeCamp aparecerão abaixo +Emails sent by your freeCodeCamp installation will appear as below -![Screenshot MailHog 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -Duas guias que permitem que você veja texto simples ou conteúdo fonte estarão disponíveis quando você abrir um determinado e-mail. Certifique-se de que a aba de texto simples esteja selecionada como abaixo. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![Screenshot MailHog 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Todos os links no e-mail devem ser clicáveis e resolver a URL deles. +All links in the email should be clickable and resolve to their URL. -## Links Úteis +## Useful Links -- Confira o repositório [MailHog](https://github.com/mailhog/MailHog) para mais informações relacionadas ao MailHog. Informações adicionais também estão disponíveis sobre configurações personalizadas de MailHog. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Portuguese/how-to-help-with-video-challenges.md b/docs/i18n/Portuguese/how-to-help-with-video-challenges.md index df678b9eb2..0724aaef02 100644 --- a/docs/i18n/Portuguese/how-to-help-with-video-challenges.md +++ b/docs/i18n/Portuguese/how-to-help-with-video-challenges.md @@ -1,84 +1,84 @@ -# Como ajudar com desafios de vídeo +# How to help with video challenges -Os desafios em vídeo são um novo tipo de desafio no currículo freeCodeCamp. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -O desafio de vídeo é uma pequena seção de um curso em vídeo completo sobre um determinado tópico. Uma página de desafio de vídeo incorpora um vídeo do YouTube. Cada página de desafio tem uma única pergunta de múltipla escolha relacionada ao vídeo. Um usuário deve responder à pergunta corretamente antes de passar para o próximo desafio de vídeo do curso. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -As páginas de desafio de vídeo são criadas por membros da equipe freeCodeCamp. Vídeos do YouTube também são enviados por membros da equipe freeCodeCamp. Muitos dos desafios em vídeo ainda não têm perguntas a eles associadas. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Você pode ajudar, criando questões de múltipla escolha relacionadas às seções de vídeo e adicionando as questões aos arquivos markdown para os desafios de vídeo. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Modelo de desafio +## Challenge Template -Abaixo está um modelo de como são os arquivos markdown do desafio. +Below is a template of what the challenge markdown files look like. ````md --- -id: Identificador exclusivo (alfanumérico, MongoDB_id) -título: Desafio Título -Desafio: 11 -videoId: 'YouTube videoId para desafio de vídeo' +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 11 +videoId: 'YouTube videoId for video challenge' --- -## Descrição +## Description
        -Uma descrição opcional com informações úteis relacionadas ao vídeo. +An optional description with helpful information related to the video.
        -## Testes +## Tests
        ```yml -question - text: 'Pergunta' - respostas: - - 'Responder Um' - - 'Responder Do' - - 'Responder II' - solução: 3 +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
        ```` -## Criar perguntas para desafios de vídeo +## Creating questions for video challenges -### Acessar os arquivos markdown do desafio de vídeo +### Access the video challenge markdown files -Você pode encontrar os arquivos markdown para os desafios de vídeo nos seguintes locais do currículo: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Análise de Dados com Curso em Python](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analyis-with-python/data-analyis-with-python-course) -- [Curso TensorFlow 2.0](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) -- [Curso sobre Redes Naturais](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analyis-with-python/numpython/numpy) -- [Como Curso de Trabalho em Redes Neurais](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/challengum/11-machine-learning-with-python/how-neural-networks-work) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) +- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -Escolha um arquivo de marcação das opções abaixo. +Pick a challenge markdown file from the options above. -### Faça Skim através do vídeo associado ao desafio e crie uma questão de múltipla escolha +### Skim through the video associated with the challenge and create a mutiple choice question -Primeiro, encontre o videoId. +First, find the videoId. -Por exemplo, no código a seguir a partir do cabeçalho de um arquivo markdown de desafio de vídeo, o videoId é "nVAaxZ34khk". No GitHub, a informação deve ser inserida em um formato de tabela. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d title: Análise de Dados Exemplo A challengeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -Em seguida, acesse o vídeo do YouTube com essa videoId. A url para o vídeo será: -https://www.youtube. om/watch?v=[videoId] (adicione vídeo Id à URL sem colchetes quadrados) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -No exemplo acima, a url é https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim o vídeo do YouTube com esse videoId e pense em uma pergunta de múltipla escolha baseada no conteúdo do vídeo. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Adicione a questão ao arquivo markdown +### Add the question to the markdown file -Você pode adicionar a questão localmente ou diretamente na interface GitHub. Para adicionar a pergunta localmente, você precisa [configurar o freeCodeCamp local](how-to-setup-freecodecamp-locally.md). Você também pode encontrar o arquivo no GitHub e clicar no botão editar para adicionar a pergunta diretamente em seu navegador. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. If a question has not yet been added to a particular video challenge, it will have the following default question: @@ -96,21 +96,21 @@ question: solution: 3 ``` -Atualize a palavra "Pergunta" com sua pergunta. Atualize o "um", "dois" e "três" com as possíveis respostas. Certifique-se de atualizar o número de solução com o qual a resposta está correta. Você pode adicionar mais respostas possíveis usando o mesmo formato. A pergunta e as respostas podem estar rodeadas de aspas. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### Use o markdown para formatar sua pergunta +#### Use markdown to format your question -O texto da pergunta é interpretado como markdown. A maneira mais simples de garantir que ele está formatado corretamente é iniciar a pergunta com `texto: ¶`, assim: +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -pergunta: - texto: ¶ - Pergunta +question: + text: | + Question ``` -Em seguida, você precisa ter certeza de que sua pergunta está em uma nova linha e recuou um nível mais do que `texto: £`. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -A mesma abordagem pode ser usada para as respostas, de modo que toda a questão se torne +The same approach can be used for the answers, so the entire question becomes ```yml question: @@ -126,74 +126,74 @@ question: solution: 2 ``` -Certifique-se de que cada resposta seja plausível, mas há apenas uma resposta correta. +Make sure each answer is plausible but there is only one correct answer. -#### Uso do HTML +#### Use of HTML -Perguntas e respostas podem conter certas tags HTML como `
        ` para uma nova linha. As tags HTML devem ser usadas com moderação, quando as perguntas não podem ser expressas sem elas. +Questions and answers can contain certain HTML tags like `
        ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Exemplos de questões +### Question examples -#### Exemplos sem HTML +#### Examples without HTML ````yml -pergunta: - texto: ¶ - O que esse código JavaScript faz log no console? +question: + text: | + What does this JavaScript code log to the console? ```js - console.log('olá mundo'); + console.log('hello world'); ```` - Selecione uma resposta! - respostas: - - (ExplicitText=" olá *mundo* - - (ExplicitText=" **olá** mundo - - Common olá mundo solução: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -pergunta: - text: £ - O que será impresso depois de executar este código: +question: + text: | + What will print out after running this code: ```py - largura = 15 - altura = 12. - Imprimir(altura/3) + width = 15 + height = 12.0 + print(height/3) ```` - respostas: + answers: - | 39 - | 4 - - £ 4.0 - - £ 5.0 - - £ 5 solução: 3 + - | 4.0 + - | 5.0 + - | 5 solution: 3 ```` -#### Exemplo com a pergunta HTML +#### Example with HTML ```yml -: - text: £ - O que será impresso após a execução deste código: -
        largura = 15
        altura = 12.
        imprimir(altura/3)
        - respostas: - - £ +question: + text: | + What will print out after running this code: +
        width = 15
        height = 12.0
        print(height/3)
        + answers: + - | 39 - - £ + - | 4 - - econtra - 4. - - £ - 5. - - £ + - | + 4.0 + - | + 5.0 + - | 5 - solução: 3 + solution: 3 ```` -O exemplo final demonstra que o HTML pode ser usado, mas que ele não é tão legível como a versão sem ele. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Para mais exemplos, você pode consultar os arquivos markdown para o seguinte curso de vídeo. Todos os desafios já têm perguntas: [Python para todos os cursos](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Abrir um pull request +## Open a pull request -Depois de criar uma ou mais perguntas, você pode fazer commit das alterações em um novo branch e [abrir um pull request](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Portuguese/how-to-open-a-pull-request.md b/docs/i18n/Portuguese/how-to-open-a-pull-request.md index dfb70eaee3..2729cd6237 100644 --- a/docs/i18n/Portuguese/how-to-open-a-pull-request.md +++ b/docs/i18n/Portuguese/how-to-open-a-pull-request.md @@ -1,121 +1,121 @@ -# Como abrir um Pull Request (PR) +# How to open a Pull Request (PR) -Um pull request permite que você envie alterações do seu fork no GitHub para o repositório principal do freeCodeCamp.org. Uma vez que você tenha feito alterações no código, ou desafios de codificação, você deve seguir essas diretrizes para enviar uma PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Prepare um bom título de PR +## Prepare a good PR title -Recomendamos usar [título convencional e mensagens](https://www.conventionalcommits.org/) para commits e pull request. A convenção tem o seguinte formato: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([escopo(s) opcional(s)]): ` +> `([optional scope(s)]): ` > -> Por exemplo: +> For example: > -> `fix(learn): testes para o executante... enquanto o loop desafio` +> `fix(learn): tests for the do...while loop challenge` -Ao abrir um Pull Request(PR), você pode usar o abaixo para determinar o tipo, o escopo (opcional) e a descrição. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**Tipo:** +**Type:** -| tipo | Quando selecionar | -|:---------- |:---------------------------------------------------------------------------------- | -| correção | Funcionalidade alterada/atualizada/melhorada, testes, verbiagem de uma lição, etc. | -| feito | Somente se você estiver adicionando novas funcionalidades, testes, etc. | -| chore | Mudanças que não estão relacionadas ao código, testes ou vérsia de uma lição. | -| documentos | Mudanças no diretório `/docs` ou nas diretrizes de contribuição, etc. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Escopo** +**Scope:** -Você pode selecionar um escopo de [esta lista de etiquetas](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Descrição:** +**Description:** -Mantenha-o curto (menos de 30 caracteres) e simples, você pode adicionar mais informações na caixa de descrição de PR e comentários. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Alguns exemplos de bons títulos de PRs seriam: +Some examples of good PRs titles would be: -- `fix(a11y): contraste melhorado na barra de pesquisa` -- `feat: adicione mais testes aos desafios html e css` -- `fix(api,cliente): previnir erros CORS na submissão do formulário` -- `docs(i18n): Tradução para Chinês da configuração local` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Propondo um Pull Request +## Proposing a Pull Request -1. Uma vez que as edições tenham sido realizadas, será solicitado que você crie um pull request na página do GitHub do seu fork. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Imagem - Comparar o prompt de pull request no GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. Por padrão, todas as pull requests devem ser contra o repositório principal freeCodeCamp, o branch `master`. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Certifique-se de que seu Fork da Base está definido como freeCodeCamp/freeCodeCamp ao levantar um Pull Request. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Imagem - Comparando bifurcações ao fazer uma solicitação de pull](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Envie o pull request do seu branch para o branch `master` do freeCodeCamp. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. No corpo de seu PR há um resumo mais detalhado das alterações feitas e por quê. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Você será apresentado com um modelo de pull request. Esta é uma checklist que você deveria ter seguido antes de abrir o pull request. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Preencha os detalhes conforme quiser Essas informações serão revisadas e os revisores decidirão se sua pull request é ou não aceita. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Se o PR tem como objetivo resolver um problema existente no GitHub, então, no final do corpo da descrição de seu PR, usar a palavra-chave _Fecha_ com o número de issue para [automaticamente fechar essa questão, se o PR for aceito e combinado](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Exemplo: `Fecha a issue #123` fechará a issue 123 + > Example: `Closes #123` will close issue 123 -5. Indique se você testou uma cópia local do site ou não. +5. Indicate if you have tested on a local copy of the site or not. - Isso é muito importante quando se fazem alterações que não são apenas edições de conteúdo de texto, como documentação ou uma descrição de desafio. Exemplos de alterações que precisam de testes locais incluem JavaScript, CSS ou HTML que podem alterar a funcionalidade ou o layout de uma página. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Feedback sobre pull requests +## Feedback on pull requests -> Parabéns! :tada: sobre como criar um PR e muito obrigado por dedicar seu tempo a contribuir. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Nossos moderadores vão dar uma olhada e deixar sua opinião para você. Por favor, seja paciente com os outros moderadores e respeite o seu tempo. Todos os pull requests são revisados a seu tempo. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Se você precisar de ajuda por favor discuta na [sala de contribuidores](https://gitter.im/FreeCodeCamp/Contributors), estamos mais do que felizes em ajudá-lo. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Se você quer contribuir com mais pull requests, nós recomendamos que você leia as alterações [e sincronize as](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) diretrizes para evitar ter que excluir o seu fork. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Conflitos em um pull request +## Conflicts on a pull request -Conflitos podem surgir porque muitos colaboradores trabalham no repositório, e as alterações podem afetar o seu PR, que está aguardando uma revisão e mesclagem. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Na maioria das vezes você pode não precisar de uma base de sustentação, porque nós esmagamos todos os compromissos, no entanto, se for solicitada uma rebase, é isso que você deve fazer. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Para correções de erros e funcionalidades de costume +### For usual bug fixes and features -Quando você está trabalhando em bugs comuns e recursos em nosso branch de desenvolvimento `master`, você é capaz de fazer uma base simples: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Rebasear sua cópia local: +1. Rebase your local copy: ```console git checkout git pull --rebase upstream master ``` -2. Resolver quaisquer conflitos e adicionar / editar commits +2. Resolve any conflicts and add / edit commits ```console - # Ou + # Either git add . - git commit -m "chore: resolver conflitos" + git commit -m "chore: resolve conflicts" - # ou + # Or git add . - git commit --change --no-edit + git commit --amend --no-edit ``` -3. Reforce suas alterações para o PR +3. Push back your changes to the PR ```console git push --force origin ``` -### Para o próximo currículo e recursos +### For upcoming curriculum and features -Quando você está trabalhando em recursos para nossos próximos currículos `next-*` ramificações, você tem uma escolha de cereja: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Certifique-se de que seu upstream esteja sincronizado com seu local: +1. Make sure your upstream comes in sync with your local: ```console git checkout master @@ -124,41 +124,41 @@ Quando você está trabalhando em recursos para nossos próximos currículos `ne git reset --hard upstream/next-python-projects ``` -2. Fazer backup +2. Take backup - a. Exclua seu ramo local depois de ter feito um backup (se você ainda o tem localmente): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout - # exemplo: + # example: # git checkout feat/add-numpy-video-question git checkout -b - # exemplo: - # git checkout -b backup-feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - marn Ou apenas um backup do seu branch pr (se você não o tem localmente): + b. Or just a backup of your pr branch (if you do not have it locally): ```console - git checkout -b original/ + git checkout -b origin/ - # exemplo: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Comece com uma página aberta: +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Resolver quaisquer conflitos e limpar, instalar testes +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean @@ -166,13 +166,13 @@ Quando você está trabalhando em recursos para nossos próximos currículos `ne npm ci npm run test:curriculum --superblock= - # exemplo: + # example: # npm run test:curriculum --superblock=python-for-everybody ``` -6. Se tudo estiver bem empurrado de volta ao PR +6. If everything looks good push back to the PR ```console git push --force origin diff --git a/docs/i18n/Portuguese/how-to-setup-freecodecamp-locally.md b/docs/i18n/Portuguese/how-to-setup-freecodecamp-locally.md index 35f010d651..619db733cf 100644 --- a/docs/i18n/Portuguese/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Portuguese/how-to-setup-freecodecamp-locally.md @@ -1,326 +1,326 @@ -Siga estas diretrizes para configurar o freeCodeCamp localmente no seu sistema. Isso é altamente recomendado se você quer contribuir regularmente. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Para alguns dos fluxos de trabalho de contribuição, você precisa ter o freeCodeCamp funcionando localmente. Por exemplo, pré-visualizando desafios de codificação ou depurando e corrigindo bugs na base de código. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] Se você não estiver interessado em configurar o freeCodeCamp localmente considere usar o Gitpod, um ambiente gratuito de desenvolvimento online. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Abrir no Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Inicia um ambiente de desenvolvimento pronto para programação em seu navegador.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare sua máquina local +### How to prepare your local machine -Comece instalando o software pré-requisito para seu sistema operacional. +Start by installing the prerequisite software for your operating system. -Nós apoiamos principalmente o desenvolvimento em sistemas **\*nix**. Nossa equipe e colaboradores da comunidade trabalham regularmente com a base de código usando ferramentas instaladas no Ubuntu e no macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Também suportamos o Windows 10 via WSL2, que pode se preparar [lendo este guia](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Alguns membros da comunidade também se desenvolvem no Windows 10 nativamente com Git para Windows (Git Bash), e outras ferramentas instaladas no Windows. Neste momento, não dispomos de apoio oficial para esse tipo de instalações, pelo que recomendamos que se utilize a WSL2. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Pré-requisitos:** +**Prerequisites:** -| Pré-requisito | Versão | Observações | -| --------------------------------------------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [Node.js](http://nodejs.org) | `12x` | [Horário LTS](https://github.com/nodejs/Release#release-schedule) | -| npm (vem junto com o Node) | `6. x` | Não possui versões LTS, nós usamos a versão empacotada com Node LTS | -| [Servidor da Comunidade MongoDB](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Notas de Lançamento](https://docs.mongodb.com/manual/release-notes/), Nota: Estamos atualmente em `3.6`, uma [atualização está planejada](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Se você tem uma versão diferente, por favor instale a versão recomendada. Só podemos suportar problemas de instalação para versões recomendadas. Veja [solução de problemas](#troubleshooting) para detalhes. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Se o Node.js já estiver instalado em sua máquina, execute os seguintes comandos para validar as versões: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console node -v npm -v ``` -> [!TIP] É altamente recomendável atualizar para os últimos lançamentos estáveis do software listado acima, também conhecido como lançamentos de Suporte de Longo Prazo (LTS). +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Depois de ter os pré-requisitos instalados, você precisa preparar seu ambiente de desenvolvimento. Isto é comum para muitos fluxos de trabalho de desenvolvimento, e você só precisará fazer isso uma vez. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Siga estas etapas para deixar seu ambiente de desenvolvimento pronto:** +**Follow these steps to get your development environment ready:** -1. Instale o [Git](https://git-scm.com/) ou seu cliente Git favorito, se você ainda não o fez. Atualizar para a versão mais recente; a versão que veio empacotada com seu SO pode estar desatualizada. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Opcional mas recomendado) [Configurar uma chave SSH](https://help.github.com/articles/generating-an-ssh-key/) para o GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Instale um editor de código de sua escolha. +3. Install a code editor of your choice. - É altamente recomendável usar [Visual Studio Code](https://code.visualstudio.com/) ou [Atom](https://atom.io/). Estes são ótimos, editores de código livre e de código aberto. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Configure um link para o seu editor de código. +4. Set up linting for your code editor. - Você deve ter [ESLint executando no seu editor](http://eslint.org/docs/user-guide/integrations.html), e ele irá destacar qualquer coisa que não esteja em conformidade com [freeCodeCamp em JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!TIP] Por favor, não ignore quaisquer erros de vinculação. Eles são destinados a **ajudar** você e garantir uma base de código simples e limpa. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Faça fork do repositório no GitHub +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) é uma etapa onde você obtém sua própria cópia do repositório principal do freeCodeCamp (um repositório a.k.a __) no GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Isso é essencial, pois permite que você trabalhe em sua própria cópia do freeCodeCamp no GitHub, ou para fazer o download (clone) do repositório para trabalhar localmente. Mais tarde, você poderá solicitar alterações para serem puxadas para o repositório principal através de um pull request (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] O repositório principal do `https://github.com/freeCodeCamp/freeCodeCamp` é frequentemente referido como o `repositório upstream`. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Seu fork em `https://github.com/YOUR_USER_NAME/freeCodeCamp` é frequentemente referido como a origem `do repositório`. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Siga estes passos para criar um fork do repositório `https://github.com/freeCodeCamp/freeCodeCamp`:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Vá para o repositório freeCodeCamp no GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. Clique no botão "Fork" no canto superior direito da interface ([Mais detalhes aqui](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Depois que o repositório for bifurcado, você será levado para a sua cópia do repositório freeCodeCamp em `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
        - Como criar um fork freeCodeCamp no GitHub (screenshot) + How to fork freeCodeCamp on GitHub (screenshot)
        - Como criar um fork freeCodeCamp no GitHub + How to fork freeCodeCamp on GitHub
        -## Clone o seu fork no GitHub +## Clone your fork from GitHub -[Clonar](https://help.github.com/articles/cloning-a-repository/) é onde **faz o download de uma cópia** de um repositório de um local `remoto` que pertence ou a você ou a outra pessoa. No seu caso, este local remoto é o seu `fork` do repositório freeCodeCamp que deve estar disponível no `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Execute esses comandos em sua máquina local: +Run these commands on your local machine: -1. Abrir um Terminal / Prompt de Comando / Shell no diretório de seus projetos +1. Open a Terminal / Command Prompt / Shell in your projects directory _i.e.: `/yourprojectsdirectory/`_ -2. Clone seu fork do freeCodeCamp, substituindo `YOUR_USER_NAME` pelo seu GitHub Name +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Isto irá baixar todo o repositório freeCodeCamp para seu diretório de projetos. +This will download the entire freeCodeCamp repository to your projects directory. -Nota: `--depth=1` cria um clone raso do seu fork, com apenas o histórico mais recente. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Configurar sincronização de pais +## Set up syncing from parent -Agora que você baixou uma cópia do seu fork, será necessário configurar um controle remoto `a montante` para o repositório pai. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Como mencionado anteriormente](#fork-the-repository-on-github), o repositório principal é referenciado como repositório `a montante`. Your fork referred to as the `origin` repository. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -É necessária uma referência do seu clone local para o repositório `upstream` além do repositório `de origem`. Isso é para que você possa sincronizar alterações do repositório principal sem a exigência de bifurcação e clonagem repetidamente. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Mude o diretório para o novo diretório freeCodeCampo: +1. Change directory to the new freeCodeCamp directory: ```console - Campo freeCodec + cd freeCodeCamp ``` -2. Adicionar uma referência remota ao principal repositório freeCodeCampo: +2. Add a remote reference to the main freeCodeCamp repository: ```console - adicione o git remotamente upstream https://github.com/freeCodeCamp/freeCodeCamp.git + git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Certifique-se de que a configuração esteja correta: +3. Ensure the configuration looks correct: ```console - git remoto -v + git remote -v ``` - A saída deve ser algo como abaixo: + The output should look something like below: ```console - origem https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Executando freeCodeCamp localmente +## Running freeCodeCamp locally -Agora que você tem uma cópia local do freeCodeCamp, você pode seguir estas instruções para executá-lo localmente. Isso permitirá que você: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Pré-visualize edições para as páginas como elas aparecerão na plataforma de aprendizagem. -- Trabalho na interface do usuário com problemas e melhorias. -- Depurar e corrigir problemas com servidores de aplicativo e aplicativos de cliente. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Se você encontrar problemas, primeiro faça uma busca na web para sua issue e veja se ela já foi respondida. Se não for encontrada uma solução, por favor, procure em nossa página de [questões](https://github.com/freeCodeCamp/freeCodeCamp/issues) GitHub para encontrar uma solução e reporte o problema se ainda não foi reportado. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -E como sempre, sinta-se à vontade para ir em nosso [Bate-papo dos Colaboradores no Gitter](https://gitter.im/FreeCodeCamp/Contributors) ou [nosso servidor de Discord](https://discord.gg/pFspAhS), para consultas rápidas. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Você pode pular a execução freCodeCamp localmente se estiver simplesmente editando arquivos. Por exemplo, executando uma `rebase`, ou resolvendo `conflitos de merge`. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Você sempre poderá voltar a esta parte das instruções mais tarde. Você deve **somente** pular esta etapa se não precisar executar os aplicativos na sua máquina. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Pular para fazer alterações](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Configurando dependências +### Configuring dependencies -#### Etapa 1: Configurar o arquivo de variável de ambiente +#### Step 1: Set up the environment variable file -As chaves de API padrão e variáveis de ambiente são armazenadas no arquivo `sample.env`. Este arquivo precisa ser copiado para um novo arquivo chamado `.env` que é acessado dinamicamente durante a etapa de instalação. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Crie uma cópia da "amostra.env" e nomeie ".env". -# Preenchê-lo com as chaves e segredos de API necessários: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -amostra. nv .env +cp sample.env .env # Windows -copiar sample.env .env +copy sample.env .env ``` -The keys in the `.env` file are _not_ required to be changed to run the app locally. Você pode deixar os valores padrão copiados de `sample.env` como está. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!TIP] Tenha em mente se quiser usar serviços como Auth0 ou Algolia, você terá que adquirir suas próprias chaves de API para esses serviços e editar as entradas de acordo no `. arquivo nv`. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Etapa 2: Instalar dependências +#### Step 2: Install dependencies -Esta etapa irá instalar as dependências necessárias para a execução do aplicativo: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Etapa 3: Inicie MongoDB e semente o banco de dados +#### Step 3: Start MongoDB and seed the database -Antes de executar o aplicativo localmente, você precisará iniciar o serviço MongoDB. +Before you can run the application locally, you will need to start the MongoDB service. -> [!NOTE] A menos que o MongoDB esteja executando uma configuração diferente do padrão, a URL armazenada como o valor de `MONGOHQ_URL` no `. o arquivo nv` deve funcionar bem. Se você estiver usando uma configuração personalizada, modifique este valor conforme necessário. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Iniciar o servidor do MongoDB em um terminal separado: +Start the MongoDB server in a separate terminal: -- No macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- No Windows, você deve especificar o caminho completo para o `binário do mongod` +- On Windows, you must specify the full path to the `mongod` binary ```console - C:\Arquivos de programa\MongoDB\Server\3.6\bin\mongod" + "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Certifique-se de substituir `3.6` pela versão que você instalou + Make sure to replace `3.6` with the version you have installed -> [!TIP] Você pode evitar ter que iniciar o MongoDB toda vez instalando-o como um serviço em segundo plano. Você pode [aprender mais sobre isso na documentação do seu Sistema Operacional](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Em seguida, vamos semear o banco de dados. Nesta etapa, executamos o comando abaixo que preenche o servidor MongoDB com alguns conjuntos de dados iniciais que são necessários pelos serviços. Entre outras coisas, contam-se alguns esquemas. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -seed do npm run +npm run seed ``` -#### Passo 4: Inicie o aplicativo cliente freeCodeCamp e servidor de API +#### Step 4: Start the freeCodeCamp client application and API server -Agora você pode iniciar o servidor de API e os aplicativos clientes. +You can now start up the API server and the client applications. ```console -desenvolvimento de execução npm +npm run develop ``` -Este único comando irá disparar todos os serviços, incluindo o servidor API e os aplicativos do cliente disponíveis para você trabalhar. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!NOTE] Uma vez pronto, abra um navegador da web e **visite **. Se o aplicativo carregar, parabéns - está tudo pronto! Agora você tem uma cópia completa da plataforma de aprendizado freeCodeCamp rodando em sua máquina local. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] O servidor de API serve APIs em `http://localhost:3000`. O aplicativo Gatsby serve o aplicativo cliente em `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Se você visitar você deve ver as APIs disponíveis. +> If you visit you should see the available APIs. -## Entre com um usuário local +## Sign in with a local user -Sua configuração local é preenchida automaticamente um usuário local no banco de dados. Clicando no botão `Iniciar sessão` irá automaticamente autenticá-lo no aplicativo local. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -No entanto, acessar a página do portfólio do usuário é um pouco complicado. Em desenvolvimento O Gatsby controla a servir as páginas do lado do cliente e, portanto, você terá uma página `404` para o portfólio do usuário quando estiver trabalhando localmente. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Simplesmente clicando no **"Visualizar página personalizada 404"** irá movê-lo para a página correta. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
        - Como fazer login ao trabalhar localmente (captura de tela) + How to sign in when working locally (screenshot)
        - Como fazer login quando trabalhar localmente + How to sign in when working locally
        -## Fazer alterações localmente +## Making changes locally -Agora você pode fazer alterações nos arquivos e fazer commit das suas alterações no seu clone local do seu fork. +You can now make changes to files and commit your changes to your local clone of your fork. -Siga estes passos: +Follow these steps: -1. Valide que você está no `master` branch: +1. Validate that you are on the `master` branch: ```console git status ``` - Você deve obter uma saída como esta: + You should get an output like this: ```console - No branch master - Seu branch está atualizado com 'origem/master'. + On branch master + Your branch is up-to-date with 'origin/master'. - nada para commit, diretório de trabalho limpo + nothing to commit, working directory clean ``` - Se você não está no master ou no seu diretório de trabalho não está limpo, resolva quaisquer arquivos/commits pendentes e `master`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - git check-out mestre + git checkout master ``` -2. Sincronize as últimas alterações do freeCodeCamp upstream `master` ao seu branch mestre local: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!AVISO] Se você tiver alguma pull request pendente que você fez do branch `master` do seu fork, Perder-lhes-á no final deste passo. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Certifique-se de que seu pull request é mesclado por um moderador antes de executar este passo. Para evitar esse cenário, você deve **sempre** trabalhar em um branch que não seja o `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Este passo **irá sincronizar as últimas alterações** do repositório principal do freeCodeCamp. É importante que você baseie sua branch em cima da última `upstream/master` o mais frequentemente possível para evitar conflitos mais tarde. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Atualize sua cópia local do repositório freeCodeCamp upstream: + Update your local copy of the freeCodeCamp upstream repository: ```console - git buscar upstream + git fetch upstream ``` - Redefina com força a sua ramificação mestre com o mestre freeCodeCampe: + Hard reset your master branch with the freeCodeCamp master: ```console git reset --hard upstream/master ``` - Faça push do seu *branch* mestre para sua origem para ter um histórico limpo no GitHub: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console git push origin master --force ``` - Você pode validar o seu atual mestre corresponde ao upstream/master executando um diff: + You can validate your current master matches the upstream/master by performing a diff: ```console - git diff upstream/mestre + git diff upstream/master ``` - A saída resultante deve estar vazia. + The resulting output should be empty. -3. Criar uma nova filial: +3. Create a fresh new branch: - Trabalhar em um ramo separado para cada issue ajuda a manter sua cópia de trabalho local limpa. Você nunca deve trabalhar com o `mestre`. Isso irá soltar sua cópia do freeCodeCamp e você pode ter que começar de novo com um clone ou fork. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Verifique se você está no `master` como explicado anteriormente, e se afaste de lá: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Seu nome de branch deve começar com `fix/`, `feat/`, `docs/`, etc. Evite usar números de issues em branches. Mantenha-os curtos, significativos e únicos. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Alguns exemplos de bons nomes de filiais são: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,156 +330,156 @@ Siga estes passos: translate/add-spanish-basic-html ``` -4. Edite páginas e trabalhe em código no seu editor de texto favorito. +4. Edit pages and work on code in your favorite text editor. -5. Uma vez que você esteja satisfeito com as alterações você deve opcionalmente executar o freeCodeCamp localmente para visualizar as alterações. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Certifique-se de corrigir quaisquer erros e verificar a formatação de suas alterações. +6. Make sure you fix any errors and check the formatting of your changes. -7. Verifique e confirme os arquivos que você está atualizando: +7. Check and confirm the files you are updating: ```console git status ``` - Isso deve mostrar uma lista dos arquivos `não executados` que você editou. + This should show a list of `unstaged` files that you have edited. ```console - No branch feat/documentação - Sua branch está atualizada com 'upstream/feat/documentação'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Alterações não preparadas para o commit: - (use "git add/rm ... para atualizar o que será commit) - (use "git checkout -- . ." para descartar alterações no diretório de trabalho) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - modificado: CONTRIBUIÇÃO. d - modificado: docs/LEIAME.md - modificado: docs/how-to-setup-freecodecamp-localmente. d - modificado: docs/how-to-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Fase as alterações e faça um commit: +8. Stage the changes and make a commit: - Nesta etapa, você só deve marcar arquivos que você editou ou adicionou a si mesmo. Você pode executar um reset e resolver arquivos que você não pretende mudar se necessário. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console - git add caminho/para/meu/alterado/arquivo.ext + git add path/to/my/changed/file.ext ``` - Ou você pode adicionar todos os arquivos `não preparados` para a área de preparação: + Or you can add all the `unstaged` files to the staging area: ```console git add . ``` - Apenas os arquivos que foram movidos para a área de staging serão adicionados quando você fizer um commit. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Resultado: + Output: ```console - No branch feat/documentação - Sua branch está atualizada com 'upstream/feat/documentação'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Alterações a serem comprometidas: - (use "git reset HEAD ..." para instância) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - modificada: CONTRIBUTING.md - modificado: docs/README.md - modificado: docs/howp-freecodecamp-locally.md - modificado: docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Agora, você pode fazer o commit das alterações com uma pequena mensagem assim: + Now, you can commit your changes with a short message like so: ```console - git commit -m "fix: minha curta mensagem de commit" + git commit -m "fix: my short commit message" ``` - Alguns exemplos: + Some examples: ```md - correção: atualizar o artigo do guia para Java - loop for - feat: adicionar artigo do guia para habilidades de linguagem única + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - Opcional: + Optional: - É altamente recomendável fazer uma mensagem convencional de compromisso. Esta é uma boa prática que você verá em alguns dos repositórios de código aberto populares. Como um desenvolvedor, isso incentiva você a seguir as práticas padrão. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Alguns exemplos de mensagens convencionais de commit são: + Some examples of conventional commit messages are: ```md - correção: atualizar artigo do guia HTML - fix: atualizar scripts de compilação para Travis-CI - fez: adicionar artigo para a documentação de hoisting em JavaScript - : atualizar diretrizes de contribuição + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - Guarde estes curtos, não mais do que 50 caracteres. Você sempre pode adicionar informações adicionais na descrição da mensagem de commit. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Isso não leva mais tempo do que uma mensagem não convencional como 'atualizar arquivo' ou 'adicionar index.md' + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Você pode aprender mais sobre por que deveria usar commits convencionais [aqui](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Se você perceber que você precisa editar um arquivo ou atualizar a mensagem de commit depois de fazer um commit você pode fazê-lo depois de editar os arquivos com: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - git commit --change + git commit --amend ``` - Isso irá abrir um editor de texto padrão, como `nano` ou `vi` onde você pode editar o título da mensagem de commit e adicionar/editar a descrição. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Em seguida, você pode fazer push das suas alterações no seu fork: +10. Next, you can push your changes to your fork: ```console - git push origin branch/nome-do-nome aqui + git push origin branch/name-here ``` -## Propondo um Pull Request (PR) +## Proposing a Pull Request (PR) -Após ter feito as alterações, verifique aqui [como abrir um pedido de pulso](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Comandos rápidos referência +## Quick commands reference -Uma rápida referência aos comandos que você precisará ao trabalhar localmente. +A quick reference to the commands that you will need when working locally. -| comando | Descrição | -| -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `npm ci` | Instala / reinstala todas as dependências e bootstraps os diferentes serviços. | -| `seed do npm run` | Analisa todos os arquivos Markdown do desafio e os insere no MongoDB. | -| `desenvolvimento de execução npm` | Inicia o servidor de API freeCodeCamp e aplicativos Cliente. | -| `teste npm` | Executa todos os testes JS no sistema, incluindo cliente, servidor, lint e testes desafiadores. | -| `teste de execução npm: cliente` | Executar o teste do cliente. | -| `npm run teste:curriculum` | Execute o teste de currículo suite. | -| `npm run teste:curriculum --block='HTML básico e HTML5'` | Teste um bloco específico. | -| `npm run test:curriculum --superblock='responsive-web-design'` | Teste um SuperBlock específico. | -| `npm run test-curriculum-full-output` | Executar a versão de teste do currículo, sem carregar após o primeiro erro | -| `npm run teste:server` | Execute o teste do servidor. | -| `executar npm e2e` | Execute o Cypress fim para testes finais. | -| `limpo npm run` | Desinstala todas as dependências e limpa os caches. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Solução de problemas +## Troubleshooting -### Problemas com a instalação dos pré-requisitos recomendados +### Issues with installing the recommended prerequisites -Desenvolvemos regularmente nos sistemas operacionais mais recentes ou mais populares, como o macOS 10.15 ou mais tarde, o Ubuntu 18.04 ou mais tarde e o Windows 10 (com o WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -É recomendável pesquisar seus problemas específicos em recursos como Google, Stack Overflow e Stack Exchange. Existe uma boa possibilidade de alguém ter de enfrentar o mesmo problema e já existe uma resposta à sua pergunta específica. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Se você está em um sistema operacional diferente e/ou ainda está com problemas, veja [obtendo ajuda](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!AVISO] +> [!WARNING] > -> Por favor, evite criar problemas no GitHub para problemas pré-requisitos. Estão fora do âmbito deste projecto. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Problemas com a interface do usuário, fontes, erros de construção, etc. +### Issues with the UI, Fonts, build errors etc. -Se você enfrentar problemas com a interface do usuário, Fontes ou ver compilações de erros, uma limpeza pode ser útil: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean @@ -488,59 +488,59 @@ npm run seed npm run develop ``` -ou +OR -Usar o atalho +Use the shortcut ``` npm run clean-and-develop ``` -Se você continuar a enfrentar problemas com a compilação, é recomendável limpar o espaço de trabalho. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Use `git clean` no modo interativo: +Use `git clean` in interative mode: ``` -git limpar -ifdX +git clean -ifdX ```
        - Como limpar o git não rastreado (captura de tela) + How to clean git untracked files (screenshot)
        - Como limpar arquivos git não rastreados + How to clean git untracked files
        -### Problemas com API, Login, Envios de Desafios, etc. +### Issues with API, Login, Challenge Submissions, etc. -Se você não conseguir fazer o login, ao invés disso, veja um banner com uma mensagem de erro dizendo que será reportado ao freeCodeCamp, por favor, verifique novamente se a porta local `3000` não está em uso em um programa diferente. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**No Linux / macOS / WSL no Windows - Do Terminal:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console -netstat -ab ├grep "3000" +netstat -ab | grep "3000" -tcp4 0 0 0.0.0.0:3000 LISTEN DESKTOP +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**No Windows - Do PowerShell Elevado:** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab ├Select-String "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0.0:3000 LISTENING DE DESKTOP +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Issues instalando dependências +### Issues installing dependencies -Se você receber erros durante a instalação das dependências, por favor, certifique-se de que você não está em uma rede restrita ou suas configurações de firewall não impedem você de acessar os recursos. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -A primeira configuração pode demorar um pouco dependendo da largura de banda da sua rede. Seja paciente, e se você ainda estiver preso, recomendamos que você use o GitPod em vez de uma configuração offline. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Obtendo ajuda +## Getting Help -Se você está preso e precisa de ajuda, Avise-nos perguntando na categoria ['Contribuidores' no nosso fórum](https://forum.freecodecamp.org/c/contributors) ou na sala de bate-papo [colaboradores](https://gitter.im/FreeCodeCamp/Contributors) no Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Pode haver um erro no console do seu navegador ou no Bash / Terminal / Linha de Comando que ajudará a identificar o problema. Forneça esta mensagem de erro na descrição do seu problema para que outros possam identificar o problema mais facilmente e ajudá-lo a encontrar uma solução. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Portuguese/how-to-setup-wsl.md b/docs/i18n/Portuguese/how-to-setup-wsl.md index 87e0ffb177..68bce6dde6 100644 --- a/docs/i18n/Portuguese/how-to-setup-wsl.md +++ b/docs/i18n/Portuguese/how-to-setup-wsl.md @@ -1,80 +1,80 @@ -# Configurar o freeCodeCamp no subsistema Windows para Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!NOTA] Antes de seguir estas instruções verifique se o sistema atende aos requisitos +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (Versão 2004, Build 19041 ou superior) - disponível para todas as distribuições, incluindo o Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop para Windows**: Veja os respectivos requisitos para [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) e [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Este guia cobre alguns passos comuns com a instalação do WSL2. Uma vez resolvidos alguns dos problemas comuns com o WSL2, você deve seguir o nosso guia de instalação local para trabalhar com o freeCodeCamp no Windows executando uma distro WSL como o Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Ativar WSL +## Enable WSL -Siga as instruções na [documentação oficial](https://docs.microsoft.com/en-us/windows/wsl/install-win10) para instalar o WSL1 e seguido atualizando para o WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Recomendamos usar Ubuntu-18.04 ou superior com WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!NOTA] + > [!NOTE] > - > Embora você possa usar outras distrações não baseadas em debianos, todas vêm com suas próprias pegadas e estão além do âmbito deste guia. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Atualize as dependências para o SO +2. Update the dependencies for the OS ```console - sudo update apt - sudo upgrade -y + sudo apt update + sudo apt upgrade -y - # limpando - sudo autoremove -y + # cleanup + sudo apt autoremove -y ``` -## Configurar Git +## Set up Git -O Git vem pré-instalado com Ubuntu 18.04, verifique se sua versão do Git com `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ -git --version -git versão 2.25.1 +❯ git --version +git version 2.25.1 ``` -(Opcional, mas recomendado) Agora você pode prosseguir para [configurar suas chaves ssh](https://help.github.com/articles/generating-an-ssh-key) com o GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Instalando um Editor de Código +## Installing a Code Editor -É altamente recomendável instalar o [Visual Studio Code](https://code.visualstudio.com) no Windows 10. Tem um ótimo suporte para WSL e instala automaticamente todas as extensões necessárias na distração WSL. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -Essencialmente, você irá editar e armazenar seu código no Ubuntu-18.04 com o VS Code instalado no Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Instalando o Docker Desktop +## Installing Docker Desktop -**O Docker Desktop para Windows** permite instalar e executar banco de dados e serviços como MongoDB, NGINX, etc. Isso é útil para evitar problemas comuns em instalar o MongoDB ou outros serviços diretamente no Windows ou WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Siga as instruções na [documentação oficial](https://docs.docker.com/docker-for-windows/install) e instale o Docker Desktop para a sua distribuição no Windows. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Existem alguns requisitos mínimos de hardware para a melhor experiência. +There are some minimum hardware requirements for the best experience. -## Configurar Docker Desktop para WSL +## Configure Docker Desktop for WSL -Quando o Docker Desktop estiver instalado, [siga estas instruções](https://docs.docker.com/docker-for-windows/wsl) e configure-o para usar a instalação Ubuntu-18.04 como backend. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Isso faz com que os contêineres sejam executados no lado do WSL em vez de serem executados no Windows. Você será capaz de acessar os serviços em `http://localhost` tanto no Windows quanto no Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Instalar MongoDB do Docker Hub +## Install MongoDB from Docker Hub -Depois de ter configurado o Docker Desktop para trabalhar com o WSL2, siga essas etapas para iniciar um serviço do MongoDB: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Inicie um novo terminal Ubuntu-18.04 +1. Launch a new Ubuntu-18.04 terminal -2. Puxe `MongoDB 3.6` do dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Inicie o serviço MongoDB na porta `27017`e configure-o para ser executado automaticamente ao reiniciar o sistema +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console docker run -it \ @@ -85,45 +85,45 @@ Depois de ter configurado o Docker Desktop para trabalhar com o WSL2, siga essas -d mongo:3 ``` -4. Agora você pode acessar o serviço no Windows ou Ubuntu em `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Instalando Node.js e npm +## Installing Node.js and npm -Recomendamos que você instale o lançamento LTS para Node.js com um gerenciador de versões do node - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -Uma vez instalado, use esses comandos para instalar e usar a versão do Node.js, conforme necessário +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts -# OU +# OR # nvm install nvm install 14 -# Uso +# Usage # nvm use nvm use 12 ``` -O Node.js vem empacotado com `npm`, você pode atualizar para as versões mais recentes do `npm` com: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console npm install -g npm@latest ``` -## Configurar localmente o freeCodeCamp +## Set up freeCodeCamp locally -Agora que você instalou os pré-requisitos, siga [nosso guia de instalação local](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) para clonar, instalar e configurar o freeCodeCamp localmente em sua máquina. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!AVISO] +> [!WARNING] > -> Por favor notar, neste momento, que a configuração para testes do Cypress (e necessidades da GUI relacionadas) é um trabalho em andamento. Você ainda deve ser capaz de trabalhar na maior parte do código. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Links Úteis +## Useful Links -- [Uma instalação do dev WSL2 com Ubuntu 20.04, Node.js, MongoDB, VS Code e Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - um artigo de Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) -- Perguntas frequentes sobre: - - [Windows Subsistema para Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Docker Desktop para Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Portuguese/how-to-use-docker-on-windows-home.md b/docs/i18n/Portuguese/how-to-use-docker-on-windows-home.md index 100933cb54..85ac65a3e3 100644 --- a/docs/i18n/Portuguese/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Portuguese/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Como usar o Docker no Windows Home +# How to use Docker on Windows Home -Há alguns problemas a evitar quando se configurou o docker no Windows Home. Primeiro de tudo que você tem que usar [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) como Administrador. Infelizmente, o Windows Home não suporta o Docker para Windows Desktop, então o Toolbox deve ser usado. Ele tem que ser executado como Administrador, já que a instalação utiliza links simbólicos, o que não pode ser criado caso contrário. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Uma vez que você instalou a caixa de ferramentas, execute o Terminal Docker como Administrador. Isso criará uma `máquina virtual padrão` se já não existir. Quando isso acontecer, feche o terminal e abra o VirtualBox (também como Administrador). Você deve ser capaz de ver a máquina `padrão`. O site é bastante intensivo de recursos, então pare a máquina virtual e aumente as configurações o máximo possível - memória em particular. Foi confirmado que trabalhava com 4 GB de ruído. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Uma vez que você esteja feliz que o Docker está funcionando, clone o repositório freeCodeCamp para um diretório dentro de `C:\Users`. Estes diretórios são compartilhados, dando acesso ao Docker aos diretórios locais, que ele precisa durante a instalação. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Se você ver mensagens como +If you see messages like ```shell -bash: change_volumes_owner.sh: Nenhum arquivo ou diretório +bash: change_volumes_owner.sh: No such file or directory ``` -quando você `npm run docker:init` isso é provavelmente o culpado. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Portuguese/how-to-work-on-coding-challenges.md b/docs/i18n/Portuguese/how-to-work-on-coding-challenges.md index c6af274cc3..2b95545e91 100644 --- a/docs/i18n/Portuguese/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Portuguese/how-to-work-on-coding-challenges.md @@ -1,108 +1,112 @@ -# Como trabalhar em desafios de codificação +# How to work on coding challenges -Nosso objetivo é desenvolver uma experiência de aprendizado divertida e interativa. +Our goal is to develop a fun and clear interactive learning experience. -Projetar desafios interativos de programação é difícil. Seria muito mais fácil escrever uma explicação longa ou criar um tutorial em vídeo, e há um lugar para as pessoas no Médio e YouTube. No entanto, para nosso currículo principal, estamos buscando o que funciona melhor para a maioria das pessoas - uma experiência de jogo totalmente interativa e parecida com vídeo. +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. -Queremos que os camponeses atinjam um estado de fluxo. Queremos que eles promovam e explodam através dos nossos currículos com o menor número possível de obstáculos. Queremos que eles se integrem com confiança nos projectos e que adquiram uma ampla exposição a conceitos de programação. +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. -A criação destes desafios exige imensa criatividade e atenção aos pormenores. Há muita ajuda disponível. Você terá o apoio de toda uma equipe de colaboradores para quem você pode buscar ideias e provar seus desafios. Mantenha-se ativo na sala de [colaboradores](https://gitter.im/freecodecamp/contributors) e faça muitas perguntas. +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/). -Com a sua ajuda, podemos criar um currículo interativo de programação que ajudará milhões de pessoas a aprender a programar durante os próximos anos. +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. -O conteúdo de cada desafio é armazenado em seu próprio arquivo de markdown. Este arquivo markdown é posteriormente convertido em HTML usando nossas ferramentas para criar páginas web interativas. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). + +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 own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -## Configurar as ferramentas para o currículo +## Set up the tooling for the curriculum -Antes de trabalhar no currículo, você precisará configurar algumas ferramentas para ajudá-lo a testar suas alterações. Você pode usar qualquer opção abaixo: +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Você pode [configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). Isto é **altamente recomendado** para contribuições regulares/repetidas. Esta configuração permite que você trabalhe e teste suas alterações. -- Use o Gitpod, um ambiente gratuito de desenvolvimento online. Clicar no botão abaixo irá iniciar um ambiente de desenvolvimento pronto para código para freeCodeCamp em seu navegador. Leva só alguns minutos. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. - [![Abrir no Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -- Edite os arquivos na interface do GitHub clicando no ícone do lápis para o arquivo correspondente. Embora seja a maneira mais rápida, é **não recomendado**, porque você não pode testar suas alterações no GitHub. Se os mantenedores concluírem que as alterações feitas precisam ser testadas localmente, você precisará seguir os métodos acima novamente. +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. -## Modelo de desafio +## Challenge Template -Abaixo está um modelo de como os arquivos markdown dos desafios atualmente. Para ver o modelo simplificado, vamos adotar veja [abaixo](#upcoming-challenge-template). +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: Identificador exclusivo (alfanumérico, MongoD_id) -título: Título do desafio -Desafio: 0 -videoUrl: 'url da explicação do vídeo' +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 0 +videoUrl: 'url of video explanation' --- -## Descrição +## Description
        -Uma descrição do desafio e o que é necessário para passar +A Description of the challenge and what is required to pass
        -## Instruções +## Instructions
        -instruções sobre o que exatamente precisa ser feito. +Instructions about what exactly needs to be done.
        -## Testes +## Tests
        ```yml -testes: - - texto: Deve retornar "foo" - testString: 'Uma função stringificada possivelmente usando assertas Chai' +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
        -## Semente de Desafio +## Challenge Seed
        ```{ext} -O código exibido no editor por padrão. +Code displayed in the editor by default. -Esta é uma seção necessária para o desafio. +This is a required section for the challenge. ```
        -### Antes do teste +### Before Test
        ```{ext} -Código de configuração de teste opcional. +Optional Test setup code. ```
        -### Após o teste +### After Test
        ```{ext} -Código de teste opcional para baixo. +Optional Test tear down code. ```
        -## Soluções +## Solution
        ```{ext} -// a solução exigiu +// solution required ```
        @@ -111,298 +115,375 @@ Código de teste opcional para baixo. > [!NOTE] > -> 1. Nas seções acima exemplos do `{ext}` são: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Para a seção `Tests` acima, as strings `text` e `testString` devem ser válidas para YAML. `testString` pode ser uma função ou expressão stringificada usando que poderia usar afirmações Chai. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Desafios de Numeração +## Numbering Challenges -Todo desafio precisa de um `id`. Se você não especificar um, o MongoDB criará um novo aleatório quando ele guardar os dados; no entanto, não queremos que isso aconteça, já que queremos que os IDs de desafio sejam consistentes em diferentes ambientes (staging, produção, muitos desenvolvedores diferentes, etc.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -Para gerar um novo em um shell (assumindo que o MongoDB está sendo executado separadamente): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Execute o comando `mongo`. -2. Execute o comando `ObjectId()`. +1. Run `mongo` command. +2. Run `ObjectId()` command. -Por exemplo: +For example: ```bash $ mongo -MongoDB shell versão v3.6.1 -conectando: mongodb://127.0.0.1:27017 -versão do servidor do MongoDB: 3.4.10 +MongoDB shell version v3.6.1 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -O resultado é um novo id, por exemplo `5a474d78df58bafeb3535d34` acima. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -Depois de ter o id, coloque-o no arquivo markdown como o campo `id` no topo, por exemplo, +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- id: 5a474d78df58bafeb3535d34 -título: Título do Desafio +title: Challenge Title ``` -## Desafios de nomes +## Naming challenges -Nomear as coisas é difícil. Nós facilitamos a imposição de algumas restrições. +Naming things is hard. We've made it easier by imposing some constraints. -Todos os títulos de desafio devem ser explícitos e devem seguir este padrão: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[cláusula do objeto\] +\[verb\]\[object clause\] -Aqui estão alguns exemplos de nomes de desafio: +Here are some example challenge names: -- Usar Notação no sentido horário para especificar a Preenchimento de um Elemento -- Condensar matrizes com .reduce -- Use a Notação do Colchete para encontrar o Primeiro Personagem em uma String +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Descrição do desafio +## Challenge descriptions/instructions -As frases devem ser claras e concisas com jargão mínimo. Se usado, jargão deve ser definido imediatamente em inglês. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Mantenha parágrafos curtos (cerca de 1-4 sentenças). É mais provável que as pessoas leiam vários parágrafos curtos do que uma parede de texto. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -O texto de desafio deve usar a segunda pessoa ("você") para ajudar a dar-lhe um tom conversacional. Desta forma, o texto e as instruções parecem falar diretamente com o camper que trabalha através do desafio. Tente evitar usar a primeira pessoa ("I", "nós", "let'", e "nós"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Não use links de outbound Estas interrompem o fluxo. Os camponeses nunca deveriam ter de procurar nada durante estes desafios. Se houver recursos que você acha que campistas se beneficiariam, adicione-os ao artigo relacionado à Guia de Desafios. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -Você pode adicionar diagramas, se absolutamente necessário. +You can add diagrams if absolutely necessary. -Não use emojis ou emoticons em desafios. freeCodeCamp tem uma comunidade global e o significado cultural de emojis ou emoticons pode ser diferente em todo o mundo. Além disso, os emojis podem renderizar de forma diferente em diferentes sistemas. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Os substantivos adequados devem usar a capitalização correta quando possível. Abaixo está uma lista de palavras como elas devem aparecer nos desafios. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (letras maiúsculas em "J" e "S" e sem abreviações) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- O desenvolvimento de front-end (forma adjetiva com um traço) é quando você está trabalhando no front-end (um formulário sem traço). O mesmo se aplica a "final de volta", "pilha completa" e muitos outros termos compostos. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### A regra de 2 minutos +### The 2-minute rule -Cada desafio deve ser solucionável dentro de 120 segundos por um falante nativo da língua inglesa, que concluiu os desafios que levam a ele. Isso inclui o tempo necessário para ler as direções/instruções entender o código mostrado. escreva seu próprio código e faça com que todos os testes passem. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Se demorar mais do que dois minutos para concluir o desafio, você tem duas opções: +If it takes longer than two minutes to complete the challenge, you have two options: -- Simplifique o desafio, ou -- Divida o desafio em dois desafios. +- Simplify the challenge, or +- Split the challenge into two challenges. -A regra de 2 minutos força-o, o designer do desafio, a tornar suas direções concisas, seu código de sementes claro e seus testes diretos. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Acompanhamos o tempo que leva para os campistas resolverem mudanças e usarem essas informações para identificar desafios que precisam ser simplificados ou divididos. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modulação +### Modularity -Cada desafio deve ensinar exactamente um conceito, e esse conceito deve ser visível pelo nome do desafio. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Podemos reforçar conceitos anteriormente cobertos através da repetição e variações - por exemplo, introduzindo elementos h1 num desafio, depois h3 elementos alguns desafios mais tarde. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -O nosso objectivo é enfrentar milhares de desafios de 2 minutos. Estes podem fluir em conjunto e reiterar conceitos anteriormente cobertos. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Formatando texto desafio +### Formatting challenge text -Aqui estão as diretrizes de formatação específicas para o texto de desafio e exemplos: +Here are specific formatting guidelines for challenge text and examples: -- Palavras-chave de idioma está em `` tags. Por exemplo, nomes de tags HTML ou nomes de propriedades CSS -- A primeira instância de uma palavra-chave quando está sendo definida, ou palavras-chave gerais (ou seja, "object" ou "imutável") vá em `` tags -- Referências às partes do código (ou seja, função, método ou nomes de variáveis) devem ser agrupadas em tags `de`. Veja o exemplo abaixo: -- Use parseInt para converter a variável realNumber em um inteiro. -- Blocos de código multi-linha **devem ser precedidos por uma linha vazia**. A próxima linha deve começar com três backticks seguidos imediatamente por um dos [idiomas suportados](https://prismjs.com/#supported-languages). Para completar o bloco de código, você deve começar uma nova linha que tem apenas três backticks e **outra linha vazia**. **Nota:** Se você vai usar um código de exemplo na YAML, use `yaml` em vez de `yml` para o idioma à direita dos backticks. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Veja o exemplo abaixo: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -A seguir é um exemplo de código: +The following is an example of code: ```{language} -[SEU CÓDIGO AQUI] +[YOUR CODE HERE] ```` ```` -- Informações adicionais no formato de uma nota devem ser formatadas `Nota: Restante do texto da nota... -- Se forem necessárias múltiplas notas, em seguida, liste todas as notas em frases separadas usando o formato `Notas: Primeira nota de texto. Texto da segunda nota.`. -- Use aspas duplas quando aplicável +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Testes escritos +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Desafios devem ter o número mínimo de testes necessários para verificar se um camper entende um conceito. +## Writing tests -O nosso objectivo é comunicar o único ponto que o desafio é tentar ensinar, e testar se compreenderam esse ponto. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Testes de desafio podem fazer uso das bibliotecas de asserção Node.js e Chai.js. Além disso, se necessário, o código gerado pelo usuário pode ser acessado na variável `code`. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Formatando o seed code +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Aqui estão diretrizes de formatação específicas para o código da semente de desafio: +## Formatting seed code -- Use dois espaços para o recuo -- Instruções JavaScript terminam com ponto-e-vírgula -- Use aspas duplas quando aplicável -- Comentários feitos devem ter um espaço entre os caracteres de comentário e o próprio comentário +Here are specific formatting guidelines for the challenge seed code: - `// Corrija esta linha` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Dicas e Soluções +### Seed code comments -Cada desafio tem um botão `Obter um int`, para que um usuário possa acessar quaisquer dicas/soluções que tenham sido criadas para o desafio. Os tópicos de Hints/soluções de currículo estão localizados no [nosso fórum](https://forum.freecodecamp.org/c/guide) sob a categoria `Guia`. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Se você encontrar um problema com o tópico "Dicas/soluções de desafios", você pode fazer sugestões na [categoria contribuidores](https://forum.freecodecamp.org/c/contributors) no fórum. Moderadores e usuários com nível de confiança 3 revisarão os comentários e decidirão se devem ou não incluir as mudanças no tópico correspondente das dicas/soluções. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Adicionando novos tópicos de desafios/soluções - -Dê os seguintes passos quando adicionar um novo tópico relacionado a dicas/soluções de desafio. - -1. Comece seguindo os mesmos passos para criar um novo tópico, mas revise o seguinte para criar o título. -2. O título do tópico deve começar com o `Guia de Desafios LivCodeCampo: ` concatenado com o título real do desafio de currículo. Por exemplo, se o desafio for chamado de "`Macaco Chunky`", o título do tópico seria "`Guia de Desafios gratuito: Macaco Chunky`". -3. O `camperbot` deve ser o proprietário destes tópicos/postagens, então você precisará solicitar um administrador para mudar a propriedade da postagem principal para `camperbot`. -4. Depois que o novo tópico for criado, será criado um id para o tópico do fórum. Está localizado no final da URL do tópico do fórum. Este id deve ser adicionado à frontmatter do arquivo de desafio do currículo através do processo normal de pull request para o botão `Obter uma Dica` para vincular ao tópico. - -### Diretrizes para o conteúdo de tópicos de dicas e soluções - -ao propor uma solução para um tópico de Guia relacionado a desafios de currículo, o código completo deve ser adicionado. Isto inclui todo o código de Seed original mais quaisquer alterações necessárias para passar todos os testes de desafio. O modelo a seguir deve ser usado ao criar novos tópicos de dicas/soluções: - -``md -# Nomes de Desafios Vence Aqui - ---- - -## Explicação de Problema - -Este resumo do que precisa ser feito sem apenas relembrar a descrição e/ou instruções do desafio. Esta é uma seção opcional - -#### Links de Relevante - -- [Texto de Link](link_url_goes_here) -- [Texto de Link](link_url_goes_here) - ---- - -## Dicas - -### Tintura 1 - -Dicas vai aqui - -### Tintura 2 - -dica vai aqui - ---- - -## Soluções - -
        Solução 1 (Clique para Mostrar/Ocultar) +Example of valid single line JavaScript comment: ```js -função myFunc() { - console. og('Olá Mundo!'); +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
        + { /* Change code below this line */ } + + { /* Change code above this line */ } +

        {this.state.text}

        +
        + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md +# Challenge Name Goes Here + +--- + +## Problem Explanation + +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section + +#### Relevant Links + +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here) + +--- + +## Hints + +### Hint 1 + +Hint goes here + +### Hint 2 + +Hint goes here + +--- + +## Solutions + +
        Solution 1 (Click to Show/Hide) + +```js +function myFunc() { + console.log('Hello World!'); } ```` -#### Explicação de Código +#### Code Explanation -- A explicação de código vai aqui -- A explicação de código vai aqui +- Code explanation goes here +- Code explanation goes here -#### Links relevantes +#### Relevant Links -- [Texto do link](link_url_goes_here) -- [Texto do link](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
        ```` -## Desafios de teste +## Testing Challenges -Antes de você [criar uma pull request](how-to-open-a-pull-request. d) para suas alterações, você precisa validar que as alterações feitas não causam inadvertidamente problemas com o desafio. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Para testar todos os desafios, execute o comando abaixo a partir do diretório raiz +1. To test all challenges run the below command from the root directory ```` -npm run teste:curriculum +npm run test:curriculum ``` -2. Você também pode testar um bloco de desafios ou um superbloco de desafios com esses comandos +2. You can also test a block or a superblock of challenges with these commands ``` -npm run teste:curriculum --block='HTML básico e HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` -npm run teste:curriculum --superblock=responsive-web-design +npm run test:curriculum --superblock=responsive-web-design ``` -Você também é capaz de testar um desafio individualmente executando as seguintes etapas: +You are also able to test one challenge individually by performing the following steps: -1. Mude para o diretório `curriculum`: +1. Switch to the `curriculum` directory: ``` - currículo de cd + cd curriculum ``` -2. Execute o seguinte para cada arquivo de desafio para o qual você alterou: +2. Run the following for each challenge file for which you have changed: ``` - teste npm run -- -g "o título completo do desafio em inglês" + npm run test -- -g 'the full English title of the challenge' ``` -Assim que você tiver verificado que cada desafio em que você trabalhou passa pelos testes, [por favor crie uma pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> Você pode definir a variável de ambiente `LOCALE` no `.env` para o idioma do(s) desafio(s) que você precisa testar. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> Os valores atualmente aceitos são `english` and `chinese`, com `english` sendo definidos por padrão. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Próximo Modelo de Desafios +## Upcoming Challenge Template -O modelo de desafio no processo de ser atualizado para uma estrutura mais limpa e aninhada. Isso não foi completamente finalizado, mas as seguintes opções devem se aproximar da estrutura final: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: ````mdx --- -id: Identificador exclusivo (alfanumérico, MongoDB_id) -title: 'Desafio Título' -DesafioTipo: Inteiro, definido em `cliente/utils/challengeTypes. s` -vídeo: 'url da explicação de vídeo' -fórumIId: 12345 +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` +videoUrl: 'url of video explanation' +forumTopicId: 12345 --- -script de importação de './script. dx'; +import Script from './script.mdx'; ## --step-description-- -Texto de descrição, em markdown +Description text, in markdown ```html
        - exemplos de código + example code
        ``` -## Dicas--- +## --step-hints-- ![test-id-1] -Haverá um número arbitrário de IDs triplicados, instruções (em blocos de markdown) e de código. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Código para testar um +Code for test one ``` ![test-id-2] -Mais instruções na sintaxe markdown +More instructions in markdown syntax ```js -Mais código +More code ``` ## --step-seed-- @@ -410,29 +491,29 @@ Mais código ### --before-user-code-- ```lang -Código avaliado antes do usuário +Code evaluated before the user’s ``` -### --after-code-usuário-- +### --after-user-code-- ```lang -Código avaliado após os usuários e apenas antes dos testes +Code evaluated after the user’s, and just before the tests ``` -### --seed-conteúdo-- +### --seed-content-- ![index-html] ```html -Algum html +Some html ``` ```css -Alguma css +Some css ``` ```js -Alguns js +Some js ``` ![index-js] @@ -441,37 +522,37 @@ Alguns js

        - --solution-marcador-- + --solution-marker--

        - Exatamente o mesmo que a seção Seeds + Exactly the same as the seeds section

        - --next-solution-marcador + --next-solution-marker

        - Igual de novo + Same again

        - --question-marcador-- + --question-marker--

        - --text-marcador-- + --text-marker--

        - A pergunta viria aqui (usado apenas para desafios de vídeo) + The question would go here (only used for video challenges)

        @@ -481,23 +562,23 @@ Alguns js

        - Resposta 1 + Answer 1


        - Resposta 2 + Answer 2


        - Mais respostas + More answers

        - --solution-marcador-- + --solution-marker--

        @@ -513,13 +594,13 @@ Alguns js

        - Links Úteis + Useful Links

        - Criação e Edição de Desafios: + Creating and Editing Challenges:

        @@ -527,14 +608,14 @@ Alguns js
        1. - Tipos de desafio - o que significam os valores numéricos do tipo de desafio (enum). + Challenge types - what the numeric challenge type values mean (enum).

        2. - Contribuindo para o FreeCodeCamp - Escrevendo testes de desafio ES6 - um vídeo após Ethan Arrowood enquanto ele contribui para a versão antiga do currículo. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

        3. diff --git a/docs/i18n/Portuguese/how-to-work-on-the-docs-theme.md b/docs/i18n/Portuguese/how-to-work-on-the-docs-theme.md index 1ec97c7cd7..bf8bf8f6c9 100644 --- a/docs/i18n/Portuguese/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Portuguese/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Como funcionar no tema de docs +# How to work on the docs theme -> [!NOTA] Um lembrete rápido de que você não precisa configurar nada para trabalhar no conteúdo do site de documentação. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Para trabalhar nas diretrizes de contribuição, você pode editar ou adicionar arquivos no diretório `` docs [disponível aqui](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Quando suas alterações são mescladas, elas serão disponibilizadas automaticamente no site de documentação. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Estrutura do site da documentação +## Structure of the docs website -O site é gerado usando [`docsify`](https://docsify.js.org), e servido usando as páginas do GitHub. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Normalmente você não precisaria alterar nenhuma configuração ou construir o site localmente. Caso esteja interessado, aqui está como funciona: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- A fonte da página inicial para este site está disponível em [`docs/index.html`](index.html). -- Servimos este arquivo como um SPA usando `docsify` e GitHub Pages. -- O script `docsify` gera o conteúdo de `arquivos` markdown no diretório `docs` sob demanda. -- A página inicial é gerada a partir do [`_coverpage.md`](_coverpage.md). -- a navegação na barra lateral é gerada a partir de [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Servindo localmente o site de documentação +## Serving the documentation site locally -Clonar freeCodeCamp: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -Instalar `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -e serve o diretório `/docs` +and serve the `/docs` directory -```sh -docsify servir documentos +```console +docsify serve docs ``` -Como alternativa, se você tiver instalado o freeCodeCamp localmente (veja o guia de instalação local), nós empacotamos o CLI com as ferramentas de desenvolvimento para que você possa executar `npm run docs:serve` na raiz do repositório. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Portuguese/how-to-work-on-the-news-theme.md b/docs/i18n/Portuguese/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Portuguese/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Portuguese/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Portuguese/index.md b/docs/i18n/Portuguese/index.md index 20c0afbaee..1c4add4ab3 100644 --- a/docs/i18n/Portuguese/index.md +++ b/docs/i18n/Portuguese/index.md @@ -1,45 +1,43 @@ -A comunidade [freeCodeCamp.org](https://freecodecamp.org) é possível graças a milhares de voluntários como você. Saudamos todas e quaisquer contribuições para a comunidade e estamos ansiosos para recebê-lo a seguir. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTA] Antes de continuar, por favor, reserve rapidamente 2 minutos para ler o nosso [Código de Conduta](https://www.freecodecamp.org/code-of-conduct). Cumprimo-lo rigorosamente em toda a nossa comunidade. Queremos contribuir com o freeCodeCamp.org para ser uma experiência segura e inclusiva para todos. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Feliz contribuição. +Happy contributing. -Você é bem-vindo a: +You are welcome to: -- Criar, atualizar e corrigir bugs em nossos [desafios de codificação](#coding-challenges). -- Ajude-nos a corrigir erros na [plataforma de aprendizado do freeCodeCamp.org](#learning-platform). -- _(Chegando em breve)_ Ajude-nos a traduzir o freeCodeCamp.org para idiomas do mundo. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Tem dúvidas? Vá até [essas FAQs](/FAQ.md) onde respondemos a algumas consultas comuns sobre contribuições. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Desafios de codificação +## Curriculum -Todos os nossos desafios de programação são amaldiçoados pela comunidade, trazendo conhecimento especializado de voluntários como você. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Pode-se ajudar a expandi-los e a melhorar o texto. Você também pode atualizar as histórias de usuários para explicar o conceito melhor ou remover as redundantes e melhorar os testes de desafio para torná-los a testar o código das pessoas com mais precisão. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Se estiver interessado em melhorar esses desafios de codificação, veja aqui [como trabalhar nos desafios de programação](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Plataforma de aprendizado +## Learning Platform -Nossa plataforma de aprendizado é executada numa pilha de JavaScript moderna. Ele tem vários componentes, ferramentas e bibliotecas, incluindo, mas não se limitado a, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack e muito mais. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Geralmente, +Broadly, we use -- Temos um servidor API baseado em Node.js. -- Um conjunto de aplicações cliente baseadas em React. -- Um script que usamos para avaliar nossos projetos front-end. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contribuir para isso requer alguma compreensão de APIs, Sintaxe ES6, e muita curiosidade. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Basicamente, esperamos uma familiaridade básica com algumas das tecnologias, ferramentas e bibliotecas acima referidas. Dito isto, o senhor não tem de ser um perito para contribuir com eles. +If you want to help us improve our codebase... -**Se quiser nos ajudar a melhorar a nossa base de código, você pode usar o Gitpod, um ambiente de desenvolvimento on-line gratuito** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Abrir no Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Inicia um ambiente de desenvolvimento pronto para programação em seu navegador.) +Or you can... -ou - -**você pode [configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md) em sua máquina.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Portuguese/moderator-handbook.md b/docs/i18n/Portuguese/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Portuguese/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
          + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Romanian/FAQ.md b/docs/i18n/Romanian/FAQ.md index 4a17cb0376..e6ef4fed0d 100644 --- a/docs/i18n/Romanian/FAQ.md +++ b/docs/i18n/Romanian/FAQ.md @@ -1,101 +1,82 @@ -### Sunt nou în GitHub și Open Source, unde ar trebui să încep? +### I am new to GitHub and Open Source. Where should I start? -Citiți ["Cum să contribuiți la Ghidul Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Este o resursă compresivă de proiecte şi ghiduri prietenoase pentru primul timp. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Pot traduce curriculum-ul freeCodeCamp? +### Can I translate freeCodeCamp's curriculum? -Vom începe eforturile de localizare pe tabăra freeCodep începând cu **chineza** prima. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Intenţionăm să punem programa la dispoziţie în mai multe limbi, dar nu ne putem angaja la termene limită încă. Mai multe limite operaționale, cum ar fi personalul, contribuitorii activi și costurile serverelor, joacă un rol în stimularea eforturilor de internaționalizare (i18n). +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Intenționăm să începem eforturile i18n în aceste limbi: arabă, portugheză, Rusă și spaniolă (într-o anumită regulă) după ce am eliberat programa școlară în limba chineză. +### How can I report a new bug? -**De ce te concentrezi mai întâi pe curriculumul chinez?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -China este cea mai mare regiune demografică din audienţa noastră non-nativă vorbitoare de engleză. În prezent, avem sute de mii de utilizatori care folosesc o versiune veche a platformei. Concentrarea pe programa de învăţământ chineză ne va oferi o estimare a logisticii implicate în i18 n. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Ne vom concentra asupra Americii Latine ca regiune demografică pentru portugheză şi spaniolă. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -În viitorul previzibil nu avem niciun plan pentru i18n cu privire la alte limbi decât cele de mai sus. +### How can I report a security issue? -Nu vă încurajăm să lucraţi la i18n la limbile de mai sus. Putem accepta cereri atractive, fără nicio aşteptare de la un calendar la implementări. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Cum pot raporta o eroare nouă? +### I am a student. Can I work on a feature for academic credits? -Dacă crezi că ai găsit un bug, mai întâi citește articolul ["Ajută-mă să găsesc o eroare"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) și urmează instrucțiunile sale. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Dacă sunteți încrezător că este un nou bug, mergeți înainte și creați o nouă problemă GitHub. Asigurați-vă că includeți cât mai multe informații posibil, astfel încât să putem reproduce eroarea. Avem un model de emisiune predefinit pentru a vă ajuta în acest sens. +We request you to plan ahead and work on code contributions with this in mind. -Vă rugăm să rețineți că orice problemă care necesită ajutor pentru codificare cu privire la o provocare va fi închisă. Monitorizatorul problemei este strict pentru chestiuni şi discuţii legate de codebis. Ori de câte ori aveți dubii, ar trebui [să solicitați asistență pe forumul](https://forum.freecodecamp.org) înainte de a face un raport. +### What do these different labels that are tagged on issues mean? -### Cum pot raporta o problemă de securitate? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Vă rugăm să nu creați probleme GitHub pentru probleme de securitate. În schimb, vă rugăm să trimiteți un e-mail la `security@freecodecamp.org` și îl vom examina imediat. +### Where do I start if I want to work on an issue? -### Sunt student, pot eu sau echipa noastră să lucrez la o caracteristică a creditelor academice? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Da, sigur. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -În timp ce suntem deschişi tuturor contribuţiilor, vă rugăm să rețineți că nu putem să ne angajăm la un calendar care ar putea fi o cerință la colegiul sau universitatea dvs. Primim multe cereri de tras și contribuții de cod din partea dezvoltatorilor de voluntari și le respectăm timpul și eforturile. Nu vom putea acorda nicio propunere de regulament o atenţie specială pentru ca aceasta să fie echitabilă pentru toţi. +### I found a typo. Should I report an issue before I can make a pull request? -Vă cerem să planificaţi şi să lucraţi la o caracteristică având în vedere acest lucru. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Ce înseamnă aceste etichete diferite care sunt etichetate pe probleme? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -Menținătorii de cod [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) probleme și trage cereri pe baza priorității, severității și altor factori. Poți [găsi un glosar complet al semnificațiilor lor aici](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### De unde încep dacă vreau să lucrez la o problemă? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Ar trebui să treceți prin [**`ajutați`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) sau [**`prim cronometre doar`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) pentru o prezentare rapidă a ceea ce este disponibil pentru a lucra. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`a dorit`problemele** sunt întâmpinate și nu trebuie să cauți permisiunea înainte de a lucra la ele. Cu toate acestea, problemele cu eticheta **`doar pentru primele cronometre`** sunt rezervate persoanelor care nu au contribuit la codul de tabăra liberă înainte. Dacă aceste probleme nu sunt clare cu privire la ceea ce trebuie făcut, nu ezitaţi să adresaţi întrebări în comentarii. +### I am stuck on something that is not included in this documentation. -### Am găsit o tipografie, ar trebui să raportez o problemă înainte de a putea face o cerere de tragere? - -Pentru caractere și alte modificări de formulare, puteți deschide direct cererile de tragere fără a crea o problemă mai întâi. Aspectele sunt mai degrabă destinate discutării unor probleme mai ample asociate cu codul sau cu aspectele structurale ale programei școlare. - -Cu toate acestea, vă rugăm să menționați detaliile, contextul etc. în zona de descriere a cererii de tragere pentru a ne ajuta să înțelegem și să revizuim contribuția dvs. chiar și pentru modificări minore. - -### Cum pot obține o problemă care mi-a fost atribuită? - -De obicei, noi nu atribuim probleme nimănui, în afară de contribuitorii care au contribuit mult timp, pentru a evita neprezentarea ambiguă. În schimb, respectăm politica de mai jos pentru a fi corecți față de toată lumea: - -1. Prima cerere de tragere pentru orice problemă este preferabilă fuzionării. -2. În cazul unor cereri multiple pentru aceeași problemă, acordăm prioritate calității codului în cererile de tragere. - - Ai inclus teste? - - Ai prins toate uzinele? - - Te-ai asigurat că toate testele au trecut și ai confirmat că totul funcționează la nivel local? -3. În cele din urmă, favorizăm cererile care respectă orientările recomandate. - - Ai urmărit lista de verificare pentru pull request? - - Ai numit în mod util titlul cererii de tragere? - -Nu aveți nevoie de permisiune pentru probleme care sunt marcate cu `ajutor dorit` sau `primele cronometre doar` ca explicații mai devreme. - -Urmaţi cu atenţie instrucţiunile şi deschideţi o cerere de tragere. - -### Sunt blocat pe ceva care nu este inclus în această documentaţie. - -**Nu ezita să cereți ajutor în:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Suntem încântaţi să vă ajutăm să contribuiţi la oricare dintre subiectele la care doriţi să lucraţi. Vă rugăm să ne adresaţi întrebări cu privire la subiectele aferente şi vom fi bucuroşi să clarificăm. Asigură-te că ai căutat interogarea înainte de a posta una nouă. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Fii politicos şi răbdător. Comunitatea noastră de voluntari şi moderatori este mereu în jur pentru a te ghida prin întrebările tale. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Asistență suplimentară:** +**Additional Assistance:** -Dacă aveți întrebări despre stivă, arhitectura codebazului, nu ezitați să contactați echipa noastră de dezvoltatori: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Personal | Trimite mesaj pe Forum | +| Staff | Send message on Forum | |:--------------------- |:---------------------------------------------------------------------------- | | Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | | Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | | Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | | Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | | Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | -| dl Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | +| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Poți trimite un e-mail personalului nostru de dezvoltator la: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Romanian/_sidebar.md b/docs/i18n/Romanian/_sidebar.md index b0905ade74..1b5bda2bdc 100644 --- a/docs/i18n/Romanian/_sidebar.md +++ b/docs/i18n/Romanian/_sidebar.md @@ -1,36 +1,39 @@ -- **Noțiuni de bază** - - [Introducere](index 'Contribuie la comunitatea freeCodeCamp.org') - - [Întrebări frecvente](FAQ.md) -- **Codare Contribuție** -- - [Configurează tabăra freeCodep locală](how-to-setup-freecodecamp-locally.md) - - [Deschide o cerere de tragere](how-to-open-a-pull-request.md) - - [Lucrările privind provocările programării](how-to-work-on-coding-challenges.md) - - [Activități privind provocările video](how-to-help-with-video-challenges.md) - - [Lucru la tema știrilor](how-to-work-on-the-news-theme.md) - - [Lucrați la tema docs](how-to-work-on-the-docs-theme.md) -- **Ghiduri opționale** - - [Prinde e-mailuri trimise local](how-to-catch-outgoing-emails-locally.md) - - [Configurați tabăra freeCodep pe WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Manuale de zbor** (pentru personal & Mods) - - [Manual Moderator](flight-manuals/moderator-handbook.md) - - [Şabloane de răspuns](flight-manuals/using-reply-templates.md) - - [Sumar DevOps](devops.md) - - [Lucru pe Servere](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Comunitatea noastră** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Forum de descarcare**](https://freecodecamp.org/forum/c/contributors) - - [**Chat Gitter**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Romanian/devops.md b/docs/i18n/Romanian/devops.md index a79999ebd2..46fb8b5382 100644 --- a/docs/i18n/Romanian/devops.md +++ b/docs/i18n/Romanian/devops.md @@ -1,75 +1,75 @@ -# Operațiuni pentru dezvoltatori la freeCodeCamp.org +# DevOps Handbook -Acest ghid vă va ajuta să înțelegeți stiva noastră de infrastructură și modul în care ne menținem platformele. Deși acest ghid nu are detalii exhaustive pentru toate operațiunile, ar putea fi folosit ca referință pentru înțelegerea sistemelor. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Haideți să știm, dacă aveți feedback sau întrebări și vom fi fericiți să clarificăm. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Cum construim, testăm şi desfăşurăm codeba? +# Flight Manual - Code deployments -Acest depozit este construit, testat și implementat în permanență pe **seturi separate de infrastructură (servere, baze de date, CDN-uri etc.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Aceasta implică trei etape care trebuie urmate succesiv: +This involves three steps to be followed in sequence: -1. Noile modificări (atât reparații, cât și caracteristici) sunt fuzionate în ramura noastră principală de dezvoltare (`master`) prin pull requests. -2. Aceste modificări sunt efectuate printr-o serie de teste automate. -3. Odată ce testele trec vom lansa modificările (sau le vom actualiza dacă este cazul) la implementări pe infrastructura noastră. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. -#### Construirea codebazei - cartografierea ramurilor de git la proiectare. +#### Building the codebase - Mapping Git Branches to Deployments. -În mod tipic, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (ramura implicită de dezvoltare) este fuzionată în ramura [`de producție-stagaging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) o dată pe zi și este eliberată într-o infrastructură izolată. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Aceasta este o versiune intermediară pentru dezvoltatorii și colaboratorii noștri. Aceasta este cunoscută și sub numele de eliberarea noastră în etape sau în faza „beta”. +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Este identic cu mediul nostru de producție live la `freeCodeCamp.org`, altul decât acesta folosind un set separat de baze de date, servere, web-proxy-uri etc. Această izolare ne permite să testăm dezvoltarea continuă şi caracteristicile unui scenariu de „producţie”, fără a afecta utilizatorii obişnuiţi de platformele principale ale freeCodeCamp.org. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -Odată ce echipa de dezvoltatori [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) este mulțumită de modificările de pe platforma de stagii, aceste modificări sunt mutate la fiecare câteva zile la ramura [`de producție-curent`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current). +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -Aceasta este versiunea finala care muta schimbari la platformele noastre de productie pe freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Testare modificări - Testare de integrare și acceptare a utilizatorului. +#### Testing changes - Integration and User Acceptance Testing. -Folosim diferite niveluri de integrare și testare a acceptării pentru a verifica calitatea codului. Toate testele noastre sunt efectuate prin programe precum [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) și [Aur Conducte](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -Avem teste unitare pentru testarea soluțiilor provocatoare, API-uri server și interfețe de Utilizator Client. Acestea ne ajută să testăm integrarea între diferite componente. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!NOTĂ] Suntem, de asemenea, în proces de scriere a unor teste de sfârșit care vor ajuta la replicarea scenariilor din lumea reală, cum ar fi actualizarea unui e-mail sau efectuarea unui apel către API sau servicii terțe. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Împreună, aceste teste ajută la prevenirea repetării problemelor și se asigură că nu introducem o eroare atunci când lucrăm la o altă eroare sau la o caracteristică. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Schimbări Deploying - Pushing changes to servers. +#### Deploying Changes - Pushing changes to servers. -Am configurat software-ul de livrare continuă pentru a împinge schimbările la serverele noastre de dezvoltare și producție. +We have configured continuous delivery software to push changes to our development and production servers. -Odată ce modificările sunt împinse la ramurile protejate de lansare, o conductă de construcții este activată automat pentru sucursală. Conductele de construcții sunt responsabile de construirea artefactelor și de păstrarea lor într-un depozit frigorific pentru o utilizare ulterioară. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -Conducta de construcţii continuă să declanşeze o conductă de eliberare corespunzătoare dacă finalizează o rulare de succes. Conductele de lansare sunt responsabile pentru colectarea artefactelor de construcție, mutarea lor pe servere și începerea activității. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Starea construcțiilor și a versiunilor sunt [disponibile aici](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Declanşarea unei construcţii, testări şi implementări. +## Trigger a build, test and deploy -În prezent, numai membrii echipei de dezvoltatori pot împinge către filialele de producţie. Modificările la filialele `producția-*` pot ateriza doar prin îmbinare rapidă în [`în amonte`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!NOTĂ] În zilele următoare am îmbunătăți acest flux care se face prin cereri de tragere, pentru o mai bună gestionare a accesului și transparență. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Se trimit modificări la Staging Applications. +### Pushing changes to Staging Applications. -1. Configureaza corect telecomenzile. +1. Configure your remotes correctly. ```sh git remote -v ``` - **Rezultate:** + **Results:** ``` - origin git@github.com:raisedadead/freeCodeCamp.git (fetch) - origin git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) - în amonte git@github.com:freeCodeCamp/freeCodeCamp.git (push) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Asigură-te că `stăpânește` ramura ta este primită și sincronizată cu partea de sus. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master @@ -77,24 +77,24 @@ Starea construcțiilor și a versiunilor sunt [disponibile aici](#build-test-and git reset --hard upstream/master ``` -3. Verificați dacă Travis CI transmite ramura `master` pentru amonte. +3. Check that the Travis CI is passing on the `master` branch for upstream. - Testele [de integrare continuă](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) ar trebui să fie verzi și PASSING pentru ramura `master`. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
          Verificarea stării pe Travis CI (captura de ecran) +
          Checking status on Travis CI (screenshot)
          - ![Verifică starea construirii pe Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
          - Dacă acest lucru nu reușește, trebuie să opriți și să investigați erorile. + If this is failing you should stop and investigate the errors. -4. Confirmă că poți construi depozitul local. +4. Confirm that you are able to build the repository locally. ``` - npm curățare și dezvoltare + npm run clean-and-develop ``` -5. Mută modificările de la `master` la `producție-stagaging` printr-o îmbinare rapidă înainte +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` git checkout production-staging @@ -102,26 +102,26 @@ Starea construcțiilor și a versiunilor sunt [disponibile aici](#build-test-and git push upstream ``` - > [!NOTĂ] Nu veți putea să apăsați forțat și dacă ați rescris istoricul în oricum aceste comenzi vor era. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Dacă o fac, poate aţi făcut ceva incorect şi ar trebui doar să începeţi din nou. + > If they do, you may have done something incorrectly and you should just start over. -Pașii de mai sus vor declanșa automat o rulare pe conducta de construcție pentru ramura `production-staging`. Odată ce construcția este completă, artefactele sunt salvate ca `.zip` fișiere într-un depozit rece pentru a fi extrase și utilizate mai târziu. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -Conducta de lansare este declanșată automat atunci când un artefact nou este disponibil prin conducta de construcții conectată. Pentru platformele de aşteptare, acest proces nu implică aprobare manuală, iar artefactele sunt împinse către serverele CDN şi API. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP label:Estimări] În mod tipic, construcția durează ~20-25 de minute pentru a fi completată, urmată de o execuție de eliberare, care durează ~15-20 de minute pentru client, ~5-10 minute pentru ca API-ul să fie disponibil în direct. De la apăsarea codului la a fi în direct pe platformele de stagii, întregul proces ia **~35-45 min** în total. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Se impun modificări aplicațiilor de producție. +### Pushing changes to Production Applications. -Procesul este în mare parte identic cu platformele de așteptare, existând câteva verificări suplimentare. Acest lucru este doar pentru a ne asigura că nu stricăm nimic pe freeCodeCamp.org care poate vedea sute de utilizatori folosindu-l în orice moment. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| NU executați aceste comenzi dacă nu ați verificat că totul funcționează pe platforma de așteptare. Nu trebuie să evitaţi sau să săriţi peste nici un test la punerea în scenă înainte de a continua în continuare. | -|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Asigură-te că ramura ta `production-staging` este curată și sincronizată cu partea de sus. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh git checkout production-staging @@ -129,99 +129,580 @@ Procesul este în mare parte identic cu platformele de așteptare, existând câ git reset --hard upstream/production-staging ``` -2. Mută modificările de la `production-staging` la `production-current` printr-o fuziune rapidă +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` git checkout production-current - git fuzionare production-staging + git merge production-staging git push upstream ``` - > [!NOTĂ] Nu veți putea să apăsați forțat și dacă ați rescris istoricul în oricum aceste comenzi vor era. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Dacă o fac, poate aţi făcut ceva incorect şi ar trebui doar să începeţi din nou. + > If they do, you may have done something incorrectly and you should just start over. -Etapele de mai sus vor declanșa automat o rulare pe conducta de construcție pentru ramura `production-current`. Odată ce un artefact de construcție este gata, va declanșa o rulare pe conducta de eliberare. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP label:Estimări] În mod tipic, rularea construcției necesită ~20-25 minute până la finalizare. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Pași suplimentari pentru acțiunea personalului** +**Additional Steps for Staff Action** -Se declanșează o lansare, membrii echipei de dezvoltatori vor primi un e-mail de intervenție manual automat. Ei pot _aproba_ sau _respinge_ rularea versiunii. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Dacă modificările funcţionează bine şi au fost testate pe platforma de aşteptare, atunci acestea pot fi aprobate. Aprobarea trebuie acordată în termen de 4 ore de la declanşarea versiunii înainte de a fi respinsă automat. Un membru al personalului poate declanșa din nou eliberarea rulată manual pentru curse respinse, sau poate aștepta următorul ciclu de eliberare. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Pentru uzul personalului: +For staff use: -| Verifică-ți e-mailul pentru un link direct sau [mergi la tabloul de bord al lansării](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) după ce construcția este completă. | -|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Odată ce unul dintre membrii personalului aprobă o versiune, conducta va împinge schimbările live pe serverele de producție CDN și API ale freeCodeCamp.org. De obicei iau ~15-20 minute pentru client, și ~5 minute pentru ca serverele API să fie disponibile în direct. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP label:Estimări] Versiunea rulează de obicei durează ~15-20 minute pentru fiecare exemplu de client și ~5-10 minute pentru fiecare instanță API pentru a fi disponibil în direct. De la împingerea codului la live pe platformele de producție, întregul proces ia **~90-120 min** în total (fără a număra timpul de așteptare pentru aprobarea personalului). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Stadiul de construcție, încercare și desfășurare +## Build, Test and Deployment Status -Iată testul curent, stadiul de construire și implementare a codebasului. +Here is the current test, build and deployment status of the codebase. -| Tip | Sucursala | Status | Panou | -|:--------------------- |:---------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |:--------------------------------------------------------------------------------------------- | -| Teste CI | [`Maestru`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Stare Build CI Travis](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Mergeți la tabloul de bord](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Teste CI | [`stagnarea producției`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Stare Build CI Travis](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Mergeți la tabloul de bord](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Conducta de compilare | [`stagnarea producției`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Stare compilare](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Mergeți la tabloul de bord](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Conducta de lansare | [`stagnarea producției`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Mergeți la tabloul de bord](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| Teste CI | [`producție-curent`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Stare Build CI Travis](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Mergeți la tabloul de bord](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Conducta de compilare | [`producție-curent`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Stare compilare](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Mergeți la tabloul de bord](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Conducta de lansare | [`producție-curent`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Mergeți la tabloul de bord](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Acces precoce şi testare beta +## Early access and beta testing -Vă urăm bun venit pentru a testa aceste versiuni într-un mod **"testare beta publică"** şi obţineţi acces timpuriu la caracteristicile viitoare ale platformelor. Uneori aceste caracteristici/modificări sunt menționate ca **în continuare, beta, staging,** etc. interschimbabil. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Contribuțiile dvs. prin feedback și rapoarte de probleme ne vor ajuta în crearea platformelor de producție pe `freeCodeCamp. rg` mai multe **rezilient**, **consistent** și **stabil** pentru toată lumea. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Vă mulţumim pentru raportarea erorilor cu care vă confruntaţi şi pentru ajutorul în îmbunătăţirea freeCodeCamp.org. Tu stânci! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Identificarea versiunii viitoare a platformelor +### Identifying the upcoming version of the platforms -În prezent, o versiune publică de testare beta este disponibilă la adresa: +Currently a public beta testing version is available at:

          freecodecamp.dev

          -> [!NOTĂ] Domeniul este diferit de **`freeCodeCamp.org`**. Acest lucru este intenționat pentru a preveni indexarea motorului de căutare și pentru a evita confuzia în rândul utilizatorilor obișnuiți ai platformei. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Identificarea versiunii actuale a platformelor +### Identifying the current version of the platforms -**Versiunea curentă a platformei este întotdeauna disponibilă la [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -Echipa dev-team îmbină schimbări din filiala `production-staging` în `production-current` atunci când eliberează modificări. Cel mai important angajament ar trebui să fie ceea ce vezi în direct pe site. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Puteți identifica versiunea exactă implementată vizitând jurnalele de construcție și implementare disponibile în secțiunea de stare. Alternativ, ne poți da și în [camera de chat](https://gitter.im/FreeCodeCamp/Contributors) a contributorilor pentru confirmare. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Limitări cunoscute +### Known Limitations -Există unele limitări și compromisuri cunoscute când se utilizează versiunea beta a platformei. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### Toate datele / progresul personal pe aceste platforme beta `NU vor fi salvate sau reportate` la producție. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Utilizatorii din versiunea beta vor avea un cont separat de producție.** Versiunea beta folosește o bază de date separată fizic de producție. Acest lucru ne permite să prevenim orice pierdere accidentală de date sau modificări. Echipa de dezvoltatori poate şterge baza de date pe această versiune beta în funcţie de necesităţi. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Nu există garanții pentru uptime și fiabilitate a platformelor beta. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Este de aşteptat ca instalarea să fie frecventă şi, în iteraţii rapide, uneori de mai multe ori pe zi. Drept urmare, va exista o întrerupere neașteptată la anumite momente sau o funcționalitate întreruptă a versiunii beta. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Nu trimite utilizatori obișnuiți pe acest site ca măsură de confirmare a unei reparații +- #### Do not send regular users to this site as a measure of confirming a fix - Situl beta este şi a fost întotdeauna acela de a spori dezvoltarea locală şi testarea, nimic altceva. Nu este o promisiune a ceea ce vine, ci o privire asupra a ceea ce se lucrează. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### Pagina de semnare poate arăta diferit de producție +- #### Sign page may look different than production - Folosim un chiriaş de test pentru freecodecamp.dev pe Auth0, şi de aceea nu avem abilitatea de a seta un domeniu personalizat. Acest lucru face ca toate callback-urile de redirecționare și pagina de autentificare să apară într-un domeniu implicit, cum ar fi: `https://freecodecamp-dev.auth0.com/`. Acest lucru nu afectează funcționalitatea este atât de aproape de producție pe cât putem obține. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Raportarea problemelor și oferirea de feedback +## Reporting issues and leaving feedback -Vă rugăm să deschideți noi probleme pentru discuții și raportare bug-uri. Poți să le etichetezi ca versiune **[`: următorul/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** pentru triaj. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Puteţi trimite un e-mail la `dev[at]freecodecamp.org` dacă aveţi întrebări. Ca întotdeauna, toate vulnerabilităţile de securitate ar trebui raportate `securităţii[at]freecodecamp.org` în loc de public tracker şi forum. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

          https://amplify.nginx.com

          +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Romanian/flight-manuals/moderator-handbook.md b/docs/i18n/Romanian/flight-manuals/moderator-handbook.md deleted file mode 100644 index 23a667ac9e..0000000000 --- a/docs/i18n/Romanian/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# Manualul oficial al moderatorului taberei freeCodep. - -Acest lucru vă va ajuta să moderați diferite locuri din comunitatea noastră, inclusiv: - -- Probleme GitHub & pull requests -- Forumul, camere de discuţii, grupuri Facebook şi alte locuri de întâlniri online -- Evenimente în persoană, cum ar fi grupuri de studiu, hackatons și conferințe - -**Toți moderatorii freeCodeCamp sunt moderatori la nivelul întregii comunități. Asta înseamnă că avem încredere că veți supraveghea oricare dintre aceste locuri.** - -Acestea fiind spuse, poți servi ca moderator în locurile în care ești cel mai interesat de tine. Unii moderatori doar ajută pe GitHub. Alţii ajută pur şi simplu la forum. Unii moderatori sunt activi peste tot. - -Concluzia este că vrem să îți place să fii moderator, și investiți timp redus în locuri care vă interesează. - -> [!NOTĂ] "Cu o mare putere vine o mare responsabilitate". - Uncle Ben - -Ca moderator, temperamentul este mai important decât competențele tehnice. - -Ascultă. Fii ajutător. Nu abuzați de putere. - -FreeCodeCamp este o comunitate inclusivă, și trebuie să o păstrăm așa. - -Avem un cod de conduită unic care guvernează întreaga noastră comunitate. Cu cât regulile sunt mai puține, cu atât mai ușor să își amintească. Poți citi aceste reguli și să le dedici memoriei [aici](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderatorii au capacitatea de a închide problemele și de a accepta sau închide cererile de tragere. - -Moderatorii au două responsabilități principale cu privire la GitHub: - -1. Întrebări și îmbinări cereri pull -2. Evaluarea problemelor și răspunsul la acestea - -## Moderarea cererilor Pull - -Solicitările Pull (PR) sunt modul în care contribuitorii depun modificările la depozitul freeCodeCamp. Este important să efectuăm Asigurarea Calităţii (QA) în cererile de tragere înainte de a decide fuzionarea sau închiderea lor. - -### Tipuri de cereri pull - -1. **Edituri de instrucțiuni provocare** Acestea sunt modificări în textul provocărilor - Descriere, instrucțiuni sau Test Text. Puteți, de asemenea, să revizuiți aceste drepturi pe GitHub și să decideți dacă să le fuzionați. Trebuie să fim puţin mai atenţi la acestea, pentru că milioane de oameni vor întâlni acest text în timp ce lucrează prin programa freeCodeCamp. Solicitarea de tragere face textul mai clar fără a-l face mult mai lung? Modificările sunt relevante și nu prea pedante? Amintiţi-vă că scopul nostru este ca provocările să fie cât mai clare şi mai scurte posibil. Nu sunt locul pentru detalii obscure. De asemenea, contribuabilii pot încerca să adauge legături cu resursele la provocări. Puteți închide aceste cereri pull și să le răspundeți astfel: - - > Vă mulțumim pentru cererea dvs. de tragere. - > - > Închid această cerere de tragere. Vă rugăm să adăugați în schimb link-uri și alte detalii la articolul orientativ corespunzător al provocării. - > - > Dacă credeți că greșesc în închiderea acestei probleme, vă rugăm să o redeschideți și să adăugați clarificări suplimentare. Mulțumesc și codificare fericită. - -2. **Editarea codului provocării** Acestea sunt modificări ale codului într-o provocare - provocarea seed-ului provocării, soluția provocării și șirurile de teste. Aceste cereri de tragere trebuie retrase din GitHub și testate pe calculatorul local pentru a se asigura că testele de provocare pot fi transmise în continuare cu soluția curentă, iar noul cod nu introduce nicio eroare. Unii contribuabili ar putea încerca să adauge teste suplimentare pentru a acoperi cazurile pedantice. Trebuie să fim atenţi să nu complicăm prea mult această provocare. Aceste provocări şi testele lor ar trebui să fie cât mai simple şi intuitive posibil. În afară de provocările legate de algoritm și de secțiunea de predare a interviului, cursanții ar trebui să poată rezolva fiecare provocare în aproximativ 2 minute. - -3. **Modificări de Codebase** Aceste modificări de cod schimbă funcționalitatea platformei freeCodeCamp în sine. Uneori contribuitorii încearcă să facă schimbări fără prea multă explicație, dar pentru modificările de cod trebuie să ne asigurăm că este nevoie cu adevărat de schimbare. Așadar, aceste solicitări de tragere ar trebui să facă referire la un subiect GitHub existent, în care să fie discutate motivele modificării. Apoi poți deschide cererea de tragere pe computer și să le testezi local. După ce aţi făcut, dacă schimbările arată bine, nu le îmbinaţi încă. Puteți comenta cererea de tragere spunând "LGTM", apoi menționați @raisedadead pentru a putea arunca o privire finală. - -### Cum să fuzionezi sau să închizi cererile de tragere - -În primul rând, când alegi o cerere de tragere la QA, ar trebui să o atribuiţi. Puteți face acest lucru făcând clic pe link-ul "atribuiți" de sub partea "cesionar" din coloana din dreapta a interfeței GitHub. - -În funcție de tipul de cerere de tragere, urmează regulile corespunzătoare enumerate mai sus. - -Înainte de a îmbina orice cerere de tragere, asigură-te că GitHub are bife verzi pentru orice. Dacă există vreo X, investigați-le mai întâi și dați-le seama cum să le transformați în bife verzi. - -Uneori va exista un conflict de fuziune. Asta înseamnă că o altă cerere de tragere a făcut o modificare în exact aceeași parte a aceluiași fișier. GitHub are un instrument pentru abordarea acestor conflicte de fuziune chiar pe GitHub. Poți încerca să rezolvi aceste conflicte. Folosiți doar cea mai bună judecată. Modificările cererii de tragere vor fi în partea de sus, iar modificările ramurii principale vor fi în jos. Uneori vor exista informații redundante în această privință, care pot fi șterse. Înainte de a termina, asigură-te că ștergi `<<<<<<`, `=======`, şi `>>>>>>` pe care Git le adaugă pentru a indica zonele de conflict. - -Dacă cererea pull pare pregătită pentru îmbinare (și nu necesită aprobare de la @raisedadead), puteți merge înainte și fuziona. Asigurați-vă că utilizați funcționalitatea implicită "Squash and Merge" pe GitHub. Acest lucru va strivi toate tragerile de cereri comit în jos într-un singur comitet, ceea ce va face istoria Git mult mai ușor de citit. - -Ar trebui apoi să comentați cu privire la cererea de tragere, mulțumind contribuitorului în propriul dvs. mod personal. - -Dacă autorul cererii de tragere este un "contribuitor pentru prima dată", ar trebui să îi felicitați și pentru prima lor cerere de îmbinare în arhivă. Vă puteţi uita la colţul din dreapta sus al corpului propunerii de regulament pentru a determina un contribuitor pentru prima dată. Va afișa `primul contributor` după cum se arată mai jos: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C%B7_freeCodeCamp_freeCodeCamp 690x281](https://i.imgur.com/dTQMjGM.png) - -Dacă cererea pull nu pare gata să se îmbine, poți răspunde politicos spunând autorului ce ar trebui să facă pentru a-l pregăti. Să sperăm că vor răspunde și vor obține cererea lor de tragere mai aproape de pregătire. - -Adesea, o cerere de tragere va fi evident un efort redus. Adesea puteți spune acest lucru imediat când contribuitorul nu s-a deranjat să bifeze căsuțele din șablonul Solicitare Pull sau a folosit un titlu generic pull request cum ar fi "made changes" sau "Update index. d." - -Există, de asemenea, situații în care contribuitorul încearcă să adauge un link la propriul său site, sau include o bibliotecă pe care au creat-o ei înșiși, sau are o editare neserioasă care nu ajută pe nimeni, ci pe toate. - -În ambele situații, ar trebui să continuați și să închideți cererea de tragere și să răspundeți cu acest mesaj standard: - -> Vă mulțumim pentru deschiderea acestei cereri de tragere. -> -> Acesta este un mesaj standard care vă anunță că v-am revizuit cererea pull și am decis să nu îl îmbinăm. Dorim să salutăm viitoarele solicitări de tragere din partea dumneavoastră. -> -> Vă mulţumesc şi vă mulţumesc pentru codificare. - -Dacă aveți nevoie de o a doua opinie cu privire la o cerere de tragere, continuați și lăsați comentariile dvs. cu privire la cererea de tragere, apoi adăugați eticheta "discussing" la cererea de tragere. - -## Moderarea problemelor GitHub - -freeCodeCamp este un proiect open source activ. Avem noi probleme în fiecare zi, toate acestea trebuind să fie testate și etichetate. - -### Tipuri de probleme GitHub - -1. **Cereri de ajutor cod**, pentru care oamenii au creat greșit probleme GitHub. Dacă cineva cere ajutor, adaugă următorul mesaj, apoi închide problema. - - > Vă mulţumim că aţi raportat această problemă. - > - > Acesta este un mesaj standard care vă anunță că această problemă pare să fie o solicitare de ajutor. În loc să cereţi ajutor aici, vă rugăm să faceţi clic pe butonul \*\*"Ajutor\*\* la provocare pe freeCodeCamp, care vă va ajuta să creaţi o întrebare în partea dreaptă a forumului. Voluntarii de pe forum răspund de obicei la întrebări în câteva ore şi pot ajuta la determinarea dacă există o problemă cu codul sau testele provocării. - > - > Dacă membrii forumului determină că nu este nimic în neregulă cu codul dvs., puteți solicita redeschiderea acestei probleme. - > - > Vă mulţumesc şi vă mulţumesc pentru codificare. - -2. **Probleme de eroare sau Clarificare** Încercați să reproduceți singur eroarea dacă puteți. Dacă nu, cereți-le pașii pentru a reproduce eroarea și dacă au capturi de ecran, videoclipuri sau detalii suplimentare care vă pot ajuta să reproduceți problema. Odată ce poți reproduce problema - sau cel puțin să confirmi că este o problemă cu legit-ul - eticheta `a confirmat`. Atunci: - -- Dacă este o schimbare simplă la o provocare existentă, eticheta este doar `primele cronometre`, altfel eticheta ca `ajutor dorit`. Utilizaţi alte etichete după caz. -- Dacă problema este mai semnificativă, marcați ca `bug`.   Dacă există vreo ambiguitate în ceea ce privește cursul adecvat de acțiune în legătură cu o problemă, nu ezitați să etichetați @raisedadead pe această temă, primiți opinia sa pe această temă, apoi adăugați eticheta `Discussing`. - -3. **Duplicate Probleme** Dacă o problemă este identică cu o altă problemă raportată, problema raportată anterior ar trebui să aibă prioritate. Marchează ca `duplicat`, adaugă următorul mesaj înlocuind `#XXXXX` cu numărul de emisiune, apoi închide problema. - - > Vă mulţumim că aţi raportat această problemă. - > - > Acesta este un mesaj standard care vă anunță că această problemă pare să fie foarte asemănătoare cu problema #XXXXX, Aşa că îl închei ca pe un duplicat. - > - > Dacă credeți că greșesc în închiderea acestei probleme, vă rugăm să o redeschideți și să adăugați clarificări suplimentare. Vă mulţumesc şi vă mulţumesc pentru codificare. - -4. **Reparat în organizare** Unele probleme au fost deja rezolvate în etape, dar nu au o problemă GitHub asociată cu ele. În acest caz, puteți adăuga următorul mesaj, să închideți problema și să adăugați o etichetă `stare: rezolvat/livrare`: - - > Vă mulţumim că aţi raportat această problemă. - > - > Acesta este un mesaj standard care vă anunţă că problema pe care aţi menţionat-o aici este prezentă în producţie, dar acesta a fost deja fixat treptat. Aceasta înseamnă că data viitoare când ne împingem sucursala de scenă spre producţie, această problemă ar trebui rezolvată. Din această cauză, închei problema. - > - > Dacă credeți că greșesc în închiderea acestei probleme, vă rugăm să o redeschideți și să adăugați clarificări suplimentare. Vă mulţumesc şi vă mulţumesc pentru codificare. - -### Închide Stale, învechite, Probleme inactive și Solicitări Pull - -- Problemele persistente sau PR-urile sunt cele care nu au mai observat nicio activitate din partea OP-ului timp de 21 de zile (3 săptămâni de la ultima activitate), dar numai după ce un moderator a solicitat mai multe informații/schimbări. Acestea pot fi închise într-un script automat/bot sau de către moderatorii înșiși. - -- Activitatea este definită ca: Comentarii care solicită o actualizare în PR și triage-uri ca `stare: actualizare necesară` etichetă etc. - -- În cazul în care OP solicită asistență suplimentară sau chiar timp, după ce i se dă un răspuns, acesta poate fi relaxat și revizitat. În orice caz, modalitățile ar trebui să se folosească de cea mai bună apreciere pentru a soluționa situația nerezolvată a propunerii de regulament. - -### Alte orientări pentru moderatori pe GitHub - -Deşi aveţi acces la scriere la depozitul freeCodeCamp, **nu ar trebui să împingeţi codul direct în depozitele freeCodeCamp**. Codul ar trebui să introducă codul freeCodeCamp, sub forma unei cereri de tragere de la o furcă a depozitului. - -De asemenea, nu ar trebui să acceptați niciodată propriile dvs. PR. Ele trebuie să fie făcute de un alt moderator, exact ca orice alt PR. - -Dacă observați că cineva încalcă codul de conduită [](https://code-of-conduct.freecodecamp.org) pe probleme GitHub, sau deschiderea cererilor de tragere cu conținut rău intenționat sau cod, e-mail dev@freecodecamp. rg cu un link către cererea de tragere ofensivă și putem lua în considerare interzicerea completă a acesteia de la organizația GitHub a freeCodeCamp. - -# Moderarea forumului - -Ca moderator, te ajuți să menții comunitatea noastră un loc plăcut pentru oricine să învețe și să primească ajutor. Vei avea de-a face cu postări steaguri și spam, off-topic și alte conversații nepotrivite. - -Reţineţi că odată ce sunteţi moderator pe forum, veţi începe să vedeţi sugestii de moderator albastru despre membrii forumului, ca "aceasta este prima dată când [person] a postat un post - hai să îi urăm bun venit în comunitate! sau "[person] nu a fost postat mult timp - hai să îi urăm înapoi." - -![Un mesaj albastru care spune "este prima dată [person] a fost postat - hai să-i întâmpinăm în comunitate!](https://i.imgur.com/mPmVgzK.png) - -Acestea sunt oportunităţi pentru ca dumneavoastră să le primiţi şi să le faceţi să se simtă mai speciale. Nu știți niciodată care persoană care este puțin implicată ar putea deveni următorul nostru super-ajutor, ajutând mulți alți oameni în călătoria lor de programare. Chiar și cea mai mică bunătate poate declanșa o cascadă de fapte bune. - -### Ştergere postări pe forum - -Moderatorii forumului au posibilitatea de a șterge postările utilizatorului. Ar trebui să faceți acest lucru doar pentru următoarele cazuri: - -1. Cineva a postat o imagine pornografică sau violentă. -2. Cineva a postat un link sau un cod care este răuvoitor în natură și care ar putea dăuna altor camere care fac clic pe el. -3. Cineva a inundat un subiect cu multe mesaje spam. - -### Tratarea spam-ului - -Pentru prima postare de tip spam a unui utilizator, trimite-le un mesaj care explică problema și elimină link-ul sau postarea, după caz. Lăsați o notă pe profilul utilizatorului explicând acțiunile pe care le-ați luat. Dacă problema persistă, urmaţi procesul de mai sus. Blocați silențios utilizatorul de la postare (folosind opțiunea de tăcere din panoul de administrare al utilizatorului), apoi trimiteți un avertisment cu Codul de conduită. Bifați căsuța din mesajul privat care indică faptul că mesajul dvs. este un "avertisment oficial". - -Puteți pune întrebări și raporta incidente în secțiunea [a forumului pentru personal](https://forum.freecodecamp.com/c/staff). - -### Abordarea conversațiilor în afara subiectului - -Postările sau subiectele care par să fie în locul greșit pot fi reclasificate sau redenumite orice ar fi potrivit. - -În circumstanțe excepționale, un moderator ar putea purta o discuție în mai multe subiecte. - -Din nou, dacă ai probleme sau întrebări, fă un post cu acțiunile tale în categoria Personalului, și etichetați un alt moderator dacă doriți ca acesta să revizuiască acțiunile dvs. de moderare. - -### Utilizatori minori - -Termenii noștri de utilizare impun ca utilizatorii de tabăra freeCodep să aibă cel puțin 13 ani. În cazul în care un utilizator dezvăluie că are mai puțin de 13 ani; trimite-le mesajul de mai jos şi şterge contul forumului (dacă ştergerea nu este disponibilă, suspendarea contului este suficientă). Apoi e-mail [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) sau [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) pentru a șterge și contul gratuit al utilizatorului. - -```markdown -OBIECT: Utilizatorilor cu vârsta sub 13 ani nu li se permite să folosească forumul per Termeni ai Serviciului - -A ajuns la concluzia că ai mai puțin de 13 ani. Per [termenii de utilizare freeCodeCampp](https://www.freecodecamp.org/news/terms-of-service), trebuie să ai cel puțin 13 ani pentru a folosi site-ul sau forul. Vom șterge atât contul tău freeCodep, cât și contul tău de forum. Această restricţie ne menţine în conformitate cu legislaţia Statelor Unite. - -Te rugăm să te alături din nou odată ce ai împlinit cel puțin 13 ani. - -Vă mulțumesc pentru înțelegere. -``` - -# Moderarea Facebook - -Dacă vezi orice ce pare să încalce [Codul nostru de conduită](https://code-of-conduct.freecodecamp.org/), ar trebui să-l ștergi imediat. - -Uneori oamenii vor posta lucruri pe care le consideră amuzante. Nu îşi dau seama că ceea ce au spus sau ceea ce împărtăşesc ar putea fi interpretat ca fiind ofensator. În aceste cazuri, postul lor ar trebui eliminat, dar persoana care l-a postat nu trebuie neapărat să fie interzisă. Prin ștergerea postării, sperăm că vor ajunge să înțeleagă că ceea ce au postat era nepotrivit. - -Dar dacă este o ofensivă egoistă care nu poate fi atribuită în mod rezonabil unei diferenţe culturale sau unei neînţelegeri a limbii engleze, atunci ar trebui să iei în considerare blocarea membrului din grupul Facebook. - -# Moderarea Discord - -Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: - -1. **Asiguraţi-vă că a fost intenţionat să încalce Codul de conduită.** Nu toate încălcările CoC au fost intenţionate ca atare. Un cameramator nou poate posta o cantitate mare de cod pentru ajutor, nu știți că acest lucru poate fi considerat spamming. În aceste cazuri, le puteți cere să livreze codul lor cu servicii precum Codepen sau Pastebin. - -2. **În cazul în care cameramanul încalcă în mod clar codul de conduită, moderatorul va proceda după cum urmează:** - -- Suspendă cameraşul ofensator, dar nu îi avertizează sau îi ameninţa. În schimb, acordați-le în mod liniștit rolul suspendat pe Discord, apoi trimiteți-le următorul mesaj: - -``` -Acesta este un mesaj standard care te anunță că a trebuit să te suspende temporar de la a vorbi pe serverul freeCodeCamp Discord. - -Sunt un moderator care acționează în numele comunității noastre cu sursă deschisă. Pot lua în considerare eliminarea suspensiei tale, dar am nevoie să faceți mai întâi următorii 3 pași: - -1. Citiți Codul nostru de conduită: https://code-of-conduct.freecodecamp.org/ -2. Trimite-mi un mesaj înapoi confirmând că ai terminat de citit. -3. Explică-mi de ce crezi că te-am suspendat și de ce ar trebui să vă elimin suspendarea. -``` - -- Raportează un scurt rezumat al evenimentului și modul în care au răspuns la acesta pe canalul #admin. Iată un exemplu despre cum ar putea arăta un astfel de rezumat: - -``` -Suspendat: _@nume de utilizator_ -Motiv(motive): _spamming, troling_ -Dovezi: _Unul sau mai multe link-uri către mesajul(ele) contraventiv(itoare)_ -CoC: _Sent_ -``` - -- Un raport pentru eliminarea unei suspensii ar trebui să arate astfel: - -``` -Am eliminat suspensia de la ` @username `. I-am trimis codul de conduită. Chiar azi şi-au dat seama că au fost suspendate şi şi-au cerut scuze pentru ceea ce au făcut. -``` - -- Pe baza răspunsului autorilor infracțiunii, moderatorul va decide dacă să elimine suspendarea din camera care a săvârșit infracțiunea. Dacă par respectuoase şi apologice, moderatorul poate elimina suspensia. Ca o chestiune de politică, moderatorii vor fi politicoși în timpul acestui proces, indiferent de cât de slab s-a comportat cameramanul care a comis infracțiunea. Dacă nu sunt respectuoase sau nu sunt dispuse să accepte CoC, suspendarea ar trebui urmărită cu o interdicție de la serverul Discord. Utilizaţi acelaşi rezumat ca mai sus, dar înlocuiţi "Suspended:" cu "Banned:". - -3. **Cum să banezi şi/sau să dezbanezi** - -- Pentru a bloca pe cineva, click dreapta pe numele de utilizator/profil și selectează "Ban ". Vi se va da opţiunea de a şterge mesajele anterioare - selectaţi "Nu şterge pe nimeni", întrucât mesajele ar trebui să rămână prezente ca o înregistrare istorică. -- Dacă decizi să interzici pe cineva, înseamnă că nu sunt dispuşi să respecte Codul nostru de conduită. Prin urmare, ar trebui să se renunţe rar la interzicerea unui Camper. Cu toate acestea, dacă este nevoie, poți face acest lucru dând click pe numele serverului, alegând "Setări server", alegând "Bans", selectând utilizatorul pe care dorești să-l debanezi, și făcând clic pe "Revoke Ban". - -Banii Discord sunt globali - nu poți interzice un utilizator dintr-un anumit canal, doar de pe întregul server. - -4. **Ștergerea mesajelor** Moderatorii au posibilitatea de a șterge mesajele de pe Discord. Acestea ar trebui să își exercite această capacitate numai în patru situații foarte specifice: - -- Cineva a postat o imagine pornografică sau violentă. -- Cineva a postat un link sau un cod care este răuvoitor în natură și care ar putea dăuna altor camere care fac clic pe el. -- Cineva a inundat discuția cu o mulțime de mesaje spam într-o măsură atât de mare (implicând de obicei bot-uri) încât chat-ul să devină complet inutilizabil. -- Cineva a postat publicitate și/sau un mesaj de autopromovare / imagine (social media). - -În toate celelalte situații - chiar și în situațiile în care codul de conduită este încălcat - moderatorii nu ar trebui să șteargă mesajul, deoarece acestea sunt o înregistrare istorică importantă. Când ștergeți un mesaj, asigurați-vă că ați făcut o captură de ecran mai întâi! Captura de ecran poate fi autentificată în canalul #mod-log, dar pentru jurnalul de #activitate-activitate este suficient să spui că dovezile au fost "eliminate din cauza conţinutului sensibil". Notă: Dacă mesajul conține materiale care ar fi ilegale pentru a face o captură de ecran, copiază în schimb link-ul mesajului - furnizează link-ul mesajului către @raisedadead pentru a redirecționa echipa de încredere și securitate Discord. - -5. **Nu utilizați @everyone sau @aici** Nu utilizați @toată lumea sau @aici, în nicio circumstanță! Fiecare persoană din acea cameră de chat va primi o notificare. În unele cazuri, zeci de mii de oameni. În schimb, dacă vrei ca oamenii să vadă un anunț, îl poți fixa la canal pentru a permite tuturor să îl citească. - -6. **Nu amenința să interzică sau să suspende** Dacă un cameron încalcă codul de conduită, nu ameninţă să le interzică sau să le suspende şi nu le avertizează niciodată în public. În schimb, vorbiți cu ei în mod privat sau trimiteți-le un DM și eliberați o suspendare (conform protocolului de mai sus). Nimeni altcineva din acel canal nu trebuie să ştie că ai interzis / suspendat persoana - camerele pot vizualiza rezumatul în canalul #activity-log dacă vor să ţină pasul cu aceste informaţii. Dacă o încălcare a fost în mod clar nedorită şi nu justifică o suspendare sau o conversaţie privată, sensibilizează-i camerorul cu privire la acțiunile sale fără a le face să apară ca un avertisment. De exemplu: - -- Camperul postează un zid de cod pentru a solicita ajutor - - Moderator: @username Te rugăm să folosești Codepen sau Pastebin pentru a posta cantități mari de cod. - -- Sau dacă chiar trebuie să explicați de ce: - - Moderator: @username Te rugăm să folosești Codepen sau Pastebin pentru a posta cantități mari de cod, pentru că perturbă discuția pentru toată lumea și ar putea fi considerată spam în conformitate cu Codul nostru de conduită. - -- În cazul încălcărilor ușoare și neintenționate ale codului de conduită - - Moderator: Acesta este un memento prietenos pentru toată lumea să urmeze codul de conduită: https://code-of-conduct.freecodecamp.org/ - -7. **Nu ezitați să fiți moderator** Nu vă considerați deasupra comunității. Tu ești comunitatea. Și comunitatea a avut încredere în tine să ajuți să protejezi ceva rar pe care îl împărtășim cu toții - un loc _bun venit_ pentru noi dezvoltatori. Dacă te prefaci că ești moderator, oamenii se pot simți neliniștit în jurul tău, în acelaşi mod în care oamenii se pot simţi neliniştiţi în jurul unui ofiţer de poliţie, chiar dacă nu fac nimic greşit. Aceasta este doar natura umană. - -8. **Nu contrazice alți moderatori** Dacă nu ești de acord cu acțiunea unui moderator, vorbește cu ei în privat sau spune-o în canalul #mod-chat. Nu suprascrie o interdicție și nu contrazice niciodată celălalt moderator (celorlalți) în mod public. În schimb, au o discuție răsunătoare în modchat și îl convinge pe moderator că ar trebui să își inverseze interdicția sau să își schimbe punctul de vedere. Ține minte: suntem cu toții în aceeași echipă. Vrem să demnizăm rolul moderatorilor și să prezentăm un front unificat. - -9. **Vorbiți cu alți moderatori** Avem loc doar pentru moderatori. Folosește-o! Dacă nu vă simțiți confortabil în a face față unei anumite situații, cereți ajutorul altor moderatori. Dacă credeţi că ar trebui discutat ceva, faceţi acest lucru. Tu faci parte din echipă și apreciem intrarea fiecărui membru al echipei! Chiar dacă nu sunteţi de acord cu ceva din aceste linii directoare sau cu Codul de conduită! - -10. **Temporar inactiv** Dacă nu vei fi activ ca Moderator pentru o vreme din cauza vacanței, boală sau orice alt motiv, asigurați-vă că informați ceilalți pe canalul #mod-chat. Așa că știm dacă putem conta pe tine pentru a fi activ în mod regulat pe server sau nu. - -# Cum să devii un moderator - -Dacă ajuți oamenii din comunitate în mod consecvent de-a lungul timpului, echipa noastră de moderatori va lua în cele din urmă observație, și unul dintre ele vă va menționa ca posibil moderator la [personalul nostru](https://forum.freecodecamp.org/g/Team). Nu există comenzi rapide pentru a deveni moderator. - -Dacă sunteți aprobat, vă vom adăuga la echipele noastre de moderatori pe [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTĂ] > **Pentru GitHub:** După ce ați fost acceptat ca moderator, veți primi o invitație pentru un depozit Github. Va trebui să te îndrepți spre [freeCodeCamp GitHub Organization Invitation](https://github.com/orgs/freeCodeCamp/invitation) pentru a putea accepta invitația. Acest lucru este necesar pentru ca noi să vă putem oferi acces la scriere în unele dintre depozitele noastre. - -# Cum pensionăm moderatori inactivi - -Vă rugăm să rețineți că în mod frecvent vom elimina modurile pe care le considerăm inactive. Când vom face acest lucru, vom trimite următorul mesaj: - -> Acesta este un mesaj standard care vă anunță că, pentru că se pare că nu ai fost un moderator activ recent, te eliminăm din echipa noastră de moderatori. Apreciem foarte mult ajutorul dumneavoastră din trecut. - -> Dacă crezi că am făcut asta din greșeală, sau odată ce ești gata să te întorci și să contribui mai mult, doar răspunde la acest mesaj spunându-mi să ştiu. - -# Cum funcționează camera noastră de colaboratori - -Oricine este binevenit în [sala Contributorilor pe Discord](https://discord.gg/KVUmVXA). Este sala de discuții desemnată pentru moderatori și alți camere de luat vederi care contribuie la comunitatea noastră în orice număr de moduri, inclusiv prin intermediul grupurilor de studiu. - -Presupunerea noastră este că contributorii vor citi orice informații din această încăpere care le menționează direct cu un `@username`. Orice altceva este opţional. Dar nu ezitaţi să citiţi orice postează acolo cineva şi interacţionaţi. - -# Confruntarea cu solicitanţii - -Este posibil să fiți abordați de organizațiile care doresc să se asocieze sau să co-brandeze cu freeCodeCamp într-un fel. Odată ce îți dai seama că asta e ceea ce au urmat, te rugăm să oprești să vorbească cu ei și să le spui să trimită un e-mail la quincy@freecodecamp.org. El primeşte propuneri ca acesta tot timpul şi este în poziţia cea mai bună pentru a aprecia dacă o astfel de relaţie ar merita pentru comunitatea noastră (şi rareori). - -# Tratarea anchetelor medicale (mentale) - -Puteţi întâlni situaţii în care utilizatorii solicită asistenţă medicală sau se ocupă de probleme de sănătate mintală şi caută asistenţă. Ca o chestiune de politică, ar trebui să evitaţi să vorbiţi privat despre aceste chestiuni. În cazul în care situaţia de la un moment dat se reflectă în fCC, dorim ca conversaţia (conversaţiile) să fie consemnată. Spuneți clar că noi nu suntem profesioniști din domeniul medical și că încurajați utilizatorul să găsească ajutor profesional. Oricât de dificil poate fi, evită să dai alte sfaturi sau sfaturi decât să indici utilizatorul în direcţia asistenţei profesionale! - -Dacă asta se întâmplă pe Discord: Suspendă utilizatorul. Nu trebuie să-i pedepsim pe ei! Suspendarea unui utilizator va crea un canal privat care este accesibil doar de către utilizator și echipă. Acest lucru va aduce beneficii atât utilizatorului, cât și fCC în mai multe moduri: - -- Utilizatorului i se garantează confidențialitatea datelor -- Chat-ul public nu mai este perturbat -- Alţi membri ai echipei se pot avea, dacă nu te simţi confortabil în a te confrunta cu situaţia în sine. - -> [!NOTĂ] Suspendarea automată a unui utilizator îi dă un mesaj despre citirea codului nostru de conduită. Asigură-te că îi informezi pe utilizator că ai suspendat să le acorzi o anumită intimitate și că nu sunt pedepsiți. Este foarte important! Vrem absolut să evităm să le dăm utilizatorilor ideea că sunt pedepsiți pentru că au contactat pentru a obține ajutor! - -Dacă crezi că utilizatorul este capabil de a reintra în comunitate, fă click dreapta pe canalul privat și copiază ID-ul. Pune următorul mesaj in #mod-log: - -> Consultanţă medicală de referinţă: - -După aceea, puteți elimina suspensia de la utilizator în mod normal. - -URL-uri utile - -http://www.suicide.org/international-suicide-hotlines.html - -# O notă privind libertatea de exprimare - -Uneori oamenii vor apăra ceva ofensiv sau incendiar pe care l-au spus ca "libertate de exprimare". - -Această comică XKCD rezumă perfect gândurile celor mai multe comunități cu privire la libertatea de exprimare. Aşa că dacă cineva apără ceva ce spune ca "libera exprimare", simţiţiţi-l liber să le trimită. - -
          - -Mulțumim pentru citirea acestui lucru și mulțumim pentru ajutorul acordat comunității dezvoltatorilor! diff --git a/docs/i18n/Romanian/flight-manuals/using-reply-templates.md b/docs/i18n/Romanian/flight-manuals/using-reply-templates.md deleted file mode 100644 index a00df4f36c..0000000000 --- a/docs/i18n/Romanian/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Folosind Șabloane de Răspuns - -Acestea sunt câteva dintre șabloanele standard de răspuns pe care le puteți folosi în timp ce revizuiți cererile pull și problemele de testare. - -> Poți să creezi propria ta caracteristică folosind funcția GitHub's [**Răspunsuri salvate**](https://github.com/settings/replies/) sau să le folosești pe cele de mai jos. - -### Vă mulţumim - -```markdown -Vă mulțumim pentru contribuția la pagină! 👍 -Suntem fericiți să acceptăm aceste schimbări și să așteptăm cu nerăbdare contribuțiile viitoare. 🎉 -``` - -### Vă mulţumesc şi felicitări - -> Mulţumesc şi încurajează contribuitorii pentru prima dată. - -```markdown -Salut @nume utilizator. Felicitări pentru prima cerere de tragere (PR)! 🎉 - -Îți mulțumim pentru contribuția la pagină! 👍 -Suntem fericiți să acceptăm aceste schimbări și să așteptăm cu nerăbdare contribuțiile viitoare. 📝 -``` - -### Eroare de construcție - -```markdown -Hei @username - -Ne-ar plăcea să putem îmbina modificările, dar se pare că există o eroare cu Travis CI construit. ⚠️ - -Odată ce rezolvați aceste probleme, vom putea să vă revizuim PR și să îl îmbinăm. 😊 - ---- - -> Simte liber să faci referire la [Ghidul de stil pentru scrierea articolelor](https://github. om/freeCodeCamp/freeCodeCamp#article-title) pentru acest repo în ceea ce priveşte formatarea corectă a unui articol, astfel încât Travis CI să treacă de parcurs. ✅ -> -> De asemenea, este bine ca tu să scrii o scurtă descriere a modificărilor tale atunci când creezi un PR. 📝 -``` - -### Sincronizare furcă - -> Când PR nu este la curent cu ramura `master`. - -``````markdown -Hei @username - -Ne-ar plăcea să putem îmbina modificările, dar se pare că există o eroare cu Travis CI construit. ⚠️ - -``bash -Eroare: ENOTDIR: nu este un director, deschide 'src/pages/java/data-abstraction/index.md' -`````` - -Această eroare nu a fost cauzată de fișierul dvs., dar a fost o eroare veche cauzată de fuzionarea codului defectuos la ramura `principală`. De atunci a fost rezolvată. - -Pentru a trece de clădire, va trebui să sincronizați ultimele modificări din ramura `master` a repo-ului `freeCodeCamp/freeCodeCamp`. - -Folosind linia de comandă, poți face asta în trei pași simpli: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -Dacă folosiți un GUI, puteți pur și simplu `adăuga o nouă telecomandă...` și folosiți link-ul `git://github.com/freeCodeCamp/freeCodeCamp.git` de mai sus. - -Odată ce sincronizezi furculița și treci prin construcție, vom putea să îți revizuim PR și să îl îmbinăm. 😊 - ---- - -> Simte-te liber să referi la articolul [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) pe GitHub pentru mai multe detalii despre cum să îți păstrezi furculița actualizată cu depozitul din amonte. 🔄 -> -> De asemenea, este o bună practică pe GitHub să scrie o scurtă descriere a modificărilor dumneavoastră atunci când creați un PR. 📝 -`````` - -### Îmbinare conflicte - -> Când PR are conflicte de îmbinare care trebuie rezolvate.1 - -```markdown -Hei @username - -Ne-ar plăcea să putem îmbina modificările dar se pare că ai unele conflicte de îmbinare. ⚠️ - -Odată ce ai rezolvat aceste conflicte, vom putea să îți revizuim PR și să îl îmbinăm. 😊 - ---- - -> Dacă nu ești familiarizat cu procesul de îmbinare, Nu ezitați să priviți peste ghidul GitHub pe ["Rezolvarea unui conflict de îmbinări"](https://help. isuggest.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> De asemenea, este bine să scrii o scurtă descriere a modificărilor tale atunci când creezi un PR. 📝 -`````` -1 Dacă un prim contribuitor are un conflict de fuzionare, agenții de întreținere vor rezolva conflictul pentru ei. - -### Duplicate - -> Când PR este repetitiv sau duplicat. - -```markdown -Hei @username - -Se pare că modificări similare au fost deja acceptate mai devreme pentru acest articol pe care îl editați, îmi pare rău pentru asta. 😓 - -Dacă simți că ai mai multe de adăugat, nu ezita să deschizi un nou PR. - -Mulțumesc din nou! 😊 - ---- - -> Dacă ai întrebări, nu ezita să ne contactezi prin [Gitter](https://gitter.im/FreeCodeCamp/Contributors) sau comentând mai jos. 💬 -``` - -### Închidere cereri pull nevalide - -> Când PR nu este valid. - -```markdown -Hei @username - -Nu ai adăugat nici un conținut, vom închide acest RP și îl vom marca ca fiind `invalid`. 😓 - -Simte-te liber să deschizi un alt PR! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Romanian/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Romanian/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index eb8e26162a..0000000000 --- a/docs/i18n/Romanian/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,481 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Aici sunt câteva comenzi utile pe care le poți folosi pentru a lucra la Mașinile Virtuale (VM), de exemplu, efectuarea de actualizări de întreținere sau efectuarea de activități de întreținere generală. - -# Get a list of the VMs - -> [!NOTĂ] Cât timp puteți avea deja acces SSH la MV, doar că doar nu vă va permite să listați VMM-urile decât dacă vi s-a acordat acces și la portalurile cloud. - -## Azure - -Instalează Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Instalează Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Autentificare și schimbarea contextului: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Asigurați-vă că VM a fost alimentat complet și că nu sunt pașii post-instalare care rulează. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -Configurarea NGINX este disponibilă pe [acest repo](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -Dacă nu ați utilizat configurația cloud-init utilizată anterior pentru configurarea manuală NGINX și paginile de erori: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Obțineți certificatele de origine Cloudflare din spațiul de stocare securizat și instalați la locațiile necesare. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Actualizarea instanțelor (Depozite) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

          https://amplify.nginx.com

          -## Updating Instances (Maintenance) - -Modificările de configurare la instanțele noastre NGINX sunt menținute pe GitHub, acestea ar trebui să fie implementate în fiecare instanță de exemplu: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Testați și reîncărcați configurația [cu semnale](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Actualizarea instanțelor (Depozite) - -```console -## Logare și monitorizare - -```console -pm2 buşteni -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Începe instanțele substituentului pentru clientul web, acestea vor fi actualizate cu artefacte din piplinul Azore. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Actualizarea instanțelor (Depozite) - -```console -## Logare și monitorizare - -```console -pm2 buşteni -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Romanian/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Romanian/how-to-catch-outgoing-emails-locally.md index 6248b91365..397ea3382a 100644 --- a/docs/i18n/Romanian/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Romanian/how-to-catch-outgoing-emails-locally.md @@ -1,75 +1,75 @@ -> **Notă:** Acesta este un **pas opțional** și este necesar doar când lucrăm cu e-mail fluxuri de lucru +> **Note:** This is an **optional** step and is required only when working with email workflows -## Introducere +## Introduction -Unele fluxuri de e-mail cum ar fi actualizarea e-mailului unui utilizator, necesită back-end api-server pentru a trimite e-mailuri de ieșire. O alternativă la utilizarea unui furnizor de servicii de e-mail pentru a trimite mesaje de e-mail efective, Mailhog este un instrument de dezvoltare pentru testarea email-urilor, care va prinde mesajele de e-mail trimise de instanța ta freeCodep. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Instalarea MailHog +## Installing MailHog -MailHog poate fi instalat pe macOS, Windows și Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Introducere](#introduction) -- [Instalarea MailHog](#installing-mailhog) - - [Instalarea MailHog pe macOS](#installing-mailhog-on-macos) - - [Instalând MailHog pe Windows](#installing-mailhog-on-windows) - - [Instalarea MailHog pe Linux](#installing-mailhog-on-linux) -- [Folosind MailHog](#using-mailhog) -- [Link-uri utile](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Instalarea MailHog pe macOS +### Installing MailHog on macOS -Instalează MailHog pe macOS cu [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash -brew instalarea mailhog -servicii de brew pornește mailhog +brew install mailhog +brew services start mailhog ``` -Comenzile de mai sus vor porni un serviciu mailhog în fundal. +The above commands will start a mailhog service in the background. -Când instalarea se finalizează, puteţi începe [folosind MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Instalând MailHog pe Windows +### Installing MailHog on Windows -Descarcă cea mai recentă versiune de MailHog din [Depozitul oficial al lui MailHog](https://github.com/mailhog/MailHog/releases). Localizați și faceți clic pe link-ul pentru versiunea Windows (32 sau 64 biți) și un fișier .exe va fi descărcat în computer. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Când descărcarea se termină, faceţi clic pentru a deschide fişierul. O notificare Windows firewall poate apărea, cerând permisiunea de acces pentru MailHog. O linie de comandă standard Windows se va deschide unde MailHog va rula odată ce accesul firewall este acordat. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Închide MailHog închizând fereastra de solicitare a comenzii. Pentru a porni din nou MailHog, fă clic pe executabilul MailHog (. xe) fișier care a fost descărcat inițial - nu este necesar să descărcați un nou fișier de instalare MailHog. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Începe [folosind MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Instalarea MailHog pe Linux +### Installing MailHog on Linux -Mai întâi, instalați [Du-te](https://golang.org). +First, install [Go](https://golang.org). -Rulează următoarele comenzi pentru a instala GO pe sisteme bazate pe Debian, cum ar fi Ubuntu și Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Rulează următoarele comenzi pentru a instala GO pe sisteme bazate pe RPM precum CentOS, Fedora, Red Hat Linux, etc. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Alternativ, rulați următoarele comenzi pentru a instala GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Acum setează calea pentru Du-te cu următoarele comenzi. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile -eco 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile -sursă ~/.profile +echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile +source ~/.profile ``` -În final, introduceți comenzile de mai jos pentru a instala și executa MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Începe [folosind MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Folosind MailHog +## Using MailHog -Deschideți o nouă filă sau fereastră a browserului și navigați la [http://localhost:8025](http://localhost:8025) pentru a deschide inbox-ul MailHog atunci când instalarea MailHog este completă și MailHog se execută. Mesajul va apărea similar cu imaginea de mai jos. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![Screenshot 1 MailHog](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -E-mailurile trimise de tabăra freeCodep va apărea ca mai jos +Emails sent by your freeCodeCamp installation will appear as below -![Screenshot 2 MailHog](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -Două file care vă permit să vizualizați fie text simplu, fie conținut sursă vor fi disponibile atunci când deschideți un anumit e-mail. Asigurați-vă că fila text simplu este selectată mai jos. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![Screenshot 3 MailHog](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Toate link-urile din e-mail ar trebui să poată fi accesate și rezolvate la URL-ul. +All links in the email should be clickable and resolve to their URL. -## Link-uri utile +## Useful Links -- Verificați depozitul [MailHog](https://github.com/mailhog/MailHog) pentru informații suplimentare legate de MailHog. De asemenea, sunt disponibile informații suplimentare cu privire la configurațiile personalizate MailHog. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Romanian/how-to-help-with-video-challenges.md b/docs/i18n/Romanian/how-to-help-with-video-challenges.md index daf73f63af..0724aaef02 100644 --- a/docs/i18n/Romanian/how-to-help-with-video-challenges.md +++ b/docs/i18n/Romanian/how-to-help-with-video-challenges.md @@ -1,200 +1,199 @@ -# Cum să ajuti la provocările din domeniul video +# How to help with video challenges -Provocările video sunt un nou tip de provocare în programa freeCodecamp. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -O provocare video este o mică parte a unui curs video de lungime completă pe un subiect anume. O pagină cu provocarea video încorporează un videoclip YouTube. Fiecare pagină de provocare are o singură întrebare cu variantă multiplă legată de video. Un utilizator trebuie să răspundă corect la întrebare înainte de a trece la următoarea provocare video. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -Paginile provocării video sunt create de membrii echipei freeCodeCampp. Videoclipurile YouTube sunt, de asemenea, încărcate de către membrii echipei freeCodeCamp. Multe dintre provocările din domeniul video nu au încă întrebări legate de acestea. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Poți ajuta prin crearea mai multor întrebări de alegere legate de secțiunile video și adăugarea întrebărilor la fișierele markdown pentru provocările video. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Șablon provocare +## Challenge Template -Mai jos este un şablon pentru cum arată fişierele markdown provocări. +Below is a template of what the challenge markdown files look like. ````md --- -id: Identificator unic (alfanumeric, MongoDB_id) -titlu: Challenge Title +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 11 videoId: 'YouTube videoId for video challenge' --- -## Descrierea +## Description
          -O descriere opțională cu informații utile legate de video. +An optional description with helpful information related to the video.
          -## Testele +## Tests
          -``yml -întrebare: - text: 'Întrebare' - răspunsuri: - - 'Răspuns unu' - - 'Răspuns Two' - - soluția 'Răspuns trei' - : 3 +```yml +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
          ```` -## Creând întrebări pentru provocările video +## Creating questions for video challenges -### Accesează fișierele de marcare ale provocării video +### Access the video challenge markdown files -Poți găsi fișierele markdown pentru provocări video în următoarele locații din curriculum: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Analiza datelor cu Cursul Python](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) -- [Curs TensorFlow 2.0](https://github. om/freeCodeCamp/freeCodeCamp/tree/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) -- [Curs Numpy](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) -- [Cum Neural Networks Course](https://github.com/freeCodeCamp/freeCodeCamp/Codetre/master/curriculum/challenges/english/11-machlearnine-with-python/how-neural-networkal-work) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) +- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -opțiunile de mai sus pentru un fișier de lucru. +Pick a challenge markdown file from the options above. -### Skim prin clipul video asociat provocării și creați o întrebare mutiplă cu alegere +### Skim through the video associated with the challenge and create a mutiple choice question -Mai întâi, găsiți ID-ul video. +First, find the videoId. -De exemplu, în următorul cod din antetul unui fișier cu provocare video, ID-ul video este "nVAaxZ34khk". Pe GitHub, informațiile ar trebui să fie prezentate într-un format de tabel. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- -id: 5e9a093a74c4063ca6f7c14d titlul: Analiza datelor Exemplul A challenge engeType: 11 +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 videoId: nVAaxZ34khk --- ``` -Apoi, accesează videoclipul YouTube cu acel videoId. URL-ul pentru video va fi: -https://www.youtube. om/watch?v=[videoId] (adaugă videoId la adresa URL fără paranteze pătrate) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -În exemplul de mai sus, url-ul este https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim the YouTube video cu acel videoId și gândiți-vă la o întrebare cu variante multiple bazată pe conținutul video. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Adăugați întrebarea la fișierul markdown +### Add the question to the markdown file -Puteți adăuga întrebarea la nivel local sau direct interfața GitHub. Pentru a adăuga întrebarea la nivel local, trebuie să [setați tabăra freeCodep local](how-to-setup-freecodecamp-locally.md). De asemenea, puteți găsi fișierul pe GitHub și faceți clic pe butonul de editare pentru a adăuga întrebarea la dreapta în browser-ul dvs. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -dacă nu s-a adăugat încă o întrebare la o anumită provocare video, va avea următoarea întrebare implicită: - -``yml -întrebare: - textul: • - Întrebare - răspunsuri: - - - una - - - 2 - - - 3 - : 3 -``` - -Actualizaţi cuvântul "Întrebare" cu întrebarea dumneavoastră. Actualizați „unul”, „două” și „trei” cu posibile răspunsuri. Asigurați-vă că actualizați numărul soluției cu care răspunsul este corect. Puteţi adăuga mai multe răspunsuri posibile folosind acelaşi format. Întrebarea și răspunsurile pot fi înconjurate de ghilimele. - -#### Folosește markdown pentru a formata întrebarea ta - -Textul în cauză este analizat ca marcaj. Cel mai simplu mod de a se asigura că este formatat corect este de a începe întrebarea cu `textul: `, astfel: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -întrebare: - text: - Întrebare +question: + text: | + Question + answers: + - | + one + - | + two + - | + three + solution: 3 ``` -Apoi trebuie să vă asiguraţi că întrebarea dvs. este pe o linie nouă şi să indentaţi un nivel mai mult de `textul: `. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -Aceeași abordare poate fi utilizată și pentru răspunsuri, astfel încât întreaga întrebare să devină +#### Use markdown to format your question + +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -Întrebare: - text: -text: - Întrebare - răspunsuri: - - - Primul răspuns - - +question: + text: | + Question +``` + +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. + +The same approach can be used for the answers, so the entire question becomes + +```yml +question: + text: | + Question + answers: + - | + First answer + - | Second - - - A treia soluție - : 2 + - | + Third + solution: 2 ``` -Asiguraţi-vă că fiecare răspuns este plauzibil, dar există un singur răspuns corect. +Make sure each answer is plausible but there is only one correct answer. -#### Utilizarea HTML +#### Use of HTML -Întrebările și răspunsurile pot conține anumite etichete HTML ca `
          ` pentru o linie nouă. Tag-urile HTML ar trebui folosite în mod rar, când întrebările nu pot fi exprimate fără ele. +Questions and answers can contain certain HTML tags like `
          ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Exemple de întrebări +### Question examples -#### Exemple fără HTML +#### Examples without HTML ````yml -întrebare: - text: - Ce face acest jurnal de cod JavaScript în consolă? +question: + text: | + What does this JavaScript code log to the console? ```js console.log('hello world'); ```` - Selectează un răspuns! - răspunsuri: - - Salut *lume* - - **salut** lume - - Salutare soluție: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -întrebare: - text: - Ce va tipări după rularea acestui cod: - ``py +question: + text: | + What will print out after running this code: + ```py width = 15 - height = 12. - print(înălţime/3) + height = 12.0 + print(height/3) ```` - răspunsuri: + answers: - | 39 - | 4 - - 4.0 - - 5.0 - - 5 soluție: 3 + - | 4.0 + - | 5.0 + - | 5 solution: 3 ```` -#### Exemplu cu HTML +#### Example with HTML ```yml -întrebare: - text: - Ce se va afișa după rularea acestui cod: -
          lățime = 15
          înălțime = 12.
          print(eight/3)
          - răspunsuri: - - +question: + text: | + What will print out after running this code: +
          width = 15
          height = 12.0
          print(height/3)
          + answers: + - | 39 - - + - | 4 - - - 4. - - - 5. - - + - | + 4.0 + - | + 5.0 + - | 5 - soluție: 3 + solution: 3 ```` -Exemplul final demonstrează că HTML poate fi folosit, dar că nu este la fel de lizibil ca versiunea fără el. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Pentru mai multe exemple, vă puteţi uita la fişierele markdown pentru următorul curs video. Toate provocările au deja întrebări: [Python pentru cursul tuturor](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Deschide o cerere de tragere +## Open a pull request -După crearea uneia sau mai multor întrebări, poți angaja modificările la o sucursală nouă și [deschide o pull request](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Romanian/how-to-open-a-pull-request.md b/docs/i18n/Romanian/how-to-open-a-pull-request.md index 6c80bd6652..2729cd6237 100644 --- a/docs/i18n/Romanian/how-to-open-a-pull-request.md +++ b/docs/i18n/Romanian/how-to-open-a-pull-request.md @@ -1,121 +1,121 @@ -# Cum să deschizi o cerere de tragere (PR) +# How to open a Pull Request (PR) -O cerere de tragere vă permite să trimiteți modificări de pe furculița dvs. pe GitHub în depozitul principal freeCodeCamp.org. Odată ce ați terminat, efectuați modificări ale codului, sau provocări de codificare ar trebui să urmați aceste recomandări pentru a trimite un PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Pregătiţi un titlu PR bun +## Prepare a good PR title -Recomandăm utilizarea [titlului și mesajelor convenționale](https://www.conventionalcommits.org/) pentru comitete și tragere de cereri. Convenţia are următorul format: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([Domeniu opțional(e)]): ` +> `([optional scope(s)]): ` > -> De exemplu: +> For example: > -> `fix(învăță): teste pentru do...în timp ce provocarea buclei` +> `fix(learn): tests for the do...while loop challenge` -La deschiderea unei Cereri Pull (PR), puteți utiliza mai jos pentru a determina tipul, domeniul de aplicare (opțional) și descrierea. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**Tip:** +**Type:** -| Tip | Când se selectează | -|:--------- |:----------------------------------------------------------------------------------------- | -| repară | Modificat sau actualizat/îmbunătățit funcționalitate, teste, verbiage a unei lecții, etc. | -| fetiță | Numai dacă adaugi funcţionalităţi noi, teste, etc. | -| nucleu | Modificări care nu sunt legate de cod, teste sau verbale ale unei lecții. | -| documente | Modificări la directorul `/docs` sau la ghidurile de contribuție, etc. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Domeniu de aplicare:** +**Scope:** -Puteți selecta un domeniu din [această listă de etichete](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Descriere:** +**Description:** -Păstraţi-l scurt (mai puţin de 30 de caractere) şi simplu, puteţi adăuga mai multe informaţii în caseta de descriere PR şi comentarii. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -Câteva exemple de titluri de bune PR-uri ar fi: +Some examples of good PRs titles would be: -- `fix(a11y): contrast îmbunătățit al barei de căutare` -- `vezi: adaugă mai multe teste la provocările cu html și css` -- `fix(api,client): prevenirea erorilor CORS la trimiterea formularului` -- `docs(i18n): Traducerea în limba chineză a configurației locale` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Se propune o cerere pull +## Proposing a Pull Request -1. Odată ce editările au fost dedicate, vi se va solicita să creați o cerere de tragere pe pagina GitHub a furculii dvs. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Imagine - Compară solicitarea pull request pe GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. În mod implicit, toate cererile pull ar trebui să fie împotriva repozitorului principal freeCodep, `master` ramură. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Asigură-te că Fork-ul tău de bază este setat pe freeCodeCamp/freeCodeCamp atunci când dai o Cerere Pull + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Imagine - Compararea furculițelor când se face o cerere de tragere](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Trimite cererea pull din sucursala ta către sucursala `principală` a freeCodeCamp. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. În corpul PR, veţi include un rezumat mai detaliat al modificărilor pe care le-aţi făcut şi de ce. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Vi se va prezenta un șablon de cerere pull Aceasta este o listă de verificare pe care ar trebui să o urmăriți înainte de a deschide cererea de tragere. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Completează detaliile după cum consideri potrivit. Aceste informații vor fi revizuite și revizorii vor decide dacă solicitarea dvs. de tragere este sau nu acceptată. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Dacă PR este menit să abordeze o problemă GitHub existentă, atunci, la sfârșitul lui corpul de descriere al PR, utilizaţi cuvântul cheie _Închide_ cu numărul de emitere pentru a [închide automat acea problemă dacă PR este acceptat şi fuzionat](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Exemplu: `Închizările #123` vor închide problema 123 + > Example: `Closes #123` will close issue 123 -5. Indicați dacă ați testat pe o copie locală a site-ului sau nu. +5. Indicate if you have tested on a local copy of the site or not. - Acest lucru este foarte important atunci când se fac modificări care nu sunt doar editate la conținut text ca documentație sau o descriere a provocării. Exemple de modificări care necesită testare locală includ JavaScript, CSS, sau HTML care ar putea schimba funcționalitatea sau aspectul unei pagini. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Feedback la cererile pull +## Feedback on pull requests -> Felicitări! :tada: pentru a face un PR și mulțumesc mult pentru că ai nevoie de timp pentru a contribui, +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Moderatorii noștri vor arunca o privire și îți vor lăsa un feedback. Vă rugăm să aveţi răbdare cu colegii moderatori şi să respectaţi timpul. Toate cererile de tragere sunt revizuite în timp util. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Dacă ai nevoie de asistență, te rugăm să discuți în [camera de chat a contributorilor](https://gitter.im/FreeCodeCamp/Contributors), suntem mai mult decât bucuroși să te ajutăm. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Dacă doriți să contribuiți cu mai multe solicitări, îți recomandăm să citești [făcând modificări și sincronizând](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) ghidurile pentru a evita ștergerea furculii tale. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Conflicte la o cerere de tragere +## Conflicts on a pull request -Pot apărea conflicte pentru că mulți contribuitori lucrează în depozit, iar modificările vă pot întrerupe PR care este în așteptarea unei evaluări și a unei fuziuni. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -De cele mai multe ori, este posibil să nu aveți nevoie de o rebază, pentru că zdrobim toate comitetele, Cu toate acestea, dacă este solicitată o rebază aici, este ceea ce ar trebui să faceți. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Pentru remedieri și caracteristici obișnuite ale erorilor +### For usual bug fixes and features -Când lucrezi la bug-uri și funcții obișnuite pe ramura noastră de dezvoltare `master`, poți să faci o simplă rebază: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Rebasează-ți copia locală: +1. Rebase your local copy: ```console git checkout git pull --rebase upstream master ``` -2. Rezolvați orice conflicte și adăugați/editați comitete +2. Resolve any conflicts and add / edit commits ```console - # Fie - git adaugă . + # Either + git add . git commit -m "chore: resolve conflicts" - # or + # Or git add . - git commit --amende--no-edit + git commit --amend --no-edit ``` -3. Împingeţi înapoi modificările la PR +3. Push back your changes to the PR ```console git push --force origin ``` -### Pentru curriculum și caracteristici viitoare +### For upcoming curriculum and features -Când lucrezi la caracteristici pentru viitoarele noastre curriculum `următoare-*` ramuri, ai un cherry pick: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Asigură-te că amfiti sincronizați cu localul tău: +1. Make sure your upstream comes in sync with your local: ```console git checkout master @@ -124,9 +124,9 @@ Când lucrezi la caracteristici pentru viitoarele noastre curriculum `următoare git reset --hard upstream/next-python-projects ``` -2. Faceți o copie de rezervă +2. Take backup - a. Fie ştergeţi ramura locală după ce aţi făcut o copie de rezervă (dacă încă o aveţi local): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout @@ -137,42 +137,42 @@ Când lucrezi la caracteristici pentru viitoarele noastre curriculum `următoare git checkout -b # example: - # git checkout -b backup-feature-feature/add-numpy-video-question + # git checkout -b backup-feat/add-numpy-video-question git branch -D ``` - b Sau doar o copie de rezervă a ramurii dvs. pr (dacă nu o aveți la nivel local): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ - # exemplu: - # git checkout -b backup-feature-add-numpy-video-question origin/feat/add-numpy-video-question + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Începeți cu o listă curată: +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Rezolvă orice conflicte și curățare, instalați teste +5. Resolve any conflicts, and cleanup, install run tests ```console npm run clean npm ci - npm run test:curriculum --superblock = + npm run test:curriculum --superblock= - # exemplu: + # example: - # npm run test:curriculum --superblock=python-for-toți + # npm run test:curriculum --superblock=python-for-everybody ``` -6. Dacă totul arată bine, împinge înapoi la PR +6. If everything looks good push back to the PR ```console git push --force origin diff --git a/docs/i18n/Romanian/how-to-setup-freecodecamp-locally.md b/docs/i18n/Romanian/how-to-setup-freecodecamp-locally.md index b1063a9a8b..619db733cf 100644 --- a/docs/i18n/Romanian/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Romanian/how-to-setup-freecodecamp-locally.md @@ -1,326 +1,326 @@ -Urmați aceste recomandări pentru a configura tabăra freeCodep la nivel local în sistemul dvs. Acest lucru este foarte recomandat dacă doriţi să contribuiţi în mod regulat. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Pentru unele fluxuri de lucru pentru contribuții, trebuie să ai tabăra freeCodep rulează local. De exemplu, previzualizarea provocărilor de codificare sau depanarea și repararea erorilor în codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] Dacă nu sunteți interesat să configurați tabăra freeCodep local luați în considerare utilizarea Gitpod, un mediu de dezvoltatori online gratuit. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Deschide în Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Începe un mediu de dezvoltatori gata de cod pentru tabăra freeCodep în browser-ul tău.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Pregătiți-vă calculatorul local +### How to prepare your local machine -Începeți prin instalarea programului de bază pentru sistemul dvs. de operare. +Start by installing the prerequisite software for your operating system. -Susținem în principal dezvoltarea sistemelor **\*nix**. Personalul nostru și colaboratorii comunității lucrează în mod regulat cu codebaza folosind instrumentele instalate pe Ubuntu și macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Suportăm de asemenea Windows 10 prin WSL2, pe care îl puteți pregăti prin [citirea acestui ghid](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Unii membri ai comunității se dezvoltă, de asemenea, pe Windows 10 nativ cu Git pentru Windows (Git Bash) și alte instrumente instalate pe Windows. Nu avem sprijin oficial pentru o astfel de configurare în acest moment, recomandăm în schimb utilizarea WSL2. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Premise:** +**Prerequisites:** -| Cerințe prealabile | Versiune | Note | -| ---------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12,x` | [Schema LTS](https://github.com/nodejs/Release#release-schedule) | -| npm (vine alături de Node) | `6,x` | Nu are lansări LTS, folosim versiunea pachetată cu Node LTS | -| [Server Comunitate MongoDB](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Notele de lansare](https://docs.mongodb.com/manual/release-notes/), Notă: Suntem în prezent pe `3.6`, o [actualizare este planificată](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Dacă ai o versiune diferită, instalează versiunea recomandată. Putem suporta doar probleme de instalare pentru versiunile recomandate. Vezi [troubleshooting](#troubleshooting) pentru detalii. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Dacă Node.js este deja instalat pe mașina dvs., executați următoarele comenzi pentru a valida versiunile: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console node -v npm -v ``` -> [!TIP] Vă recomandăm cu căldură actualizarea la ultimele versiuni stabile ale software-ului menționat mai sus, cunoscute și ca versiuni de suport pe termen lung (LTS). +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -Odată ce cerințele sunt instalate, trebuie să vă pregătiți mediul de dezvoltare. Acest lucru este comun pentru multe fluxuri de lucru în domeniul dezvoltării şi va trebui să faceţi acest lucru o singură dată. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Urmează acești pași pentru a-ți pregăti mediul de dezvoltare:** +**Follow these steps to get your development environment ready:** -1. Instalează [Git](https://git-scm.com/) sau clientul tău Git favorit, dacă nu ai fost deja. Actualizează la ultima versiune; versiunea care a venit în pachet cu sistemul tău de operare poate fi învechită. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Opțional, dar recomandat) [Configurați o cheie SSH](https://help.github.com/articles/generating-an-ssh-key/) pentru GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Instalează un editor de cod ales de tine. +3. Install a code editor of your choice. - Vă recomandăm să folosiți [Vizualizare Studio Code](https://code.visualstudio.com/) sau [Atom](https://atom.io/). Aceştia sunt editori de cod grozavi, liberi şi cu sursă deschisă. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Configurați linte-ul pentru editorul de cod. +4. Set up linting for your code editor. - Ar trebui să aveți [ESLint rulând în editorul dvs.](http://eslint.org/docs/user-guide/integrations.html), și va evidenția orice nu se conformează cu [Ghidul de stil JavaScript](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121) al freeCodeCamp. + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!TIP] Nu ignorați nicio eroare de linting. Acestea sunt menite să **ajute** şi să asigure un cod simplu şi curat. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Fă depozitul pe GitHub +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) este un pas în care primești propria copie a depozitului principal freeCodeCamp(a.k.a _repo_) pe GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Acest lucru este esențial, deoarece vă permite să lucrați la propria copie de FreeCodeCamp pe GitHub, sau pentru a descărca (clona) depozitul dumneavoastră pentru a funcționa la nivel local. Ulterior, veți putea solicita modificări pentru a fi trase în depozitul principal de pe furculiță prin intermediul unei cereri de tragere (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] Depozitul principal la `https://github.com/freeCodeCamp/freeCodeCamp` este adesea referit ca depozitul `în amonte`. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Fork-ul dvs. la `https://github.com/YOUR_USER_NAME/freeCodeCamp` este adesea referit ca `originea repo-ului`. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Urmaţi aceşti paşi pentru a falsifica `https://github.com/freeCodeCamp/freeCodeCamp`:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Mergeți la depozitul freeCodeCamp pe GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. Faceți clic pe butonul "Fork" din colțul din dreapta sus al interfeței ([Mai multe detalii aici](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. Dupa ce depozitul a fost forjat, vei fi dus la copia ta a depozitului freeCodeCamp la `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
          - Cum să forjezi tabăra freeCodep pe GitHub (captură de ecran) + How to fork freeCodeCamp on GitHub (screenshot)
          - Cum să forjezi tabăra freeCodep pe GitHub + How to fork freeCodeCamp on GitHub
          -## Clonați furculița din GitHub +## Clone your fork from GitHub -[Clonarea](https://help.github.com/articles/cloning-a-repository/) este locul unde **descarci** o copie a unui depozit dintr-o `locație la distanță` care este deținută fie de tine, fie de altcineva. În cazul tău, această locaţie la distanţă este `fork-ul` de depozitul freeCodeCamp, care ar trebui să fie disponibil la `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Rulează aceste comenzi pe mașina locală: +Run these commands on your local machine: -1. Deschide un terminal / Comandă Prompt / Shell în directorul de proiecte +1. Open a Terminal / Command Prompt / Shell in your projects directory - _.e.: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. Clonați forcul dvs. de freeCodeCamp, înlocuind `YOUR_USER_NAME` cu numele dvs de utilizator GitHub +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Acest lucru va descărca întregul depozit freeCodeCamp în directorul de proiecte. +This will download the entire freeCodeCamp repository to your projects directory. -Notă: `--depth=1` creează o clonă superficială a furcii dvs., cu doar cel mai recent istoric/commit. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Configurare sincronizare de la părinte +## Set up syncing from parent -Acum că ai descărcat o copie a furcii tale, va trebui să configurezi o `în amonte` telecomandă către repo-ul părinte. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Așa cum s-a menționat anterior](#fork-the-repository-on-github), repertoriul principal este trimis `în amonte`. Furculița ta s-a referit la `depozitul de origine`. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Ai nevoie de o referință de la clona locală la depozitul `în amonte` în plus față de depozitul `origine`. Pentru a putea sincroniza modificările din depozitul principal fără cerința de a forja și clona în mod repetat. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Schimbă directorul cu noul director freeCodeCamp: +1. Change directory to the new freeCodeCamp directory: ```console - cd tabăra freeCodep + cd freeCodeCamp ``` -2. Adăugați o referință de la distanță la repertoriul principal freeCodeMP: +2. Add a remote reference to the main freeCodeCamp repository: ```console git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Asigurați-vă că configurația arată corect: +3. Ensure the configuration looks correct: ```console git remote -v ``` - Ieșirea ar trebui să arate ca mai jos: + The output should look something like below: ```console - originea https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - originile https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - în amonte https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - în amonte https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Rulând local tabăra freeCodep +## Running freeCodeCamp locally -Acum că ai o copie locală de freeCodeCamp, poți urma aceste instrucțiuni pentru a rula local. Acest lucru vă va permite să: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Previzualizează editările pe pagini așa cum ar apărea pe platforma de învățare. -- Lucrul la problemele și îmbunătățirile interfeței. -- Depanare și rezolvare probleme cu serverele aplicației și aplicațiile clienților. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Dacă chiar întâmpini probleme, mai întâi efectuează o căutare web pentru problema ta și vezi dacă ai primit deja un răspuns. Dacă nu puteţi găsi o soluţie, vă rugăm să căutați pagina noastră de probleme [GitHub](https://github.com/freeCodeCamp/freeCodeCamp/issues) pentru o soluție și să raportați problema dacă nu a fost încă raportată. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -Și ca întotdeauna, nu ezita să participi la [Camera noastră de chat pentru colaboratori pe Gitter](https://gitter.im/FreeCodeCamp/Contributors) sau [serverul nostru Discord](https://discord.gg/pFspAhS), pentru întrebări rapide. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Puteţi sări peste rularea taberei freeCodep local dacă pur şi simplu editaţi fişiere. De exemplu, efectuând o `rebase`, sau rezolvând `conflicte de îmbinare`. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Puteți reveni întotdeauna la această parte a instrucțiunilor mai târziu. Trebuie **doar** să săriți peste acest pas dacă nu trebuie să rulați aplicațiile pe calculatorul dvs. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Sari peste pentru a face modificări](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Configurare dependențe +### Configuring dependencies -#### Pasul 1: Configurați fișierul variabilei de mediu +#### Step 1: Set up the environment variable file -Tastele API implicite şi variabilele mediului sunt stocate în fişierul `sample.env`. Acest fișier trebuie să fie copiat într-un fișier nou numit `.env` care este accesat dinamic în timpul pasului de instalare. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Creați o copie a "sample.env" și denumiți-o ".env". -# Populează cu cheile și secretele necesare API: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -probă cp. nv .env +cp sample.env .env # Windows copy sample.env .env ``` -Cheile din fișierul `.env` sunt _nu_ obligatoriu pentru a putea rula aplicația la nivel local. Puteți lăsa valorile implicite copiate din `sample.env` as-is. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!TIP] Rețineți dacă doriți să utilizați servicii precum Auth0 sau Algolia, va trebui să achiziționați propriile chei API pentru aceste servicii și să editați intrările în mod corespunzător în `. fișier nv`. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Pasul 2: Instalează dependențe +#### Step 2: Install dependencies -Acest pas va instala dependențele necesare pentru ca aplicația să ruleze: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Pasul 3: Porniți MongoDB și semnațiți baza de date +#### Step 3: Start MongoDB and seed the database -Înainte de a putea rula aplicaţia la nivel local, va trebui să porniţi serviciul MongoDB. +Before you can run the application locally, you will need to start the MongoDB service. -> [!NOTĂ] Cu excepţia cazului în care aveţi MongoDB care rulează într-o configurare diferită de cea implicită, URL-ul stocat ca valoarea `MONGOHQ_URL` în `. fişierul nv` ar trebui să funcţioneze bine. Dacă folosiți o configurație personalizată, modificați această valoare după cum este necesar. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Porniți serverul MongoDB într-un terminal separat: +Start the MongoDB server in a separate terminal: -- Pe macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- Pe Windows, trebuie să specifici calea completă către binarul `mongod` +- On Windows, you must specify the full path to the `mongod` binary ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Asigurați-vă că înlocuiți `3.6` cu versiunea instalată + Make sure to replace `3.6` with the version you have installed -> [!TIP] Puteţi evita să începeţi MongoDB de fiecare dată instalându-l ca un serviciu de fundal. Poți [afla mai multe despre asta în documentația lor pentru sistemul de operare](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Apoi, hai să semănăm baza de date. În acest pas, executăm comanda de mai jos care completează serverul MongoDB cu unele seturi de date inițiale care sunt necesare pentru servicii. Acestea includ câteva programe, printre altele. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console npm run seed ``` -#### Pasul 4: Începe aplicația client freeCodeCamp și serverul API +#### Step 4: Start the freeCodeCamp client application and API server -Acum puteți porni serverul API și aplicațiile clientului. +You can now start up the API server and the client applications. ```console -dezvoltare npm +npm run develop ``` -Această singură comandă va activa toate serviciile, inclusiv serverul API și aplicațiile client disponibile pentru ca dvs. să lucrați. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!NOTĂ] Odată gata, deschideți un browser web și **vizitați **. Dacă aplicația se încarcă, felicitări - toți sunteți setați! Acum ai o copie a întregii platforme de învăţare a freeCodeCamp-ului rulând pe maşina ta locală. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> Serverul API serveşte API-uri la `http://localhost:3000`. Aplicația Gatsby servește aplicația client la `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Dacă vizitați [http://localhost:3000/explororer](http://localhost:3000/explorer) ar trebui să vedeți API-urile disponibile. +> If you visit you should see the available APIs. -## Conectați-vă cu un utilizator local +## Sign in with a local user -Configurarea locală populează automat un utilizator local în baza de date. Apăsând butonul `Conectare` te va autentifica automat în aplicația locală. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Cu toate acestea, accesarea paginii portofoliului utilizatorului este un pic complicată. În dezvoltare, Gatsby preia servind paginile client-side și astfel veți obține o pagină `404` pentru portofoliul de utilizatori atunci când lucrați local. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Doar apăsând pe butonul **"Previzualizare pagină personalizată 404"** te va redirecționa către pagina corectă. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
          - Cum să te conectezi când lucrezi local (captură ecran) + How to sign in when working locally (screenshot)
          - Cum să te conectezi când lucrezi local + How to sign in when working locally
          -## Efectuarea de schimbări locale +## Making changes locally -Acum puteți face modificări în fișiere și să comiteți modificările la clona locală a furcii dvs. +You can now make changes to files and commit your changes to your local clone of your fork. -Urmează acești pași: +Follow these steps: -1. Validați că sunteți pe ramura `master`: +1. Validate that you are on the `master` branch: ```console git status ``` - Ar trebui să obții un rezultat ca acesta: + You should get an output like this: ```console - În stăpânul sucursalei - sucursala este actualizată cu 'origin/master'. + On branch master + Your branch is up-to-date with 'origin/master'. - nimic de comis, director de lucru curat + nothing to commit, working directory clean ``` - Dacă nu sunteți maestru sau directorul dvs. de lucru nu este curat, rezolvați orice fișiere/comitete restante și finalizați `comandantul`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - git master checkout + git checkout master ``` -2. Sincronizează ultimele modificări din tabăra freeCodep în amonte `maestru` în ramura principală locală: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!ATENȚIE] Dacă ai o cerere remarcabilă de pull pe care ai făcut-o din ramura `master` a furcii tale, le veți pierde la sfârșitul acestui pas. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Trebuie să vă asigurați că cererea pull este fuzionată de un moderator înainte de a efectua acest pas. Pentru a evita acest scenariu, ar trebui **întotdeauna** să lucrați la o ramură diferită de `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Acest pas **va sincroniza ultimele schimbări** din depozitul principal al freeCodeCamp. Este important să vă rebazați sucursala pe cele mai recente `în amonte/master` cât mai des posibil pentru a evita conflictele mai târziu. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Actualizați copia locală a depozitului freeCodeCamp în amonte: + Update your local copy of the freeCodeCamp upstream repository: ```console - git preia în amonte + git fetch upstream ``` - Resetați stâlpul principal cu masterul tabăra freeCodep: + Hard reset your master branch with the freeCodeCamp master: ```console - git resetare --hard upstream/master + git reset --hard upstream/master ``` - Apăsați sucursala principală spre originea dvs. pentru a avea un istoric curat pe furculița dvs. pe GitHub: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console - git push master origine --force + git push origin master --force ``` - Poți valida maestrul tău curent se potrivește în amonte/master efectuând un dif: + You can validate your current master matches the upstream/master by performing a diff: ```console - git difuzează în amonte/master + git diff upstream/master ``` - Ieșirea rezultată trebuie să fie goală. + The resulting output should be empty. -3. Creează o ramură nouă nouă: +3. Create a fresh new branch: - Lucrul la o sucursală separată pentru fiecare problemă vă ajută să păstraţi copia de lucru locală curată. Nu ar trebui să lucrezi niciodată la `master`. Asta îți va întinde copia de tabără freeCodep și s-ar putea să trebuiască să începi cu o clonă sau furcă proaspătă. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Verifică dacă ești pe `master` așa cum s-a explicat anterior, și ramură de acolo: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Numele sucursalei ar trebui să înceapă cu `fix/`, `funcție /`, `documente/`, etc. Evitați utilizarea numerelor de emisiune în sucursale. Păstrați-le pe scurt, semnificativ și unic. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Câteva exemple de nume bune de filiale sunt: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,156 +330,156 @@ Urmează acești pași: translate/add-spanish-basic-html ``` -4. Editează paginile și lucrează la cod în editorul tău de text favorit. +4. Edit pages and work on code in your favorite text editor. -5. Odată ce ești mulțumit de schimbări, ar trebui să rulezi opțional tabăra freeCodep local pentru a previzualiza schimbările. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Asigură-te că ai reparat orice eroare și verifică formatarea modificărilor tale. +6. Make sure you fix any errors and check the formatting of your changes. -7. Bifați și confirmați fișierele pe care le actualizați: +7. Check and confirm the files you are updating: ```console git status ``` - Aceasta ar trebui să afișeze o listă de `unstaged` fișiere pe care le-ați editat. + This should show a list of `unstaged` files that you have edited. ```console - Pe o caracteristică/documentație sucursală - sucursala este actualizată cu 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Modificări neorganizate pentru angajament: - (utilizaţi "git add/rm ... pentru a actualiza ceea ce va fi angajat) - (folosiți "git checkout -- . „să renunțe la modificările din directorul de lucru + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - modificate: CONTRIBUȚIE. d - modificat: documente/README.md - modificate: documente/cum-la-setup-freecodecamp-local. d - modificat: documente/how-to-work-on-guide-articles.md -... + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Stadiul modificărilor și angajamentul asumat în acest sens: +8. Stage the changes and make a commit: - În acest pas, ar trebui să marcați doar fișierele pe care le-ați editat sau pe care le-ați adăugat. Puteți efectua o resetare și rezolva fișiere pe care nu ați intenționat să le modificați dacă este necesar. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console git add path/to/my/changed/file.ext ``` - Sau puteți adăuga toate `fișierele nestabilite` în zona de așteptare: + Or you can add all the `unstaged` files to the staging area: ```console git add . ``` - Numai fișierele care au fost mutate în zona de aşteptare vor fi adăugate când faceți o comitere. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Rezultat: + Output: ```console - Pe o caracteristică/documentație sucursală - sucursala este actualizată cu 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Modificări pentru a fi compuse: - (utilizaţi "git reset HEAD ..." pentru a dezinstala) + Changes to be committed: + (use "git reset HEAD ..." to unstage) - modificat: CONTRIBUTING.md - modificat: documente/README.md - modificate: documente/how-to-setup-freecodecamp-locally.md - modificate: documente/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Acum, puteţi comite modificările cu un scurt mesaj astfel: + Now, you can commit your changes with a short message like so: ```console git commit -m "fix: my short commit message" ``` - Câteva exemple: + Some examples: ```md - fix: actualizare articol ghid pentru Java - pentru buclă - feat: adaugă articol ghid pentru abilități alexa + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - Opţional: + Optional: - Vă recomandăm să faceți un mesaj convențional. Aceasta este o bună practică pe care o veți vedea pe unele dintre depozitele populare Open Source. În calitate de dezvoltator, acest lucru vă încurajează să urmați practicile standard. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - Câteva exemple de mesaje convenționale de comitere sunt: + Some examples of conventional commit messages are: ```md - reparații: actualizare a articolului ghid HTML - fixare: actualizare script-uri pentru Travis-CI - feat: adăugare articol pentru ciocnirea JavaScript - documente: actualizare ghiduri contribuție + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - Păstraţi aceste scurte, nu mai mult de 50 de caractere. Puteți adăuga întotdeauna informații suplimentare în descrierea mesajului de comitere. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Acest lucru nu durează mai mult decât un mesaj neconvențional, cum ar fi „fișier de actualizare” sau „adaugă index.md” + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Poți afla mai multe despre motivul pentru care ar trebui să folosești comitetele convenționale [aici](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Dacă vă dați seama că trebuie să editați un fișier sau să actualizați mesajul de comitere după ce ați făcut o comitere puteți face acest lucru după ce ați editat fișierele cu: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - git comite --Modificare + git commit --amend ``` - Acest lucru va deschide un editor de text implicit ca `nano` sau `vi` unde puteți edita titlul mesajului de comitere și adăugați/edita descrierea. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Apoi, îți poți împinge modificările la furculiță: +10. Next, you can push your changes to your fork: ```console git push origin branch/name-here ``` -## Propunerea unei solicitări prin tragere (PR) +## Proposing a Pull Request (PR) -După ce ai comis modificările, verifică aici [cum să deschizi o Cerere Pull](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Referință comenzi rapide +## Quick commands reference -O referire rapidă la comenzile de care veți avea nevoie când lucrați local. +A quick reference to the commands that you will need when working locally. -| comandă | descriere | -| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `npm ci` | Instalează/reinstalează toate dependențele și bootstraps diferitele servicii. | -| `npm run seed` | Analizează toate fişierele de încercare markdown şi le introduce în MongoDB. | -| `dezvoltare npm` | Începe aplicația FreeCodeCamp API Server și Client. | -| `test npm` | Rulează toate testele JS în sistem, inclusiv testele pentru client, server, lint și provocare. | -| `npm run test:client` | Rulează suita de testare client. | -| `npm run test:curriculum` | Rulează suita de teste de curriculum. | -| `npm run test:curriculum --block='Basic HTML and HTML5'` | Testează un bloc specific. | -| `npm run test:curriculum --superblock='responsive-web-design'` | Testează un anumit SuperBlock. | -| `npm rulează test-curriculum-ul complet` | Rulează testul curriculum, fără salvare după prima eroare | -| `npm run test:server` | Rulează suita de testare a serverului. | -| `npm rulează e2e` | Rulează capătul Cypress pentru a termina testele. | -| `npm rulat curat` | Dezinstalează toate dependenţele şi curăţă geocutiile. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Depanare +## Troubleshooting -### Probleme cu instalarea cerinţelor prealabile recomandate +### Issues with installing the recommended prerequisites -Ne dezvoltăm în mod regulat pe cele mai recente sau mai populare sisteme de operare precum macOS 10.15 sau mai târziu, Ubuntu 18.04 sau mai târziu și Windows 10 (cu WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Este recomandat să cercetezi problema ta specifică cu privire la resurse precum Google, Stack Overflow și Stack Exchange. Există o şansă bună ca cineva să se confrunte cu aceeaşi problemă şi există deja un răspuns la o întrebare specifică. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Dacă ești pe un alt sistem de operare și/sau încă te lovești de probleme, vezi [obținerea ajutorului](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!ATENŢIE] +> [!WARNING] > -> Vă rugăm să evitați crearea de probleme GitHub pentru probleme preliminare. Ele nu intră în domeniul de aplicare al acestui proiect. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Probleme cu IU, fonturi, erori de construcție etc. +### Issues with the UI, Fonts, build errors etc. -Dacă întâmpini probleme cu IU, Fonturi sau vezi erorile de construcție o curățare poate fi utilă: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console npm run clean @@ -488,59 +488,59 @@ npm run seed npm run develop ``` -SAU +OR -Folosește scurtătura +Use the shortcut ``` -npm curățare și dezvoltare +npm run clean-and-develop ``` -Dacă vă confruntați în continuare cu problemele legate de construcție, este recomandată curățarea spațiului de lucru. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Utilizaţi `git curat` în modul interativ: +Use `git clean` in interative mode: ``` -git curățat -ifdX +git clean -ifdX ```
          - Cum să curăţaţi fişierele git neurmărite (captură de ecran) + How to clean git untracked files (screenshot)
          - Cum să curăţaţi fişierele git neurmărite + How to clean git untracked files
          -### Probleme cu API, Logare, Provocări, etc. +### Issues with API, Login, Challenge Submissions, etc. -Dacă nu vă puteți conecta, și în schimb vedeți un banner cu un mesaj de eroare care va fi raportat la freeCodeCamp, te rugăm să verifici din nou dacă portul tău local `3000` nu este utilizat de un alt program. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**Pe Linux / macOS / WSL pe Windows - Din Terminal:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console -netstat -ab "3000" +netstat -ab | grep "3000" -tcp4 0 0.0.0.0:3000 DESKTOP LISTEN +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**Pe Windows - De la PowerShell crescut:** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab Select-Șirul "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0.0:3000 DESKTOP LISTENING +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Probleme la instalarea dependenţelor +### Issues installing dependencies -Dacă primiți erori în timpul instalării dependențelor, vă rugăm să vă asigurați că nu sunteți într-o rețea restricționată sau setările dvs. de firewall nu vă împiedică să accesați resursele. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -Configurarea pentru prima dată poate dura o vreme în funcție de lățimea de bandă a rețelei. Fiți răbdător, și dacă sunteți încă blocat, am reînceput să utilizați GitPod în loc de o configurare offline. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Obțineți ajutor +## Getting Help -Dacă sunteți blocat și aveți nevoie de ajutor, spuneți-ne întrebându-ne în categoria ['Contribuitori' de pe forumul nostru](https://forum.freecodecamp.org/c/contributors) sau [camera de chat pentru colaboratori](https://gitter.im/FreeCodeCamp/Contributors) pe Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Ar putea exista o eroare în consola browser-ului sau în linia de comandă Bash / Terminal / Comandă care va ajuta la identificarea problemei. Furnizați acest mesaj de eroare în descrierea problemei dvs., astfel încât alții să poată identifica mai ușor problema și să vă ajute să găsiți o rezoluție. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Romanian/how-to-setup-wsl.md b/docs/i18n/Romanian/how-to-setup-wsl.md index b6a42396f1..68bce6dde6 100644 --- a/docs/i18n/Romanian/how-to-setup-wsl.md +++ b/docs/i18n/Romanian/how-to-setup-wsl.md @@ -1,97 +1,97 @@ -# Configurați freeCodeCamp pe un subsistem Windows pentru Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!NOTĂ] Înainte să urmaţi aceste instrucţiuni asiguraţi-vă că sistemul dumneavoastră îndeplineşte cerinţele +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (Versiunea 2004, Build 19041 sau mai mult) - disponibil pentru toate distribuțiile, inclusiv Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop pentru Windows**: Vezi cerințele respective pentru [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) și [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Acest ghid acoperă câțiva pași comuni cu configurarea WSL2. odată ce unele dintre problemele comune cu WSL2 sunt soluționate, ar trebui să puteți urmări ghidul nostru local de configurare pentru a lucra cu freeCodeCamp pe Windows care rulează un distro WSL ca Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Activează WSL +## Enable WSL -Urmați instrucțiunile de pe [documentația oficială](https://docs.microsoft.com/en-us/windows/wsl/install-win10) pentru a instala WSL1 și apoi pentru a trece la WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Am recomandat sa utilizam Ubuntu-18.04 sau mai mult cu WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!NOTĂ] + > [!NOTE] > - > În timp ce puteți utiliza alte distanțe pe bază de debieni, acestea vin cu ajutorul propriei aruncări și sunt dincolo de domeniul acestui ghid. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Actualizează dependențele pentru OS +2. Update the dependencies for the OS ```console - actualizare apt + sudo apt update sudo apt upgrade -y - # curățare + # cleanup sudo apt autoremove -y ``` -## Configurare Git +## Set up Git -Git vine pre-instalat cu Ubuntu 18.04, verifică dacă versiunea Git cu `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ -!git --version -git versiunea 2.25.1 +❯ git --version +git version 2.25.1 ``` -(Opțional, dar recomandat) Acum puteți trece la [configurarea cheilor ssh](https://help.github.com/articles/generating-an-ssh-key) cu GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Instalarea unui Editor de cod +## Installing a Code Editor -Vă recomandăm să instalați [Visual Studio Code](https://code.visualstudio.com) pe Windows 10. Are suport mare pentru WSL și instalează automat toate extensiile necesare pe distanța WSL. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -În esență, îți vei edita și păstra codul pe Ubuntu-18.04 cu codul VS instalat pe Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Instalarea desktopului Docker +## Installing Docker Desktop -**Docker Desktop pentru Windows** vă permite să instalați și să rulați baze de date și servicii precum MongoDB, NGINX, etc. Acest lucru este util pentru a evita capcanele comune cu instalarea MongoDB sau a altor servicii direct pe Windows sau WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Urmărește instrucțiunile de pe documentația oficială [](https://docs.docker.com/docker-for-windows/install) și instalează Docker Desktop pentru distribuția ta Windows. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Există unele cerințe minime de hardware pentru cea mai bună experiență. +There are some minimum hardware requirements for the best experience. -## Configurați desktop-ul Docker pentru WSL +## Configure Docker Desktop for WSL -Odată ce Docker Desktop este instalat, [urmați aceste instrucțiuni](https://docs.docker.com/docker-for-windows/wsl) și configurați-o pentru a utiliza instalarea Ubuntu-18.04 ca backend. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Asta face ca containerele să ruleze pe partea WSL în loc să ruleze pe Windows. Veţi putea accesa serviciile prin `http://localhost` atât pe Windows cât şi pe Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Instalează MongoDB din Docker Hub +## Install MongoDB from Docker Hub -Odată ce ai configurat Docker Desktop să lucrezi cu WSL2, urmează acești pași pentru a începe un serviciu MongoDB: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Lansați un nou terminal Ubuntu-18.04 +1. Launch a new Ubuntu-18.04 terminal -2. Trage `MongoDB 3.6` din dockerhub +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Porniți serviciul MongoDB în portul `27017`, și configurați-l pentru a rula automat la repornirile sistemului +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console docker run -it \ -v mongodata:/data/db \ -p 27017:27017 \ --name mongodb \ - --restart unlless stopped \ + --restart unless-stopped \ -d mongo:3 ``` -4. Acum puteţi accesa serviciul atât din Windows cât şi din Ubuntu la `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Instalând Node.js şi npm +## Installing Node.js and npm -Vă recomandăm să instalați versiunea LTS pentru Node.js cu un manager de versiuni node - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -După instalare, utilizaţi aceste comenzi pentru a instala şi utiliza versiunea Node.js după cum este necesar +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts @@ -101,29 +101,29 @@ nvm install --lts nvm install 14 -# Utilizare -# nvm utilizarea +# Usage +# nvm use -nvm 12 +nvm use 12 ``` -Node.js vine pachetul cu `npm`, puteți actualiza la ultimele versiuni de `npm` cu: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console -npm instalare -g npm@latest +npm install -g npm@latest ``` -## Configurați tabăra freeCodep local +## Set up freeCodeCamp locally -Acum că ați instalat condițiile prealabile, urmați [ghidul nostru local de configurare](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) pentru a clona, instala și instala freeCodeCamp local pe calculatorul dvs. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!ATENŢIE] +> [!WARNING] > -> Rețineți că, în acest moment, configurația pentru testele Cypress (și nevoile GUI aferente) este în curs de desfășurare. Ar trebui să mai puteţi lucra la cea mai mare parte a codebazului. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Link-uri utile +## Useful Links -- [O configurare WSL2 Dev cu Ubuntu 20.04, Node.js, MongoDB, VS Code și Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - un articol de Mrugesh Mohapatra (Staff Developer la freeCodeCamp.org) -- Întrebări frecvente privind: - - [Subsistemul Windows pentru Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Docker Desktop pentru Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Romanian/how-to-use-docker-on-windows-home.md b/docs/i18n/Romanian/how-to-use-docker-on-windows-home.md index 5101c9fba4..85ac65a3e3 100644 --- a/docs/i18n/Romanian/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Romanian/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Cum să utilizaţi Docker pe Windows Home +# How to use Docker on Windows Home -Există câteva capcane care trebuie evitate când se configurează docker-ul pe Windows Home. În primul rând trebuie să folosești [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) ca Administrator. Din păcate Windows Home nu acceptă Docker pentru Windows Desktop, astfel încât Toolbox trebuie folosit în schimb. Trebuie să fie rulat ca Administrator deoarece instalarea folosește link-uri simbolice, care nu pot fi create altfel. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -Odată ce ai instalat toolbox-ul, rulează Docker Quickstart Terminal ca Administrator. Acest lucru va crea o `mașinărie implicită` virtuală, dacă nu există deja. Odată ce aceasta s-a întâmplat, închideţi terminalul şi deschideţi VirtualBox (din nou ca administrator). Ar trebui să poți vedea `mașinăria implicită`. Site-ul consumă destul de multe resurse, astfel încât opriți mașina virtuală și ridicați setările cât de mult puteți - memoria în special. S-a confirmat că funcţionează cu 4GB de ram. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -Odată ce ești fericit că Docker funcționează, clonează depozitul freeCodeCamp într-un director din interiorul `C:\Users`. Aceste directoare sunt partajate oferind Docker acces la directoarele locale, de care are nevoie în timpul instalării. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Dacă vezi mesaje ca +If you see messages like ```shell -bash: change_volumes_owner.sh: Niciun astfel de fișier sau director +bash: change_volumes_owner.sh: No such file or directory ``` -când `npm run docker:init` este probabil vinovat. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Romanian/how-to-work-on-coding-challenges.md b/docs/i18n/Romanian/how-to-work-on-coding-challenges.md index 2a32e08ead..2b95545e91 100644 --- a/docs/i18n/Romanian/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Romanian/how-to-work-on-coding-challenges.md @@ -1,148 +1,152 @@ -# Cum se lucrează la provocările programării +# How to work on coding challenges -Scopul nostru este să dezvoltăm o experienţă de învăţare interactivă şi amuzantă. +Our goal is to develop a fun and clear interactive learning experience. -Este dificil de creat provocări de codificare interactivă. Ar fi mult mai ușor să scrii o explicație lungă sau să creezi un tutorial video, Și e un loc pentru cei de pe mediu și YouTube. Cu toate acestea, pentru programa noastră de bază, rămânem cu ceea ce funcționează cel mai bine pentru majoritatea oamenilor - o experiență complet interactivă, ca un joc video. +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. -Vrem ca camerele de luat vederi să atingă o stare de flux. Vrem ca ei să dea un impuls și să exploreze programa noastră cu cât mai puține impedimente posibil. Dorim ca acestea să intre în proiecte cu încredere şi să obţină o expunere largă la conceptele de programare. +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. -Crearea acestor provocări necesită o creativitate și o atenție uriașă pentru detalii. Există destul ajutor disponibil. Vei avea sprijin de la o întreagă echipă de colaboratori la care poți sări ideile și să demonstri provocările tale. Rămâi activ în [camera contributorilor](https://gitter.im/freecodecamp/contributors) și pune o mulțime de întrebări. +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/). -Cu ajutorul tău putem proiecta o programă de programare interactivă care va ajuta milioane de oameni să învețe programare ani de acum încolo. +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. -Conținutul fiecărei provocări este stocat în propriul fișier markdown. Acest fișier markdown este transformat mai târziu în HTML folosind uneltele noastre pentru a crea pagini web interactive. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Puteţi găsi tot conţinutul curricular al freeCodeCamp.org-ului în directorul [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges). +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. -## Configurați instrumentul pentru curriculum +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Înainte de a lucra la curriculum, ar trebui să setați niște instrumente pentru a vă ajuta să vă testați modificările. Puteți utiliza orice opțiune din cele de mai jos: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- Poți [configura tabăra freeCodep locală](how-to-setup-freecodecamp-locally.md). Acesta este **recomandat** pentru contribuții regulate/repetate. Această configurare vă permite să lucrați și să testați modificările. -- Folosește Gitpod, un mediu de dezvoltatori online gratuit. Apăsând pe butonul de mai jos va porni un mediu dev gata de cod pentru tabăra freeCodep din browser-ul tău. Durează doar câteva minute. +## Set up the tooling for the curriculum - [![Deschide în Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Editează fișierele pe interfața GitHub, făcând clic pe pictograma creion pentru fișierul corespunzător. Deși aceasta este cea mai rapidă cale, **nu este recomandat**, deoarece nu puteți testa modificările pe GitHub. Dacă susținătorii noștri concluzionează că modificările pe care le-ați făcut trebuie să fie testate la nivel local, ar trebui să urmați metodele de mai sus din nou. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Șablon provocare + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Mai jos este un şablon pentru cum arată fişierele markdown provocări, în prezent. Pentru a vedea șablonul raționalizat pe care îl vom adopta, a se vedea [mai jos](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: Identificator unic (alfanumeric, MongoDB_id) -titlu: Challenge Title +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title challengeType: 0 videoUrl: 'url of video explanation' --- -## Descrierea +## Description
          -Descrierea provocării și ce este necesar pentru a trece +A Description of the challenge and what is required to pass
          -## Instrucțiuni +## Instructions
          -Instrucțiuni despre ce trebuie făcut. +Instructions about what exactly needs to be done.
          -## Testele +## Tests
          -``yml +```yml tests: - - text: Ar trebui să se returneze "foo" - de test: 'O funcție stricată posibil folosind aserturi Chai' + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
          -## Seed-ul provocării +## Challenge Seed
          ```{ext} -Cod afişat în editor în mod implicit. +Code displayed in the editor by default. -Aceasta este o secțiune necesară pentru provocare. +This is a required section for the challenge. ```
          -### Înainte de testare +### Before Test
          ```{ext} -Cod de configurare opțional test. +Optional Test setup code. ```
          -### După Test +### After Test
          ```{ext} -Cod de test opțional rupt. +Optional Test tear down code. ```
          -## Soluţie +## Solution
          ```{ext} -// soluție a necesitat +// solution required ```
          ```` -> [!NOTĂ] +> [!NOTE] > -> 1. În secțiunea de mai sus, exemple de `{ext}` sunt: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Pentru secţiunea `Tests` de mai sus, `text` şi `testString` ar trebui să fie un şir YAML valid. `testString` poate fi o funcţie stricată sau o expresie folosind aserturi Chai. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Numărătoarea provocărilor +## Numbering Challenges -Fiecare provocare are nevoie de un `id`. Dacă nu specificați una, atunci MongoDB va crea unul nou la întâmplare când salvează datele; cu toate acestea, nu vrem să facă asta, pentru că vrem ca provocarea să fie consecventă în diferite medii (etape, producţia, o mulţime de dezvoltatori diferiţi etc.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -Pentru a genera unul nou într-o scoică (presupunând că MongoDB rulează separat): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Rulează comanda `mongo`. -2. Rulați comanda `ObjectId()`. +1. Run `mongo` command. +2. Run `ObjectId()` command. -De exemplu: +For example: ```bash $ mongo -MongoDB shell versiunea v3.6.1 -conectând la: mongodb://127.0.1:27017 -Versiune server MongoDB: 3.4.10 +MongoDB shell version v3.6.1 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Rezultatul este un nou id, de exemplu `5a474d78df58bafeb35d34` de mai sus. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -Odată ce ai dispozitivul tău, îl pui în fișierul markdown ca `id` câmp în partea de sus, ex. +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- @@ -150,135 +154,212 @@ id: 5a474d78df58bafeb3535d34 title: Challenge Title ``` -## Provocările numirii +## Naming challenges -Numirea lucrurilor este grea. Am simplificat acest lucru prin impunerea unor constrângeri. +Naming things is hard. We've made it easier by imposing some constraints. -Toate titlurile de provocare trebuie să fie explicite și trebuie să urmeze acest model: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[Clauza obiectului\] +\[verb\]\[object clause\] -Iată câteva exemple de nume de provocări: +Here are some example challenge names: -- Utilizați Nota în sensul acelor de ceasornic pentru a specifica adăugarea unui element -- Condense matrice cu .reduce -- Folosește Nota Bracket pentru a găsi Primul Caracter într-un Șir +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Descrierea/instrucțiunile provocării +## Challenge descriptions/instructions -Sentinţele ar trebui să fie clare şi concise cu jargon minim. Dacă este utilizat, jargonul ar trebui definit imediat în limba engleză simplă. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Mențineți alineatele scurte (aproximativ 1-4 propoziții). Este mai probabil ca oamenii să citească mai multe paragrafe scurte decât un zid de text. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Textul provocării ar trebui să utilizeze a doua persoană („tu”) pentru a-i ajuta să dea un ton conversațional. În acest fel, textul și instrucțiunile par să se adreseze direct camerei care lucrează cu provocarea. Încercați să evitați să utilizați prima persoană ("I", "noi", "let's" și "noi"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Nu folosi link-uri de ieşire. Acestea întrerup cursul. Camerele nu ar trebui să fie niciodată nevoite să accepte nimic în timpul acestor provocări. Dacă există resurse de care crezi că ar beneficia camerele de luat vederi, adaugă-le la articolul referitor la provocare. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -Puteți adăuga diagrame dacă este absolut necesar. +You can add diagrams if absolutely necessary. -Nu folosi emoji-uri sau emoticoane în provocări. Tabăra freeCodep are o comunitate globală, iar sensul cultural al unui emoji sau emoticon poate fi diferit în întreaga lume. De asemenea, emoji-urile pot deveni diferite în sisteme diferite. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Umbrele corecte ar trebui să folosească capitalizarea corectă atunci când este posibil. Mai jos este o listă de cuvinte așa cum ar trebui să apară în provocări. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (majuscule în "J" și "S" și fără abrevierii) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Dezvoltarea front-end (formă adjectivă cu o cratimă) este când lucrezi la partea frontală (formă nouă, fără cratime). Același lucru este valabil și pentru sfârșitul din spate, stiva completă, și mulți alți termeni compuși. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### Regula de 2 minute +### The 2-minute rule -Fiecare provocare ar trebui să poată fi rezolvată în termen de 120 de secunde de către un vorbitor englez nativ, care a finalizat provocările care o aşteaptă. Aceasta include perioada de timp necesară pentru a citi direcțiile/instrucțiunile care înțeleg codul seeded, scrie propriul cod și obțineți toate testele pentru a trece. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Dacă este nevoie de mai mult de două minute pentru a finaliza provocarea, aveți două opțiuni: +If it takes longer than two minutes to complete the challenge, you have two options: -- Simplifică provocarea, sau -- Împărțiți provocarea în două provocări. +- Simplify the challenge, or +- Split the challenge into two challenges. -Regula de 2 minute te forțează pe tine, designerul provocării, să faci direcțiile concise, codul tău seed-ului tău clar și testele tale imediat. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Urmărim cât timp durează ca camerele să rezolve schimbările şi să folosească aceste informaţii pentru a identifica provocările care trebuie simplificate sau divizate. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Modularitate +### Modularity -Fiecare provocare ar trebui să predea exact un concept, iar acest concept ar trebui să fie evident din numele provocării. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Putem consolida conceptele acoperite anterior prin repetiție și variații - de exemplu, introducerea elementelor h1 într-o singură provocare, apoi h3 prezintă câteva provocări mai târziu. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Scopul nostru este să avem mii de provocări de 2 minute. Acestea pot fi combinate şi reiterate conceptele acoperite anterior. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Text provocare de formatare +### Formatting challenge text -Iată câteva orientări specifice de formatare pentru a contesta textul și exemplele: +Here are specific formatting guidelines for challenge text and examples: -- Cuvintele cheie de limbă intră în `` etichete. De exemplu, nume de tag-uri HTML sau nume de proprietate CSS -- Prima instanță a unui cuvânt cheie atunci când este definit, sau cuvinte cheie generale (ex: "obiect" sau "immutabil") intră în etichetele `` -- Referinţele la părţile de cod (ex. funcţia, metoda sau numele variabilelor) ar trebui să fie înfăşurate în etichetele ``. Vezi exemplul de mai jos: -- Folosește parseInt pentru a converti variabila realNumber într-un număr întreg. -- Blocurile de cod multi-linie **trebuie precedate de o linie goală**. Următoarea linie trebuie să înceapă cu trei backticks urmate imediat de una dintre [limbile acceptate](https://prismjs.com/#supported-languages). Pentru a finaliza blocul de cod, trebuie să porniți o nouă linie care are doar trei backticks și **o altă linie goală**. **Notă:** Dacă vei folosi un exemplu de cod în YAML, folosește `yaml` în loc de `yml` pentru limba din dreapta backtick-urilor. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Vezi exemplul de mai jos: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Următoarea este un exemplu de cod: +The following is an example of code: ```{language} -[CODUL TĂU HERE] +[YOUR CODE HERE] ```` ```` -- Informaţii suplimentare sub forma unei note ar trebui formatate "Notă: Rest of note text... -- Dacă sunt necesare mai multe note, apoi listaţi toate notele în propoziţii separate folosind formatul "Note: Textul primei note. A doua notă text." -- Folosește ghilimele duble unde este cazul +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Testele de scriere +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Provocările ar trebui să aibă numărul minim de teste necesare pentru a verifica dacă o camperă înțelege un concept. +## Writing tests -Scopul nostru este să comunicăm singurul punct pe care provocarea încearcă să îl predea și să testăm că au înțeles acel punct. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Testele de provocare pot folosi bibliotecile Node.js și Chai.js . De asemenea, dacă este necesar, codul generat de utilizator poate fi accesat în variabila `code`. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Formatând codul seed +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Aici sunt ghiduri specifice de formatare pentru codul seed provocare: +## Formatting seed code -- Foloseşte două spaţii la liniuţa -- Declaraţii JavaScript se termină cu punct şi virgulă -- Foloseşte ghilimele duble unde este cazul -- Comentariile făcute ar trebui să aibă un spaţiu între caracterele de comentariu şi comentariul însuşi +Here are specific formatting guidelines for the challenge seed code: - `// Repară această linie` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Sugestiile şi soluţiile +### Seed code comments -Fiecare provocare are un buton `Obţine o indicie`, astfel încât un utilizator să poată accesa orice indicii/soluţii care au fost create pentru provocare. Sugestiile curriculum/soluţiile subiectele sunt localizate pe [forumul nostru](https://forum.freecodecamp.org/c/guide) sub categoria `Guide`. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Dacă găsești o problemă cu subiectul unei provocări existente, poți face sugestii în [categoria contributorilor](https://forum.freecodecamp.org/c/contributors) pe forum. Moderatorii și utilizatorii cu nivel de încredere 3 vor revizui observațiile și vor decide dacă vor include sau nu modificările subiectului indicativ/soluții corespunzător. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Adăugarea de noi sugestii de provocări/soluţii Subiecte +Example of valid single line JavaScript comment: -Efectuează următorii paşi la adăugarea de noi indicii de provocare/soluţii legate de subiecte. +```js +// Only change code below this line +```` -1. Începeți prin a urma aceiași pași pentru a crea un subiect nou, dar examinați următorul pentru a crea titlul. -2. Titlul subiectului ar trebui să înceapă cu `Ghidul de provocare freeCodep: ` concatenat cu titlul real al provocării curriculumului. De exemplu, dacă provocarea se numește "Chunky Monkey`", titlul subiectului ar fi "Ghidul provocării taberei freeCodep: Chunky Monkey`". -3. `camperbot` ar trebui să fie proprietarul acestor subiecte/postări, astfel încât va trebui să ceri unui administrator să schimbe proprietatea postării principale în `camperbot`. -4. Odată ce a fost creat noul subiect, se creează un id subiect de forum Este localizată la sfârşitul URL-ului subiectului pe forum. Acest id trebuie adăugat în frontmatter al fișierului provocării curriculum prin procesul normal pull request pentru butonul `Obține un indiciu` pentru a conecta la subiect. +Example of a valid CSS comment: -### Linii directoare pentru conținutul de sugestii și subiecte de soluție +```js +/* Only change code above this line */ +``` -Când propuneți o soluție pentru un subiect de discuţie legat de provocarea programei, codul complet trebuie adăugat. Aceasta include tot codul seed-ului original plus orice modificări necesare pentru a trece toate testele de provocare. Următorul șablon ar trebui să fie folosit când se creează noi sugestii / soluții: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. -```md -# Challenge Name Goes aici +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
          + { /* Change code below this line */ } + + { /* Change code above this line */ } +

          {this.state.text}

          +
          + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md +# Challenge Name Goes Here --- -## Explicație pentru probleme +## Problem Explanation -Aceasta rezumă ce trebuie făcut fără a reproșa doar descrierea și/sau instrucțiunile provocării. Aceasta este o secțiune opțională +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section -#### Link-uri relevante +#### Relevant Links - [Link Text](link_url_goes_here) - [Link Text](link_url_goes_here) @@ -289,48 +370,48 @@ Aceasta rezumă ce trebuie făcut fără a reproșa doar descrierea și/sau inst ### Hint 1 -Sint merge aici +Hint goes here ### Hint 2 -Indică merge aici +Hint goes here --- -## Soluții +## Solutions -
          Soluție 1 (Click to Show/Hide) +
          Solution 1 (Click to Show/Hide) -`````js +```js function myFunc() { - consolă. og('Salut lume!'); + console.log('Hello World!'); } ```` -#### Explicație cod +#### Code Explanation -- Explicația codului merge aici -- Explicația codului merge aici +- Code explanation goes here +- Code explanation goes here -#### Link-uri relevante +#### Relevant Links -- [Text link](link_url_goes_here) -- [Text link](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
          ```` -## Testând provocări +## Testing Challenges -Înainte de a [crea o pull request](how-to-open-a-pull-request. d) pentru modificările dvs., trebuie să validați că modificările pe care le-ați făcut nu cauzează probleme cu provocarea. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Pentru a testa toate provocările, executați comanda de mai jos din directorul rădăcină +1. To test all challenges run the below command from the root directory ```` npm run test:curriculum ``` -2. De asemenea, poți testa un bloc sau un superbloc de provocări cu aceste comenzi +2. You can also test a block or a superblock of challenges with these commands ``` npm run test:curriculum --block='Basic HTML and HTML5' @@ -340,50 +421,50 @@ npm run test:curriculum --block='Basic HTML and HTML5' npm run test:curriculum --superblock=responsive-web-design ``` -De asemenea, poți testa o provocare în mod individual prin efectuarea următorilor pași: +You are also able to test one challenge individually by performing the following steps: -1. Treceți la folderul `curriculum`: +1. Switch to the `curriculum` directory: ``` cd curriculum ``` -2. Executaţi următoarele pentru fiecare fişier provocare pentru care aţi modificat: +2. Run the following for each challenge file for which you have changed: ``` - testul npm rulat -- - g "titlul integral în limba engleză al provocării" + npm run test -- -g 'the full English title of the challenge' ``` -Odată ce ați verificat că fiecare provocare la care ați lucrat trece trece testele, [vă rugăm să creați o cerere pull ](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> Puteţi seta variabila de mediu `LOCALE` în `.env` în limba provocării pe care trebuie să o testaţi. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> Valorile acceptate în prezent sunt `english` şi `chinese`, iar `english` sunt setate în mod implicit. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Șablonul Provocării care urmează +## Upcoming Challenge Template -Șablonul provocării în procesul de actualizare la o structură mai curată, mai puțin îmbricată. Acest lucru nu a fost complet finalizat, dar următoarele ar trebui să se apropie de structura finală: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: ````mdx --- -id: identificator unic (alfanumeric), Titlu MongoDB_id) -: 'Titlu provocare' -ChallengeType: Integer, definit în `client/utils/challengeTypes. s' +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` videoUrl: 'url of video explanation' forumTopicId: 12345 --- -import Script din './script. dx'; +import Script from './script.mdx'; ## --step-description-- -Text descriere, în markdown +Description text, in markdown ```html
          - exemplu cod + example code
          ``` @@ -391,48 +472,48 @@ Text descriere, în markdown ![test-id-1] -Va exista un număr arbitrar de tripluri de id-uri, instrucțiuni (în marcaj) și blocuri de cod. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Cod pentru test 1 +Code for test one ``` ![test-id-2] -Mai multe instrucțiuni în sintaxa markdown +More instructions in markdown syntax ```js -Mai mult cod +More code ``` -## --pas cu sămânţă-- +## --step-seed-- -### --înainte de cod +### --before-user-code-- ```lang -Cod evaluat înaintea utilizatorului +Code evaluated before the user’s ``` -### --după cod utilizator -- +### --after-user-code-- ```lang -Cod evaluat după utilizator și chiar înainte de teste +Code evaluated after the user’s, and just before the tests ``` -### --conţinut de seminţe-- +### --seed-content-- ![index-html] ```html -Câteva html +Some html ``` ```css -Câteva css +Some css ``` ```js -Câteva js +Some js ``` ![index-js] @@ -447,7 +528,7 @@ Câteva js

          - Exact la fel ca secțiunea de semințe + Exactly the same as the seeds section

          @@ -457,11 +538,11 @@ Câteva js

          - La fel din nou + Same again

          - --semne de întrebare-- + --question-marker--

          @@ -471,29 +552,29 @@ Câteva js

          - Întrebarea ar ajunge aici (utilizată doar pentru provocările video) + The question would go here (only used for video challenges)

          - --raspunsuri-marker-- + --answers-marker--

          - Răspuns 1 + Answer 1


          - Răspuns 2 + Answer 2


          - Răspuns 2 + More answers

          @@ -513,13 +594,13 @@ Câteva js

          - Link-uri utile + Useful Links

          - Crearea și editarea provocărilor: + Creating and Editing Challenges:

          @@ -527,14 +608,14 @@ Câteva js
          1. - Tipuri de provocări - ce înseamnă valorile numerice tip provocare (numere). + Challenge types - what the numeric challenge type values mean (enum).

          2. - Contributing to FreeCodecampp - Scriind ES6 Challenge Tests - un videoclip urmând Ethan Arrowood în timp ce contribuie la vechea versiune a curriculumului. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

          3. diff --git a/docs/i18n/Romanian/how-to-work-on-the-docs-theme.md b/docs/i18n/Romanian/how-to-work-on-the-docs-theme.md index 93570df8ed..bf8bf8f6c9 100644 --- a/docs/i18n/Romanian/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Romanian/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Cum să lucrezi la tema documentelor +# How to work on the docs theme -> [!NOTĂ] Un scurt memento că nu trebuie să setați nimic pentru a lucra la conținutul site-ului de documentație. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Pentru a lucra la ghidurile de contribuţie, puteţi edita sau adăuga fişiere în directorul `documente` [disponibil aici](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Atunci când modificările sunt îmbinate, acestea vor fi puse la dispoziție automat pe site-ul de documentare. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Structura site-ului de documentare +## Structure of the docs website -Site-ul este generat folosind [`docsify`](https://docsify.js.org), și servit folosind pagini GitHub. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -De obicei nu ar trebui să modificați nicio configurație sau să construiți site-ul local. În cazul în care sunteţi interesaţi, iată cum funcţionează: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- Sursa paginii principale pentru acest site este disponibilă în [`documente/index.html`](index.html). -- Noi servim acest fișier ca SPA folosind `docsify` și paginile GitHub. -- Scriptul `docsify` generează conținutul `markdown` fișierelor în `documente` la cerere. -- Pagina de start este generată din [`_coverpage.md`](_coverpage.md). -- navigarea pe bara laterală este generată de [`_sidebar.md`](_sidebar.md). +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Activarea site-ului de documentare local +## Serving the documentation site locally -Clonează freeCodeCamp: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git -docsify serve documente +docsify serve docs ``` -Instalează `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -și să deservească directorul `/docs` +and serve the `/docs` directory -```sh -docsify servește documente +```console +docsify serve docs ``` -Alternativ, dacă aţi instalat tabăra freeCodep local (a se vedea ghidul de configurare locală), grupăm CLI cu unelte de dezvoltare pentru a putea rula `npm run docs:serve` din rădăcina repoului. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Romanian/how-to-work-on-the-news-theme.md b/docs/i18n/Romanian/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Romanian/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Romanian/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Romanian/index.md b/docs/i18n/Romanian/index.md index 062852347e..1c4add4ab3 100644 --- a/docs/i18n/Romanian/index.md +++ b/docs/i18n/Romanian/index.md @@ -1,45 +1,43 @@ -Comunitatea [freeCodeCamp.org](https://freecodecamp.org) este posibilă datorită miilor de voluntari ca tine. Salutăm orice contribuție adusă comunității și suntem încântați să vă întâmpinăm la bord. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTĂ] Înainte de a continua, vă rugăm să citiţi [Codul nostru de conduită](https://www.freecodecamp.org/code-of-conduct). Îl aplicăm cu strictețe în comunitatea noastră. Dorim să contribuim la freeCodeCamp.org pentru a fi o experiență sigură și cuprinzătoare pentru toată lumea. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Contribuţia fericită. +Happy contributing. -Sunteți bineveniți: +You are welcome to: -- Creează, actualizează și repară erori în [provocările noastre de codificare](#coding-challenges). -- Ajutați-ne să reparăm erorile pe platforma [de învățare freeCodeCamp.org](#learning-platform). -- _(Vin în curând)_ Ajută-ne să traducem freeCodeCamp.org în limbile lumii. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Ai întrebări? Mergeți la [aceste întrebări frecvente](/FAQ.md) unde răspundem la câteva întrebări comune despre contribuții. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Provocări de codificare +## Curriculum -Toate provocările noastre de programare sunt tratate de comunitate, aducând cunoștințe de specialitate de la voluntari ca tine. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Le puteți ajuta să le extindeți și să le îmbunătățiți. De asemenea, poți actualiza povestirile utilizatorilor pentru a explica mai bine conceptul sau pentru a le elimina pe cele redundante și pentru a le îmbunătăți testele de provocare pentru a le face să testeze mai precis codul oamenilor. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Dacă ești interesat să îmbunătățești aceste provocări de codificare, iată [cum să lucrezi la provocările de codificare](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Platforma de învățare +## Learning Platform -Platforma noastră de învățare rulează pe o stivă JavaScript modernă. Are diferite componente, unelte și biblioteci, inclusiv, dar nu numai, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack și multe altele. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -În general, +Broadly, we use -- Avem un server de API bazat pe Node.js. -- Un set de aplicații ale clienților bazate pe React. -- Un script pe care îl folosim pentru a evalua proiectele noastre front-end. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Pentru a contribui la aceasta este nevoie de o înţelegere a API-urilor, a Sintaxei ES6 şi a curiozităţii. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -În esenţă, ne aşteptăm la o cunoaştere de bază a unora dintre tehnologiile, instrumentele şi bibliotecile menţionate anterior. Acestea fiind spuse, nu trebuie să fii expert în a contribui la ele. +If you want to help us improve our codebase... -**Dacă doriți să ne ajutați să îmbunătățim codul nostru, puteți utiliza Gitpod, un mediu gratuit pentru dezvoltatori online** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Deschide în Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Începe un mediu de dezvoltatori gata de cod pentru tabăra freeCodep în browser-ul tău.) +Or you can... -SAU - -**poți [configura tabăra freeCodep local](how-to-setup-freecodecamp-locally.md) pe mașina ta.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Romanian/moderator-handbook.md b/docs/i18n/Romanian/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Romanian/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
            + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Russian/FAQ.md b/docs/i18n/Russian/FAQ.md index a48bd33385..e6ef4fed0d 100644 --- a/docs/i18n/Russian/FAQ.md +++ b/docs/i18n/Russian/FAQ.md @@ -1,101 +1,82 @@ -### Я новичок в GitHub и Open Source, где я должен начать? +### I am new to GitHub and Open Source. Where should I start? -Прочитайте ["Как внести свой вклад в руководство с открытым исходным кодом"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Это компрессорный ресурс первого, удобного для таймера проектов и руководств. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. -### Могу ли я перевести учебный план FreeCodeCamp? +### Can I translate freeCodeCamp's curriculum? -Мы отпустим усилия по локализации на freeCodeCamp, начиная с **китайского** первым. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -Мы намерены сделать учебный план доступным на нескольких языках, но пока не можем взять на себя обязательства в установленные сроки. Определенную роль в стимулировании усилий по интернационализации играют некоторые оперативные ограничения, такие, как персонал, активные вкладчики и затраты на серверы. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. -Мы намерены начать работу в 18нм на этих языках: арабском, португальском, португальском, Русский и испанский (ни в коем конкретном порядке) после того, как мы выпустили учебную программу на китайском языке. +### How can I report a new bug? -**Почему вы сосредоточились на китайской учебной программе?** +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. -Китай является крупнейшим демографическим регионом в нашей аудитории, не говорящей на английском языке. В настоящее время сотни тысяч пользователей используют старую версию платформы. Уделяя внимание китайской учебной программе, мы оценим логистику в 18н. +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Мы сосредоточим внимание на Латинской Америке в качестве демографического региона для португальского и испанского языков. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. -В обозримом будущем у нас нет планов на i18n на другие языки. +### How can I report a security issue? -Мы не призываем вас работать над i18n над этими языками. Мы можем принять запрос на вытягивание без каких бы то ни было сроков развертывания. +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### Как сообщить о новой ошибке? +### I am a student. Can I work on a feature for academic credits? -Если вы думаете, что обнаружили ошибку, сначала прочитайте статью ["Помощь я обнаружил ошибку"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) и следуйте ее инструкциям. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -Если вы уверены, что это новая ошибка, попробуйте создать новую проблему с GitHub. Обязательно включайте как можно больше информации, чтобы мы могли воспроизвести ошибку. У нас есть предустановленный шаблон задачи, который поможет вам в этом. +We request you to plan ahead and work on code contributions with this in mind. -Обращаем Ваше внимание на то, что любые проблемы, связанные с поиском помощи по написанию кода, будут закрыты. Отслеживание вопросов и дискуссий по коду строго осуществляется по вопросам, связанным с кодом. Всякий раз, когда вы сомневаетесь, вы должны [обратиться за помощью на форуме](https://forum.freecodecamp.org) перед отправкой отчета. +### What do these different labels that are tagged on issues mean? -### Как я могу сообщить о проблеме безопасности? +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). -Пожалуйста, не создайте GitHub проблемы с безопасностью. Вместо этого отправьте письмо по адресу `security@freecodecamp.org` и мы сразу же рассмотрим его. +### Where do I start if I want to work on an issue? -### Я студент, могу ли я или наша команда работать над функцией академических кредитов? +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -Да, конечно. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -Хотя мы открыты для всех взносов, пожалуйста, обратите внимание, что мы не можем выделить какие-либо сроки, которые могут быть требованием в вашем колледже или университете. Мы получаем множество запросов и предложений от добровольцев, и мы уважаем их время и усилия. Мы не сможем уделить какому-либо пиару особое внимание, чтобы быть справедливым всем. +### I found a typo. Should I report an issue before I can make a pull request? -Мы просим вас планировать и работать над этой функцией. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -### Что означают эти различные метки, которые помечены по проблемам? +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -Код сопровождает [тройку](https://en.wikipedia.org/wiki/Software_bug#Bug_management) задач и pull requests на основе их приоритета, важности и других факторов. Вы можете [найти полный глоссарий их значений здесь](https://github.com/freecodecamp/freecodecamp/labels). +### How can I get an issue assigned to me? -### Где начать, если я хочу работать над вопросом? +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -Вам следует пройти [**`помощь хотела`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) или [**`только первые таймеры`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) вопросы для краткого обзора того, что доступно для вашей работы. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. Если эти вопросы не имеют ясности в отношении того, что необходимо сделать, то не стесняйтесь задавать вопросы в комментариях. +### I am stuck on something that is not included in this documentation. -### Я нашел опечатку, следует ли мне сообщить о проблеме до того, как я могу сделать запрос на слияние? - -Для опечаток и других изменений в словах вы можете непосредственно открывать Pull requests без создания проблемы. Для обсуждения более крупных проблем, связанных с кодовыми или структурными аспектами учебной программы. - -В разделе описания Pull Request'а, чтобы мы могли понять и проверить ваш вклад даже на мелкие изменения. - -### Как мне получить вопрос, назначенный мне? - -Мы обычно не назначаем вопросы кому-либо кроме тех, кто уже давно вносит свой вклад во избежание двусмысленных не-шоу. Вместо этого мы придерживаемся приведенной ниже политики, чтобы быть справедливыми для всех: - -1. Предпочтение отдается первому запросу на слияние. -2. В случае нескольких Pull Request'ов, мы отдаем приоритет качеству кода в Pull Request'ах. - - Вы включили тесты? - - Вы поймали все usecass? - - Вы убедились в том, что все тесты проходят, и вы подтвердили все работы локально? -3. Наконец, мы отдаем предпочтение запросам pull, которые следуют нашим рекомендациям. - - Вы следили за списком запросов на слияние? - - Вы назвали название Pull Request'а смысл? - -Вам не нужны разрешения для замечаний, помеченных `help wanted` или `первые таймеры` , как объяснялось ранее. - -Будьте внимательны в руководстве и откройте pull request. - -### Я застрял на то, что не включено в эту документацию. - -**Не стесняйтесь обратиться за помощью в:** +**Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -Мы рады помочь вам внести свой вклад в любую из тем, на которые вы хотели бы работать. Не стесняйтесь задавать нам вопросы по соответствующим темам и мы будем рады уточнить. Убедитесь, что вы ищете ваш запрос перед отправкой нового. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Будьте вежливы и терпеливы. Наше сообщество волонтеров и модераторов всегда вокруг Вас, чтобы ответить на Ваши вопросы. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. -**Дополнительная помощь:** +**Additional Assistance:** -Если у вас есть вопросы о стеке, архитектура базы кода, не стесняйтесь связаться с нашей командой разработчиков: +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: -| Персонал | Отправить сообщение на форуме | -|:-------------------- |:---------------------------------------------------------------------------- | -| Мюгэш Мохапатра | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | -| Ахмад Абдольсахаб | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | -| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | -| Том Мондлок | [@moT01](https://forum.freecodecamp.org/u/moT01) | -| Оливер Эйтон-Уильямс | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | -| Рэндалл Доусон | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | +| Staff | Send message on Forum | +|:--------------------- |:---------------------------------------------------------------------------- | +| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | +| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | +| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | +| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | +| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | +| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | -**Вы можете написать нашим сотрудникам разработчика: `dev[at]freecodecamp.org`** +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Russian/_sidebar.md b/docs/i18n/Russian/_sidebar.md index 240616f0c1..1b5bda2bdc 100644 --- a/docs/i18n/Russian/_sidebar.md +++ b/docs/i18n/Russian/_sidebar.md @@ -1,36 +1,39 @@ -- **Начало работы** - - [Введение](index 'Помочь сообществу freeCodeCamp.org') - - [Часто задаваемые вопросы](FAQ.md) -- **Вклад кода** -- - [Настроить freeCodeCamp локально](how-to-setup-freecodecamp-locally.md) - - [Открыть pull-request](how-to-open-a-pull-request.md) - - [Работа над задачами кодирования](how-to-work-on-coding-challenges.md) - - [Работа над видео задачами](how-to-help-with-video-challenges.md) - - [Работа над новостной темой](how-to-work-on-the-news-theme.md) - - [Работа над темой документации](how-to-work-on-the-docs-theme.md) -- **Необязательные руководства** - - [Поймать исходящие письма локально](how-to-catch-outgoing-emails-locally.md) - - [Настроить freeCodeCamp на WSL](how-to-setup-wsl.md) +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- -- **Руководства по полю** (для персонала & мод) - - [Руководство модератора](flight-manuals/moderator-handbook.md) - - [Шаблоны ответов](flight-manuals/using-reply-templates.md) - - [Обзор Дьявола](devops.md) - - [Работа на серверах](flight-manuals/working-on-virtual-machines.md) +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- -- **Наше сообщество** +- **Our Community** - [**GitHub**](https://github.com/freecodecamp/freecodecamp) - - [**Дискурсный форум**](https://freecodecamp.org/forum/c/contributors) - - [**Gitter Чат**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Russian/devops.md b/docs/i18n/Russian/devops.md index 7d25fb475b..46fb8b5382 100644 --- a/docs/i18n/Russian/devops.md +++ b/docs/i18n/Russian/devops.md @@ -1,75 +1,75 @@ -# Операции разработчиков на freeCodeCamp.org +# DevOps Handbook -Это руководство поможет вам понять наш стек инфраструктуры и как мы поддерживаем наши платформы. Хотя это руководство не имеет исчерпывающих деталей для всех операций, оно может быть использовано в качестве справочной информации для вашего понимания систем. +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. -Дайте нам знать, если у вас есть обратная связь или запросы, и мы будем рады уточнить. +Let us know, if you have feedback or queries, and we will be happy to clarify. -## Как мы собираем, тестируем и развертываем кодовую базу? +# Flight Manual - Code deployments -Этот репозиторий постоянно строится, тестируется и развернут в **отдельных наборов инфраструктуры (серверов, баз данных, CDN и т.д.)**. +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. -Это включает в себя три шага, которые должны выполняться последовательно: +This involves three steps to be followed in sequence: -1. Новые изменения (как исправления, так и функции) объединены в нашу ветку основного развития (`master`) с помощью запросов на слияние. -2. Эти изменения проводятся через серию автоматизированных тестов. -3. После прохождения тестов мы выпускаем изменения (или их обновить) для развертывания в нашей инфраструктуре. +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. #### Building the codebase - Mapping Git Branches to Deployments. -Обычно [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (ветка разработки по умолчанию) объединяется в ветку [`стадии производства`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) раз в день и отпускается в изолированную инфраструктуру. +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. -Это промежуточный релиз для наших разработчиков и добровольцев. Он также известен как наш "staging" или "beta" релиз. +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. -Это идентично нашей живой среде производства на `freeCodeCamp.org`, за исключением того, что он использует отдельные базы данных, серверы, веб-прокси и т.д. Эта изоляция позволяет нам тестировать текущие разработки и возможности в "производстве", как сценарий, не затрагивая обычных пользователей платформ freeCodeCamp.org. Эта изоляция позволяет нам тестировать текущие разработки и возможности в "производстве", как сценарий, не затрагивая обычных пользователей платформ freeCodeCamp.org. +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. -После того, как команда разработчиков [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) доволена изменениями на стартовой платформе, эти изменения перемещаются каждые несколько дней в [`производственно-текущую ветвь`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) ветку. +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. -Это окончательный релиз, который перемещает изменения в наши производственные платформы на freeCodeCamp.org. +This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Тестирование изменений - Интеграция и Проверка приемки пользователей. +#### Testing changes - Integration and User Acceptance Testing. -Мы используем различные уровни интеграции и приемки для проверки качества кода. Все наши тесты выполняются с помощью таких программ, как [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) и [Трубопроводов Лазурного берега](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). -У нас есть модульные тесты для тестирования наших решений, серверных API и пользовательских интерфейсов клиентов. Это помогает нам протестировать интеграцию между различными компонентами. +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. -> [!ПРИМЕЧАНИЕ] Мы также находимся в процессе написания тестов конечных пользователей, которые помогут воспроизвести сценарии реального мира, такие как обновление электронной почты или вызов API или сторонних сервисов. +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. -Вместе эти тесты помогают избежать повторения проблем и убедиться, что мы не вводим ошибку во время работы над другой ошибкой или функцией. +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. -#### Развертывание изменений - Передача изменений серверам. +#### Deploying Changes - Pushing changes to servers. -Мы настроили программное обеспечение для непрерывной доставки, чтобы изменения в наших разработках и производственных серверах. +We have configured continuous delivery software to push changes to our development and production servers. -После того, как изменения вносятся в защищенные ветки релиза, для ветки автоматически запускается трубопровод сборки. Строительные трубопроводы отвечают за строительство артефактов и их хранение в холодное хранилище для последующего использования. +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. -Спусковая линия сборки продолжает запускать соответствующий релиз трубопровода, если завершит успешный запуск. Релизующие трубопроводы отвечают за сбор артефактов, их перемещение на серверы и проживание. +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. -Статус сборок и релизов [доступен здесь](#build-test-and-deployment-status). +Status of builds and releases are [available here](#build-test-and-deployment-status). -## Запуск сборки, теста и развертывания. +## Trigger a build, test and deploy -В настоящее время только члены команды разработчиков могут толкнуть в производственные ветви. Изменения в `продукции-*` ветках могут высадиться только быстрым прямым слиянием с [`выше`](https://github.com/freeCodeCamp/freeCodeCamp). +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). -> [!ПРИМЕЧАНИЕ] В предстоящие дни мы улучшили бы этот поток по запросам для улучшения управления доступом и прозрачности. +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. -### Отправка изменений в отладочные приложения. +### Pushing changes to Staging Applications. -1. Настройте ваши пульты правильно. +1. Configure your remotes correctly. ```sh - git удалённый -v + git remote -v ``` - **Результаты:** + **Results:** ``` - origin git@github.com:raisedadead/freeCodeCamp.git (fetch) - происхождение git@github.com:raisedadead/freeCodeCamp.git (push) + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) ``` -2. Убедитесь, что ваша ветка `мастер-` нетронута и синхронизирована с исходным потоком. +2. Make sure your `master` branch is pristine and in sync with the upstream. ```sh git checkout master @@ -77,24 +77,24 @@ git reset --hard upstream/master ``` -3. Проверьте, что CI Travis проходит на `главной ветке` для воспроизведения. +3. Check that the Travis CI is passing on the `master` branch for upstream. - Тесты [непрерывной интеграции](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) должны быть зеленым и PASSING для `главной ветки`. + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. -
            Проверка статуса на Travis CI (скриншот) +
            Checking status on Travis CI (screenshot)
            - ![Проверить статус сборки на Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
            - Если это не удается, вы должны прекратить и расследовать ошибки. + If this is failing you should stop and investigate the errors. -4. Подтвердите, что вы можете построить репозиторий локально. +4. Confirm that you are able to build the repository locally. ``` - npm запуск чисто-и-разработка + npm run clean-and-develop ``` -5. Переместить изменения с `мастер-` на `стадии производства` через быстрое прямое слияние +5. Move changes from `master` to `production-staging` via a fast-forward merge ``` git checkout production-staging @@ -102,26 +102,26 @@ git push upstream ``` - > [!ПРИМЕЧАНИЕ] Вы не сможете принудительно выполнить push и если вы переписали историю в любом случае, эти команды будут ошибки. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Если они сделали, возможно, что-то сделал неправильно, и вы должны просто начать заново. + > If they do, you may have done something incorrectly and you should just start over. -Вышеперечисленные шаги автоматически срабатывают на сборочной линии сборки для `производственной стадии` ветки. После завершения сборки артефакты сохраняются как `.zip` файлы в холодном хранилище для извлечения и использования позже. +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. -Спутниковый трубопровод запускается автоматически при наличии свежего артефакта из подключенного трубопровода сборки. Для разбивки платформ, этот процесс не требует ручного одобрения и артефакты толкаются на серверы CDN и API. +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. -> [!TIP|label:Estimates] Обычно запуск сборки занимает ~20-25 минут, после чего выполняется релиз, который занимает ~15-20 минут для клиента, и ~5-10 минут для доступности API. От кода, до того, как он живет на платформах, весь процесс занимает **~35-45 минут** в общей сложности. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. -### Отправка изменений в Производственные Прикладки. +### Pushing changes to Production Applications. -Этот процесс в основном такой же, как и на постановке платформ, с несколькими дополнительными проверками. Это просто убедиться, что мы ничего не сломаем на freeCodeCamp.org , который может видеть сотни пользователей, использующих его в любой момент. +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. -| НЕ выполняйте эти команды, если вы не подтвердили, что все работает на промежуточной платформе. Вы не должны пропускать или пропускать любые тесты при постановке, прежде чем продолжить. | -|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -1. Убедитесь, что ваша ветка `в стадии производства` нетронута и синхронизирована с исходным потоком. +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. ```sh git checkout production-staging @@ -129,7 +129,7 @@ git reset --hard upstream/production-staging ``` -2. Переместить изменения с `production-staging` на `production-current` через быстрое прямое слияние +2. Move changes from `production-staging` to `production-current` via a fast-forward merge ``` git checkout production-current @@ -137,91 +137,572 @@ git push upstream ``` - > [!ПРИМЕЧАНИЕ] Вы не сможете принудительно выполнить push и если вы переписали историю в любом случае, эти команды будут ошибки. + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. > - > Если они сделали, возможно, что-то сделал неправильно, и вы должны просто начать заново. + > If they do, you may have done something incorrectly and you should just start over. -Вышеперечисленные шаги автоматически срабатывают на сборочной линии для `production-current` ветки. Как только артефакт сборки будет готов, он вызовет запуск на трубопроводе выпуска. +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. -> [!TIP|label:Estimates] Обычно запуск сборки занимает ~20-25 минут. +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. -**Дополнительные шаги для действий персонала** +**Additional Steps for Staff Action** -Один из запущенных релизов срабатывает, члены команды разработчиков получат автоматизированную электронную почту ручного вмешательства. Они могут либо _одобрить_ или _отклонить_ релиз. +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. -Если изменения работают хорошо и были протестированы на поэтапной платформе, то это может быть утверждено. Одобрение должно быть выдано в течение 4 часов после срабатывания релиза до его автоматического отказа. Персонал может запустить выпуск вручную для отклонённых запусков или ожидать следующего цикла выпуска. +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. -Для сотрудников: +For staff use: -| Проверьте вашу электронную почту для прямой ссылки или [перейдите на панель управления релиза](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) после запуска сборки. | -|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| | +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | -Как только один из сотрудников одобрит релиз, конвейер изменит текущие изменения на бесплатные серверы CDN и API. Они обычно занимают около 15-20 минут для клиента, и ~5 минут для доступных серверов API. +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. -> [!TIP|label:Estimates] Запуск релиза обычно занимает ~15-20 минут для каждого экземпляра клиента и ~5-10 минут для каждого экземпляра API, который будет доступен в реальном времени. От кода, чтобы жить на производственных платформах, весь процесс занимает **~90-120 минут** в общей сложности (не считая время ожидания для утверждения персонала). +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). -## Состояние построенного, теста и развертывания +## Build, Test and Deployment Status -Вот текущий тест, построение и развертывание в базе кода. +Here is the current test, build and deployment status of the codebase. -| Тип | Ветка | Статус | Панель | -|:------------------- |:----------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------- | -| Тест CI | [`мастер`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Статус сборки Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Перейти к панели состояния](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Тест CI | [`производственный этап`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Статус сборки Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Перейти к панели состояния](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Собрать Трубопровод | [`производственный этап`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Статус сборки](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Перейти к панели состояния](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Релиз Трубопровода | [`производственный этап`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Перейти к панели состояния](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -| Тест CI | [`текущее производство`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Статус сборки Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Перейти к панели состояния](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | -| Собрать Трубопровод | [`текущее производство`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Статус сборки](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Перейти к панели состояния](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | -| Релиз Трубопровода | [`текущее производство`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Перейти к панели состояния](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | -## Ранний доступ и бета-тестирование +## Early access and beta testing -Мы приветствуем вас в тестировании этих релизов в режиме **"публичное тестирование"** и получите ранний доступ к предстоящим функциям платформы. Иногда эти функции/изменения называются **следующими, бета-версиями,** и т.д. +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. -Ваш вклад через отзывы и отчеты об ошибках поможет нам сделать производственные платформы на `freeCodeCamp. rg` более **устойчивых**, **совместимых** и **стабильных** для всех. +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. -Мы благодарим вас за сообщение об ошибках, с которыми вы столкнулись, и помощь в улучшении работы freeCodeCamp.org. Вы скалите! +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! -### Определение предстоящей версии платформ +### Identifying the upcoming version of the platforms -Публичная бета-тестируемая версия доступна по адресу: +Currently a public beta testing version is available at:

            freecodecamp.dev

            -> [!ПРИМЕЧАНИЕ] Имя домена отличается от **`свободного CodeCamp.org`**. Предназначен для предотвращения индексации поисковых систем и избежания путаницы для обычных пользователей платформы. +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. -### Определение текущей версии платформ +### Identifying the current version of the platforms -**Текущая версия платформы всегда доступна на [`freeCodeCamp.org`](https://www.freecodecamp.org).** +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** -dev-team объединяет изменения из `производственно-монтажной ветки` на `production-current` при выпуске изменений. Верхний коммит должен быть то, что вы видите в реальном времени на сайте. +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. -Вы можете определить точную версию, развернутую посетив логи сборки и установки, доступные в разделе статуса. Кроме того, вы можете отправить нам запрос в [чате участников](https://gitter.im/FreeCodeCamp/Contributors) для подтверждения. +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. -### Известные ограничения +### Known Limitations -При использовании бета-версии платформы существуют некоторые известные ограничения и tradeoff. +There are some known limitations and tradeoffs when using the beta version of the platform. -- #### Все данные / личный прогресс на этих бета-платформах `НЕ будут сохранены или перенесены` в производство. +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. - **Пользователи бета-версии будут иметь отдельный аккаунт от производства.** Бета-версия использует физически отдельную базу данных от производства. Это дает нам возможность избежать случайной потери данных или изменений. При необходимости команда dev может очистить базу данных на этой бета-версии. + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. -- #### Нет гарантий относительно времени и надежности бета-версий. +- #### There are no guarantees on the uptime and reliability of the beta platforms. - Ожидается, что развертывание будет частым и быстрыми итерациями, иногда в несколько раз в день. В результате в бета-версии будет неожиданно время простоя или неисправная функциональность. + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. -- #### Не отправлять обычных пользователей на этот сайт в качестве меры подтверждения исправления +- #### Do not send regular users to this site as a measure of confirming a fix - Бета сайт является и всегда был для дополнения местного развития и тестирования, ничего другого. Это не обещание о том, что пришел, а взглянуть на то, что сейчас работает. + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. -- #### Страница с знаком может отличаться от производства +- #### Sign page may look different than production - Мы используем арендатора теста для freecodecamp.dev на Auth0, и поэтому не имеют возможности установить свой домен. Это делает так, что все переадресации обратных вызовов и страницы входа по умолчанию отображаются в домене типа `https://freecodecamp-dev.auth0.com/`. Это не влияет на функциональность настолько близко к производству, насколько мы можем получить. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. -## Проблемы с представлением отчетности и оставлением отзывов +## Reporting issues and leaving feedback -Пожалуйста, откройте новые вопросы для обсуждения и сообщения об ошибках. Вы можете написать их как **[`релиз: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** для triage. +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. -Вы можете отправить письмо на `dev[at]freecodecamp.org` если у вас есть какие-либо запросы. Как всегда, все уязвимости безопасности должны сообщаться `безопасности[at]freecodecamp.org` вместо публичного трекера и форума. +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

            https://amplify.nginx.com

            +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Russian/flight-manuals/moderator-handbook.md b/docs/i18n/Russian/flight-manuals/moderator-handbook.md deleted file mode 100644 index dc71aac777..0000000000 --- a/docs/i18n/Russian/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,325 +0,0 @@ -# Официальная справочник freeCodeCamp Moderator Handbook. - -Это поможет вам модерировать различные места в нашем сообществе, включая: - -- Проблемы GitHub & pull requests -- Форум, комнаты чата, группы Facebook и другие места для встреч онлайн -- Индивидуальные мероприятия, такие как учебные группы, хакатоны и конференции - -**Все модераторы FreeCodeCamp являются модераторами по всему сообществу. Это означает, что мы верим вас в то, что вы будете наблюдать за любым из этих мест.** - -Таким образом, вы можете служить модератором в любом месте наиболее интересующем вас месте. Некоторые модераторы просто помогите на GitHub. Другие просто помогают на форуме. Некоторые модераторы активно везде. - -Нижняя строка в том, что мы хотим, чтобы вы наслаждались быть модератором, и инвестировать свое небольшое время в интересующие вас места. - -> [!ПРИМЕЧАНИЕ] "С большой силой несет большую ответственность." - дядя Бен - -Как модератор температура важнее технических навыков. - -Слушать. Будьте полезны. Не злоупотребляйте своей силой. - -freeCodeCamp — это сообщество с инклюзивностью, и мы должны продолжать это делать. - -У нас есть единый кодекс поведения, который управляет всем нашим сообществом. Чем меньше правил, тем легче их запомнить. Вы можете прочитать эти правила и подтвердить их в память [здесь](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Модераторы имеют возможность закрывать задачи и принимать или закрывать запросы на слияние. - -У модераторов есть две основные обязанности в отношении GitHub: - -1. Вывод и слияние Pull Request'ов -2. Оценка и реагирование на вопросы - -## Модерирование запросов на слияние - -Pull requests (PR) - как участники отправляют изменения в репозиторий freeCodeCamp. Мы должны выполнить контроль качества (QA) по запросам на слияние или закрытие запросов. - -### Типы запросов на слияние - -1. **Редакция инструкций** Это изменения в тексте испытания - Описание, Инструкции или Тестовый текст. Вы также можете просмотреть их прямо на GitHub и решить, следует ли их объединить. Мы должны быть немного более внимательными к этим, потому что миллионы людей столкнутся с этим текстом в процессе работы по учебному плану FreeCodeCamp. Делает ли Pull Request текст более четким, не делая его намного дольше? Являются ли изменения значимыми, а не чрезмерно педантичными? Помните, что наша цель заключается в том, чтобы вызовы были как можно более четкими и краткими. Они не являются местом для неясных деталей. Кроме того, разработчики могут попытаться добавить связи с ресурсами к вызовам. Вы можете закрыть эти Pull Request'ы и ответить им следующим образом: - - > Спасибо за ваш запрос на слияние. - > - > Я закрываю этот Pull request. Вместо этого добавьте ссылки и другие детали в соответствующую статью руководства по вызову. - > - > Если вы считаете, что я не могу закрыть этот вопрос, пожалуйста, откройте его и добавьте дополнительные разъяснения. Спасибо, и счастливый код. - -2. **Редакции кода вызова** Это изменения в коде в задании - Семена вызова, Решение вызова и Тестовые строки. Эти Pull Request'ы должны быть вытянуты из GitHub и протестированы на вашем локальном компьютере, чтобы убедиться, что тестирование всё ещё может быть передано текущим решением, и новый код не вводит никаких ошибок. Некоторые разработчики могут попытаться добавить дополнительные тесты для покрытия паданских угловых случаев. Мы должны быть осторожны, чтобы не ставить этот вызов слишком сложным. Эти вызовы и их испытания должны быть как можно более простыми и интуитивными. Помимо алгоритмов и секции предварительного собеседования, учащиеся должны иметь возможность решать каждое задание в течение примерно 2 минут. - -3. **Изменение кода** Этот код редактирует изменение функциональности платформы freeCodeCamp. Иногда разработчики стараются вносить изменения без объяснений, но для изменения кода нам нужно убедиться, что изменения действительно необходимы. Таким образом, эти pull-запросы должны ссылаться на существующую проблему GitHub, в которой обсуждаются причины изменения. Затем вы можете открыть запрос на слияние на вашем компьютере и протестировать его локально. После этого если изменения выглядят хорошим, не объединяйте их. Вы можете прокомментировать запрос на слияние, сказав "LGTM", а затем упомянуть @raisedadead, чтобы он мог принять окончательный вид. - -### Как объединить или закрыть pull-запросы - -Прежде всего, при выборе Pull Request'а QA, вы должны присвоить ему. Вы можете сделать это, нажав на ссылку «присвоить» под разделом «назначения» в правой колонке интерфейса GitHub. - -В зависимости от типа Pull Request'а, следуйте указанным выше правилам. - -Перед объединением Pull Request убедитесь, что GitHub имеет зеленые галочки. Если есть какие-либо X'ы, сначала изучите их и выясните, как их превратить в зеленые контрольные знаки. - -Иногда происходит слияние конфликтов. Это означает, что другой Pull Request сделал изменения к той же части этого файла. GitHub имеет инструмент для разрешения этих конфликтов на GitHub. Вы можете попытаться разрешить эти конфликты. Просто используйте вашу лучшую оценку. Изменения Pull Request'а будут вверху, а изменения Master ветки будут снизу. Иногда там будет избыточная информация, которая может быть удалена. Прежде чем закончить, убедитесь, что удалите `<<<<<<`, `======`, и `>>>>>>` добавляет Git для обозначения районов конфликта. - -Если запрос на слияние выглядит готовым (и не требует одобрения от @raisedadead), вы можете его объединить. Не забудьте использовать стандартную функциональность "Squash and Merge" на GitHub. Это позволит разбрасывать все коммиты Pull Request'ов в один коммит, что облегчает прочтение истории Git. - -После этого вы должны прокомментировать запрос на слияние, поблагодарив участника своим личным образом. - -Если автор запроса на слияние является "первым автором", вы также должны поздравить их с первым слиянием Pull Request в репозиторий. Вы можете посмотреть на верхний правый угол тела PR, чтобы определить первого вкладчика. Он покажет `первому участнику` как показано ниже: - -![Копировать_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -Если запрос на слияние не будет готов, вы можете вежливо ответить автору, что он должен сделать, чтобы он был готов. Надеемся, что они ответят и приблизят их запрос на слияние. - -Зачастую pull-request будет явно незначительным. Часто вы можете сообщить об этом в том случае, если участник не проверил флажки в шаблоне Pull Request Template, или использовал обобщенный Pull Request title типа "made changes" или "Update index". - -Также существуют ситуации, когда автор проекта пытается добавить ссылку на свой сайт, или включать в себя библиотеку, которую они сами создали, или иметь легкую правку, которая не служит никому, кроме самих себя. - -В обоих случаях вы должны пойти вперед и закрыть их запрос на слияние и ответить на это стандартное сообщение: - -> Спасибо за то, что вы открыли этот запрос на слияние. -> -> Это стандартное сообщение, уведомляющее вас, что мы рассмотрели ваш запрос на слияние и решили, что он не будет принят. Мы будем рады получить от Вас запросы на получение от нас в будущем. -> -> Спасибо и счастливый код. - -Если вам нужно второе мнение о запросе на слияние, перейдите вперед и оставьте свои комментарии по запросу слияния, затем добавить метку "обсуждение" к запросу на слияние. - -## Модерация задач на GitHub - -freeCodeCamp - активный проект с открытым исходным кодом. Мы получаем новые вопросы каждый день, все из которых должны быть обречены на победу и обозначены. - -### Типы проблем GitHub - -1. **Запросы помощи по коду**, для которых люди ошибочно создали GitHub. Если кто-то просит помощь, вставьте следующее сообщение, затем закройте проблему. - - > Спасибо за сообщение об этой проблеме. - > - > Это стандартное сообщение, уведомляющее вас, что эта проблема кажется запросом на помощь. Вместо того, чтобы обратиться за помощью, пожалуйста, нажмите на \*\*"Помощь"\*\* на вызове FreeCodeCamp, , который поможет вам создать вопрос в правой части форума. Волонтеры на форуме обычно отвечают на вопросы в течение нескольких часов и могут помочь определить, есть ли проблема с вашим кодом или тестами вызова. - > - > Если участники форума обнаружили, что с вашим кодом ничего не случилось, вы можете запросить эту проблему для повторного открытия. - > - > Спасибо и счастливый код. - -2. **Ошибки или разъяснения** Попробуйте воспроизвести ошибку самостоятельно, если это возможно. Если нет, попросите их сделать шаги для воспроизведения ошибки, и есть ли у них скриншоты, видео, или дополнительные сведения, которые помогут вам воспроизвести проблему. Как только вы сможете воспроизвести проблему - или, по крайней мере, подтвердите это замечание - ярлык `подтвердил`. Затем: - -- Если это простое изменение в существующем вызове, пометьте `как только первые таймеры`, в противном случае отметьте как `help wanted`. Используйте в соответствующих случаях другие метки. -- Если проблема имеет более важное значение, флаг `баг`.   Если существует какая-либо двусмысленность относительно правильного хода действий по вопросу, не стесняйтесь помечать @raisedadead на этот вопрос, а затем добавить ярлык `Обсуждение` тега. - -3. **Дублировать Замечания** Если проблема совпадает с другой задачей, приоритет должна быть задана. Пометить как `Дублировать`, вставить следующее сообщение заменив `#XXXXX` на номер задачи, а затем закрыть проблему. - - > Спасибо за сообщение об этой проблеме. - > - > Это стандартное сообщение, уведомляющее вас, что эта проблема, похоже, очень похожа на проблему #XXXXX, Так что я закрываю его как дубликат. - > - > Если вы считаете, что я не могу закрыть этот вопрос, пожалуйста, откройте его и добавьте дополнительные разъяснения. Спасибо и счастливый код. - -4. **Исправлено в постановке** Некоторые проблемы могут быть исправлены в постановке, но не имеют проблемы с GitHub, связанной с ними. Если это так, вы можете вставить следующее сообщение, закрыть проблему и добавить `статус: resolved/shipping` метка: - - > Спасибо за сообщение об этой проблеме. - > - > Это стандартное сообщение, уведомляющее вас, что проблема, о которой вы говорили, присутствует в производстве, но это уже было исправлено в постановке. Это означает, что в следующий раз мы толкаем нашу промежуточную ветку к производству, эта проблема должна быть решена. Из-за этого я закрываю этот вопрос. - > - > Если вы считаете, что я не могу закрыть этот вопрос, пожалуйста, откройте его и добавьте дополнительные разъяснения. Спасибо и счастливый код. - -### Закрытие Стали, Устаревшие, Неактивные Замечания и Запросы на Pull - -- Старыми вопросами или PR-сообщениями являются те, которые не видели никакой активности из OP в течение 21 дня (3 недели от последней деятельности), но только после того, как модератор запросил больше информации/изменений. Они могут быть закрыты в автоматическом скрипте или скрипте бота или самим модератором. - -- Действие определено как: Комментарии, запрашивающие обновление на PR и триал `статус: обновление необходимой метки` и т.д. - -- Если оперативная служба просит предоставить дополнительную помощь или даже время, то вышеуказанное можно расслабиться и вернуться к работе после предоставления ответа. В любом случае ходатайства должны использовать свое лучшее решение для решения вопроса о невыплаченном статусе PR. - -### Другие рекомендации для модераторов на GitHub - -Хотя у вас будет доступ на запись в хранилище freeCodeCamp, **вы никогда не должны передавать код непосредственно в репозитории freeCodeCamp**. Все коды должны быть введены в код freeCodeCamp в виде запроса на слияние из форка репозитория. - -Кроме того, вы никогда не должны принимать свои собственные PR. Они должны быть QA'd другим модератором, так же как и любой другой PR. - -Если вы замечаете, что кто-либо нарушает [код поведения](https://code-of-conduct.freecodecamp.org) на проблемах GitHub, или открытие Pull requests с вредоносным содержанием или кодом, напишите dev@freecodecamp. rg с ссылкой на Pull Request и мы можем полностью запретить их в организации GitHub freeCodeCamp. - -# Модерирование форума - -Как модератор, вы помогаете сделать наше сообщество приятным местом для тех, кто учится и получает помощь. Вы будете иметь дело с отмеченными сообщениями и обрабатывать спам, вне темы и другие неуместные разговоры. - -Обратите внимание, что после того, как вы являетесь модератором на форуме, вы увидите синие подсказки модератора о членах форума, как "это первый раз [person] опубликовано - давайте добро пожаловать в сообщество! или "[person] не опубликовал долгое время - давайте будем рады их вернуться." - -![Синее текстовое сообщение, в котором говорится: "это первый раз [person] опубликовано - поприветствуем их в сообществе!](https://i.imgur.com/mPmVgzK.png) - -Эти возможности для вас приветствуют и заставляют их чувствовать себя особенными. Вы никогда не знаете, какой человек вовлечен в программу, может стать нашим следующим суперпомощником, помогая многим другим людям в их путешествии. Даже самая маленькая доброта может вызвать каскад добрых дел. - -### Удаление сообщений на форуме - -У модераторов форума есть возможность удалять сообщения пользователя. Вы должны сделать это только для следующих экземпляров: - -1. Кто-то опубликовал порнографический или графически насильственный снимок. -2. Кто-то разместил ссылку или код, который является вредоносным по природе, и может нанести вред другим лагерям, кликнувшим по нему. -3. Кто-то наполнил поток со множеством сообщений со спамом. - -### Связь со спамом - -Для первого сообщения пользователя отправьте им сообщение, объясняющее проблему, и удалите ссылку или сообщение. Оставьте заметку в профиле пользователя, объясняющую принятые вами действия. Если проблема не устранена, то следуйте приведенному выше процессу. Спокойно блокировать публикацию пользователем (используя опцию "тишина" в панели "Администратор пользователя"), а затем посылать предупреждение в Кодексе поведения. Установите флажок в личном сообщении, указывающем, что ваше сообщение является "формальным предупреждением". - -Вы можете задавать вопросы и сообщать о происшествиях в [разделе форума сотрудников](https://forum.freecodecamp.com/c/staff). - -### Обсуждение не по теме - -Сообщения или темы, которые, как представляется, находятся в неправильном месте, могут быть повторно классифицированы или переименованы в то, что было бы уместно. - -В исключительных случаях модератору может быть целесообразно проложить обсуждение в несколько потоков. - -Опять же, если у вас возникли проблемы или вопросы, сделайте сообщение с вашими действиями в категории "Персонал", и пометить другого модератора, если вы хотите, чтобы он просматривал ваши модерирующие действия. - -### Несовершеннолетние пользователи - -Наши условия предоставления услуг требуют, чтобы пользователи FreeCodeCamp были не менее 13 лет. В случае если пользователь обнаруживает, что он моложе 13 лет, отправьте им сообщение ниже и удалите их аккаунт на форуме (если удалять не удалось, приостановить аккаунт достаточно). Затем напишите [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) или [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) для удаления учетной записи пользователя freeCodeCamp. - -```markdown -SUBJECT: Пользователям младше 13 лет не разрешается использовать форум в соответствии с Условиями предоставления услуг - -Мы обратили наше внимание на то, что вы моложе 13 лет. За [freeCodeCamp условия обслуживания](https://www.freecodecamp.org/news/terms-of-service), Вам должно быть не менее 13 лет для использования сайта или форума. Мы будем удалять как вашу учетную запись freeCodeCamp, так и вашу учетную запись на форуме. Это ограничение обеспечивает нам соблюдение законов Соединенных Штатов. - -Пожалуйста, присоединяйтесь к себе, как только Вы достигнете 13 лет. - -Спасибо за понимание. -``` - -# Модерирование Facebook - -Если вы видите что-нибудь, что нарушает наш [Кодекс поведения](https://code-of-conduct.freecodecamp.org/), вы должны немедленно удалить его. - -Иногда люди будут публиковать вещи, которые они думают, смешно. Они не понимают, что то, что они говорят, или то, что они разделяют, могут истолковываться как оскорбительное. В этих случаях их запись должна быть удалена, но человек, который ее опубликовал, не обязательно должен быть заблокирован. Удаляя их пост, они, надеемся, придут к пониманию, что то, что они опубликовали, было неуместным. - -Но если речь идет о вопиющем преступлении, которое не может быть разумно отнесено к культурным различиям или недопониманию английского языка, тогда вы должны решительно рассмотреть вопрос о блокировке участника из группы Facebook. - -# Модерирование Discord - -Вот как модераторы занимаются нарушениями нашего [Кодекса поведения](https://code-of-conduct.freecodecamp.org/) в Discord: - -1. **Убедитесь, что оно предназначено для нарушения Кодекса поведения.** Не все нарушения УК были предназначены как таковые. Новый лагерь может отправить большое количество кода для помощи, не зная, что это может быть расценено как спам. В этих случаях вы можете просто попросить их вставить код с помощью таких сервисов, как Codepen или Pastebin. - -2. **Если кемпер явно нарушает Кодекс поведения, то модератор будет действовать следующим образом:** - -- Приостановить вражеского лагеря, но не предупреждать его и не угрожать им. Приостановить вражеского лагеря, но не предупреждать его и не угрожать им. Вместо этого спокойно дать им приостановленную роль в Discord, а затем отправить им следующее сообщение: - -``` -Это стандартное сообщение, уведомляющее вас, что мне пришлось временно приостановить разговор на сервере freeCodeCamp Discord. - -Я модератор от имени нашего сообщества с открытым исходным кодом. Я могу удалить вашу приостановку, но мне нужно сначала сделать следующие 3 шага: - -1. Прочитайте наш Кодекс поведения: https://code-of-conduct.freecodecamp.org/ -2. Напишите мне, подтвердив, что вы закончили чтение этого письма. 3. Объясните мне, почему вы думаете, что я приостановил вас, и почему я должен удалить ваше приостановление. -``` - -- Сообщите о событии и ответе на него в канале #Admin. Вот пример того, как может выглядеть такое резюме: - -``` -Приостановлено: _@username_ -Причина(ы): _Спаммин, троллинг_ -Доказательства: _Одна или несколько ссылок на сообщение(я)_ -CoC: _Sent_ -``` - -- Отчет о снятии приостановления действия должен выглядеть так: - -``` -Я удалил приостановку `@username `. Я послал их в Кодекс поведения. Они только сегодня поняли, что их приостановили и извинились за то, что они сделали. -``` - -- Основываясь на ответе правонарушителей, модератор будет решать, исключить ли приостановку из лагеря нарушителей. Если они выглядят уважительными и извинениями, модератор может удалить подвески. В политическом плане модераторы будут вежливы в ходе этого процесса, независимо от того, насколько плохо будет поведён лагерь нарушителей. Если они не уважают или не желают принять CoC, то за приостановлением должен последовать бан с сервера Discord. Используйте ту же сумму, что и выше, но замените "Suspended:" на "Banned:". - -3. **Как забанить и/или разбанить** - -- Чтобы заблокировать кого-нибудь, щелкните правой кнопкой мыши по имени пользователя/профилю и выберите "Бан ". Вам будет предоставлена возможность удалить предыдущие сообщения - выберите "Не удалять них", Поскольку эти послания должны и впредь присутствовать в качестве исторического отчета. -- Если вы решили запретить кого-то, это означает, что они не желают соблюдать наш Кодекс поведения. Поэтому разбанить Кампера нужно редко происходить. Однако при необходимости вы можете сделать это, нажав на имя сервера, выбрав "Настройки сервера", выберите "Запреты", выберите пользователя, которого вы хотите разблокировать, и нажмите кнопку "Отозвать бан". - -Запреты Discord являются глобальными. Вы не можете забанить пользователя на определенном канале, только со всего сервера. - -4. **Удаление сообщений** Модераторы имеют возможность удалять сообщения в Discord. Они должны использовать эту способность только в четырех весьма конкретных ситуациях: - -- Кто-то опубликовал порнографический или графически насильственный снимок. -- Кто-то разместил ссылку или код, который является вредоносным по природе, и может нанести вред другим лагерям, кликнувшим по нему. -- Кто-то наполнил чат большим количеством спам-сообщений в такой экстремальной степени (обычно вовлекающих ботов), что делает чат совершенно непригодным для использования. -- Кто-то опубликовал рекламу и / или самопродвигающееся сообщение / изображение (социальные средства). - -В других ситуациях - даже ситуациях, когда нарушается кодекс поведения, - Модераторы не должны удалять сообщение, поскольку это важная историческая запись. При удалении сообщения сначала сделайте скриншот! Скриншот можно войти в канал #mod-log, но для #activity-log достаточно сказать, что доказательства были "удалены из-за чувствительного содержания". Примечание: Если сообщение содержит материалы, которые были бы незаконны для создания скриншота из скопируйте вместо этого ссылку - предоставьте эту ссылку на сообщение в @raisedadead для пересылки в команду доверия и безопасности Discord. - -5. **Не используйте @everyone или @here** Не используйте @everyone или @здесь ни при каких обстоятельствах! Каждый человек в этом чате получит уведомление. В некоторых случаях десятки тысяч людей. Вместо этого, если вы хотите, чтобы люди видели объявление, вы можете закрепить его в канале, чтобы позволить всем прочитать его. - -6. **Не угрожайте запретить или приостановить** Если лагерь нарушает кодекс поведения, не грозит запрещать или приостанавливать их, и никогда не предупреждать их публично. Вместо этого обращайтесь к ним в частном порядке или отправьте им ЛМ и издайте постановление о приостановлении (согласно вышеуказанному протоколу). Никто в этом канале не должен знать, что вы забанили / приостановили человека - кемпинги могут просмотреть резюме в канале #activity-log, если они хотят сохранить эту информацию. Если нарушение было явно ненужным и не оправдывало приостановления или приватного разговора, заставить нарушителя кампер знать о своих действиях, не делая его сталкиваться, как предупреждение. Например: - -- Кампер поставляет стену кода для запроса помощи - - Модератор: @username Пожалуйста, используйте Codepen или Pastebin при создании большого количества кода. - -- Или если вам действительно нужно объяснить почему: - - Модератор: @username Пожалуйста, используйте Codepen или Pastebin при создании большого количества кода, потому что это нарушает чат для всех и может рассматриваться как спам в соответствии с нашим Кодексом поведения. - -- В отношении мягких и непреднамеренных нарушений кодекса поведения - - Модератор: Это дружественное напоминание для всех, кто должен следовать кодексу поведения: https://code-of-conduct.freecodecamp.org/ - -7. **Не смейте быть модератором** Не вижу себя как выше сообщества. Вы - сообщество. А сообщество доверяет вам, чтобы помочь защитить что-то редкое, которое мы все разделяем - _приветственное_ место для новых разработчиков. Если вы хотите стать модератором, люди могут чувствовать себя нелегко вокруг вас, Таким же образом, люди могут чувствовать себя неловко вокруг полицейского, даже если они ничего не делают. Это просто человеческая природа. - -8. **Не противоречить другим модераторам** Если вы не согласны с действием модератора, общайтесь с ними в частном порядке или поднимайте его на канале #mod-chat. Никогда не перезаписывайте запрет и никогда не противоречат другому модератору(ам) публично. Вместо этого провести крутую дискуссию в мод-чате и убедить модератора в том, что они сами должны отказаться от запрета или изменить свою точку зрения. Помните: мы все в одной команде. Мы хотим приумножить роль модераторов и представить единый фронт. - -9. **Общайтесь с другими модераторами** У нас есть только место для модераторов. Используйте! Если вы чувствуете себя неудобно с тем, как справиться с определенной ситуацией, обратитесь к другим модераторам за помощью. Если вы думаете, что что-то должно быть обсуждено, сделайте это. Вы входите в команду и мы ценим вклад каждого члена команды! Даже если вы полностью не согласны с чем бы то ни было в этих руководящих принципах или Кодексе поведения! - -10. **Временно неактивен** Если вы не собираетесь некоторое время выступать в роли модератора, из-за отпуска, болезнь или другие причины, не забывайте сообщать остальным о них в канале #mod-chat. Это так мы знаем, можем ли мы рассчитывать на вас, чтобы регулярно активно работать на сервере. - -# Как стать модератором - -Если вы помогаете последовательно в сообществе, наша команда модераторов в конце концов примет к сведению, и один из них упомянут вас в качестве возможного модератора [нашим сотрудникам](https://forum.freecodecamp.org/g/Team). Нет ярлыков для того, чтобы стать модератором. - -Если вы одобрите, мы добавим вас в наши команды модераторов на [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [форуме](https://forum.freecodecamp.org/g/moderators)и т.д. - -> [!ПРИМЕЧАНИЕ] > **Для GitHub:** После того, как вы были приняты в качестве модератора, вы получите приглашение на Github репозиторий. Вам нужно перейти в направлении [приглашения организации бесплатного CodeCamp GitHub](https://github.com/orgs/freeCodeCamp/invitation) , чтобы принять приглашение. Это необходимо для того, чтобы мы могли дать вам доступ на запись в некоторых из наших репозиториев. - -# Как мы уходим из неактивных модераторов - -Пожалуйста, обратите внимание, что мы часто удаляем моды, которые, по нашему мнению, неактивны. Когда мы сделаем это, мы отправим следующее сообщение: - -> Это стандартное сообщение, уведомляющее вас, поскольку вы недавно не были активным модератором, мы удалим вас из нашей команды модераторов. Мы глубоко ценим вашу помощь в прошлом. - -> Если вы думаете, что мы сделали это по ошибке, или как только вы готовы вернуться и внести свой вклад, Просто ответьте на это сообщение, дав мне знать. - -# Как работает наша комната участников - -В [комнате участника в нашем Discord](https://discord.gg/KVUmVXA) есть все. Это специально предназначенная комната для модераторов и других кемперов, которые вносят свой вклад в наше сообщество любыми способами, в том числе через исследовательские группы. - -Наше предположение заключается в том, что разработчики прочитают в этой комнате все, что непосредственно упоминает о них с помощью `@username`. Все остальное необязательно. Но не стесняйтесь читать все записи в них и общаться. - -# Общение с адвокатами - -К вам могут обращаться организации, которые хотят сотрудничать с помощью freeCodeCamp. Как только вы осознаете, что это то, что они последуют, перестаньте говорить с ними и скажите им по электронной почте quincy@freecodecamp.org. Он получает предложения как все это время и находится в лучшем положении для того, чтобы судить о том, будет ли такая взаимосвязь стоить для нашего сообщества (и это редко есть). - -# Связаться с (умственными) медицинскими запросами - -Вы можете столкнуться с ситуациями, когда пользователи ищут медицинские консультации или занимаются проблемами психического здоровья и ищут поддержку. Что касается политики, то следует не разговаривать по этим вопросам в частном порядке. Если ситуация в какой-то момент отражается обратно в fCC, мы хотим чтобы разговор (беседы) записывался. Уясните, что мы не медицинские специалисты, и что вы поощряете пользователя к поиску профессиональной помощи. Сложно, как это иногда бывает, избегайте давать какие-либо советы или советы, кроме указания пользователя в направлении профессиональной помощи! - -Если это происходит в Discord: приостановить пользователя. Это не наказать их! Приостановка пользователя создаст приватный канал, который доступен только пользователю и команде. Это принесет пользу как пользователю, так и FCC несколькими способами: - -- Пользователю гарантирована некоторая конфиденциальность -- Обнаружен публичный чат -- Другие члены команды могут похвастаться, если вам не удобно заниматься ситуацией - -> [!ПРИМЕЧАНИЕ] Приостановка пользователя автоматически дает им сообщение о чтении нашего Кодекса поведения. Убедитесь, что вы сообщите пользователю, что вы приостановили их, чтобы дать им определенную конфиденциальность и что они не подвергаются наказанию. Это очень важно! Мы абсолютно хотим не давать пользователям идею о том, что они наказываются за то, чтобы получить помощь! - -Если вы считаете, что пользователь способен вновь присоединиться к сообществу, щелкните правой кнопкой мыши по частному каналу и скопируйте ID. Вставить следующее сообщение в #mod-log: - -> Базовая медицинская консультация: - -После этого вы можете удалить приостановку от пользователя, как вы обычно делаете. - -Полезные URL: - -http://www.suicide.org/international-suicide-hotlines.html - -# Примечание о свободной речи - -Иногда люди будут защищать что-то оскорбительное или зажигательное что они говорят как "свободное слово". - -Этот комикс XKCD прекрасно подытоживает большинство мыслей сообщества о свободе слова. Так что если кто-то защищает что-то, что они говорят, как "свободная речь" не стесняйтесь отправить его им. - -
            - -Спасибо за чтение этого и спасибо за помощь сообществу разработчиков! diff --git a/docs/i18n/Russian/flight-manuals/using-reply-templates.md b/docs/i18n/Russian/flight-manuals/using-reply-templates.md deleted file mode 100644 index 5b0ad1d43c..0000000000 --- a/docs/i18n/Russian/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,128 +0,0 @@ -# Использование шаблонов ответа - -Это некоторые стандартные шаблоны ответов, которые вы можете использовать при просмотре pull-запросов и триальных проблем. - -> Вы можете создать свой собственный с помощью встроенного GitHub [**Сохраненные ответы**](https://github.com/settings/replies/) или использовать их ниже. - -### Спасибо - -```markdown -Спасибо за ваш вклад на эту страницу! 👍 -Мы рады принять эти изменения и с нетерпением ждем будущих вкладов. 🎉 -``` - -### Спасибо и поздравляем - -> за проявление признательности и поощрение впервые вкладчиков. - -```markdown -Привет @username. Поздравляем с вашим первым запросом на слияние (PR)! 🎉 - -Спасибо за ваш вклад на страницу! 👍 -Мы рады принять эти изменения и с нетерпением ждем будущих вкладов. 📝 -``` - -### Ошибка сборки - -```markdown -Привет, @username - -Мы будем рады объединить ваши изменения, но похоже, что есть ошибка со сборкой Travis CI. ⚠️ - -После решения этих проблем, мы сможем рассмотреть ваш PR и объединить его. 😊 - ---- - -> Не стесняйтесь ссылаться на [Руководство стиля для написания статей](https://github. om/freeCodeCamp/freeCodeCamp#article-title) для этого репозитория по корректному форматированию статьи, так что ваша сборка Travis CI передается. ✅ -> -> Кроме того, на GitHub лучше написать краткое описание ваших изменений при создании PR. 📝 -``` - -### Синхронизация форка - -> Когда PR не актуальна с `главной веткой`. - -``````markdown -Привет, @username - -Мы будем рады объединить ваши изменения, но похоже, что есть ошибка со сборкой Travis CI. ⚠️ - -```bash -Ошибка: ENOTDIR: не каталог, откройте 'src/pages/java/data-abstraction/index.md' -`````` - -Эта ошибка не была вызвана вашим файлом, но была старая ошибка, вызванная объединением кода с веткой `мастер-`. С тех пор это было решено. - -Чтобы передать сборку, вы должны будете синхронизировать последние изменения с `главной ветки` репозитория `freeCodeCamp/freeCodeCamp`. - -Используя командную строку, вы можете сделать это в трех простых шагах: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -Если вы используете GUI, вы можете просто `Добавить новый удаленный...` и используйте ссылку `git://github.com/freeCodeCamp/freeCodeCamp.git` от выше. - -Как только вы синхронизируете форк и передадите сборку, мы сможем просмотреть ваш PR и объединить его. 😊 - ---- - -> Не стесняйтесь ссылаться на статью [Синхронизация Форка](https://help.github.com/articles/syncing-a-fork/) на GitHub для более глубокого понимания того, как поддерживать ваше форк в актуальном репозитории. 🔄 -> -> Кроме того, хорошей практикой на GitHub можно написать краткое описание ваших изменений при создании PR. 📝 -`````` - -### Слияние конфликтов - -> Когда PR имеет место конфликты слияния, которые необходимо разрешить.1 - -```markdown -Привет @username - -Мы бы хотели объединить ваши изменения, но у вас есть какие-то конфликты слияния. - -⚠️ - -Как только вы разрешите эти конфликты, мы сможем рассмотреть ваш PR и объединить его. 😊 - ---- - -> Если вы не знакомы с процессом слияния, не стесняйтесь посмотреть руководство GitHub на ["Разрешение конфликта слияний"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍 -> -> Кроме того, хорошая практика на GitHub писать краткое описание ваших изменений при создании PR. 📝 -`````` -1 Если у первого поставщика услуг есть конфликт между собой, сопровождающие стороны решат конфликт для них. - -### Duplicate - -> Когда PR повторяется или дублируется. - -```markdown -Привет, @username - -Похоже, что аналогичные изменения уже были приняты ранее для этой статьи, которую вы редактируете, извините за это. 😓 - -Если у вас есть больше добавления, пожалуйста, не стесняйтесь открыть новый PR. - -Спасибо еще раз! 😊 - ---- - -> Если у вас есть какие-либо вопросы, не стесняйтесь связаться с [Gitter](https://gitter.im/FreeCodeCamp/Contributors) или комментируйте ниже. 💬 -``` - -### Закрытие недопустимых pull-запросов - -> Когда PR неверен. - -```markdown -Привет, @username - -Вы не добавили какой-либо контент, мы будем закрывать этот PR и помечать его как `invalid`. 😓 - -Но не стесняйтесь открыть другой PR файл! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Russian/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Russian/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index 7ab39afb21..0000000000 --- a/docs/i18n/Russian/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,482 +0,0 @@ -# Flight Manual for working on Virtual Machines - -Являясь сотрудником или dev-team, вам был предоставлен доступ к нашим облачным поставщикам услуг, таким как Azure, Digital Ocean, и т. д. - -Вот несколько полезных команд, которые можно использовать для работы на виртуальных машинах (VM), например, выполнение обновления технического обслуживания или общее обслуживание. - -# Get a list of the VMs - -> [!ПРИМЕЧАНИЕ] Если у вас уже есть SSH доступ к ВМС, только это не позволит вам вывести список ВМ до тех пор, пока вам не будет предоставлен доступ к облачным порталам. - -## Azure - -Установить Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Установите Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Переключение контекста и аутентификации: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. Это гарантирует, что виртуальная машина патче с последними исправлениями безопасности. - -> [!WARNING] Before you run these commands: -> -> - Убедитесь, что ВМ был оснащен полностью и после установки не запущено. -> - Если вы обновляете пакеты на виртуальной машине, которая уже обслуживает приложение, убедитесь, что приложение было остановлено / сохранено. Обновление пакетов вызовет скачки пропускной способности сети, памяти и/или процессора , приводящие к сбоям в работе запущенных приложений. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -Мы выполняем экземпляры сбалансированной нагрузки (Azure Load Balancer) для наших серверов. Эти серверы работают с NGINX, что обратит все трафик на freeCodeCamp.org от различных приложений, работающих на собственной инфраструктуре . - -Конфигурация NGINX доступна на [этом репозитории](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH и вносят изменения, необходимые для конкретного экземпляра(ов). - -Если вы не использовали конфигурацию облачного вложения ранее используйте для ручной работы установки страниц NGINX и ошибок: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Получите сертификаты происхождения Cloudflare из безопасного хранилища и установите в требуемых местах. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. Вам также может потребоваться добавить ВМ в пул балансировщика, если это необходимо. - -## Обновление экземпляров (Maintenance) - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

            https://amplify.nginx.com

            -## Updating Instances (Maintenance) - -Конфигурация изменений в наших экземплярах NGINX поддерживается на GitHub, они должны быть развернуты в каждом экземпляре, как так: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Проверьте и перезагрузите конфигурацию [со Сигналами](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Обновление экземпляров (Maintenance) - -```console -## Ведение журнала и мониторинг - -```console -pm2 журналы -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. может быть передвижным обновлением или ручным обновлением. Дальнейшее значение имеет при изменении зависимостей или добавлении переменных зависания. - -> [!DANGER] Автоматизированные трубопроводы не обрабатывают обновления зависимостей в минуту. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. Вам не нужно запускать эти команды. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Запуск плейсхолдеров для веб-клиента, они будут обновляться артефактами из линии Piwik Azure. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary. h - pm2 удалить client-primary - pm2 start . client-start-primary.sh --name client-primary - echo "serve -c . /../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary. h - pm2 удалить client-secondary - pm2 запустить ./client-start-secondary.sh --name client-secondary -``` - -## Обновление экземпляров (Maintenance) - -```console -## Ведение журнала и мониторинг - -```console -pm2 журналы -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. может быть передвижным обновлением или ручным обновлением. Дальнейшее значение имеет при изменении зависимостей или добавлении переменных зависания. - -> [!DANGER] Автоматизированные трубопроводы не обрабатывают обновления зависимостей в минуту. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. Вам не нужно запускать эти команды. These are here for documentation. diff --git a/docs/i18n/Russian/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Russian/how-to-catch-outgoing-emails-locally.md index fa176ede5e..397ea3382a 100644 --- a/docs/i18n/Russian/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/Russian/how-to-catch-outgoing-emails-locally.md @@ -1,75 +1,75 @@ > **Note:** This is an **optional** step and is required only when working with email workflows -## Введение +## Introduction -Некоторые процессы электронной почты, такие как обновление электронной почты пользователя, требуют back-сервер api-server для отправки исходящих писем. Альтернатива использованию поставщика услуг электронной почты для отправки реальных сообщений электронной почты, Mailhog - это инструмент для тестирования почтовых сообщений, которые будут отлавливаться почтовыми сообщениями, отправленными вашим экземпляром freeCodeCamp. +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. -## Установка MailHog +## Installing MailHog -MailHog может быть установлен в macOS, Windows и Linux. +MailHog can be installed on macOS, Windows and Linux. -- [Введение](#introduction) -- [Установка MailHog](#installing-mailhog) - - [Установка MailHog в macOS](#installing-mailhog-on-macos) - - [Установка MailHog в Windows](#installing-mailhog-on-windows) - - [Установка MailHog в Linux](#installing-mailhog-on-linux) -- [Использовать MailHog](#using-mailhog) -- [Полезные ссылки](#useful-links) +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) -### Установка MailHog в macOS +### Installing MailHog on macOS -Установить MailHog на macOS с [Homebrew](https://brew.sh/): +Install MailHog on macOS with [Homebrew](https://brew.sh/): ```bash brew install mailhog brew services start mailhog ``` -Вышеуказанные команды запускают сервис mailhog в фоновом режиме. +The above commands will start a mailhog service in the background. -После завершения установки вы можете начать [использовать MailHog](#using-mailhog). +When the installation completes, you can start [using MailHog](#using-mailhog). -### Установка MailHog в Windows +### Installing MailHog on Windows -Загрузите последнюю версию MailHog из [официального репозитория MailHog](https://github.com/mailhog/MailHog/releases). Найдите и нажмите на ссылку для вашей версии Windows (32 или 64 бита) и файл .exe будет загружен на ваш компьютер. +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. -Когда загрузка завершится, нажмите для открытия файла. Может появиться уведомление о брандмауэре Windows, запрашивающее разрешение на доступ к MailHog. Открывается стандартная командная строка Windows, где будет запущен MailHog после предоставления доступа к брандмауэру. +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. -Закройте MailHog, закрыв окно командной строки. Чтобы запустить MailHog снова, нажмите на исполняемый файл MailHog (. xe) файл, который был изначально загружен - нет необходимости загружать новый установочный файл MailHog. +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. -Начать [использовать MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -### Установка MailHog в Linux +### Installing MailHog on Linux -Сначала установите [Go](https://golang.org). +First, install [Go](https://golang.org). -Выполните следующие команды для установки GO на основанные на Debian системы, такие как Ubuntu и Linux Mint. +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. ```bash sudo apt-get install golang ``` -Выполните следующие команды для установки GO на основанные на RPM системы, такие как CentOS, Fedora, Red Hat Linux и т.д. +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. ```bash sudo dnf install golang ``` -Или выполните следующие команды для установки GO. +Alternatively, run the following commands to install GO. ```bash sudo yum install golang ``` -Теперь установите путь для Go со следующими командами. +Now set the path for Go with the following commands. ```bash echo "export GOPATH=$HOME/go" >> ~/.profile echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile -источник ~/.profile +source ~/.profile ``` -Наконец, введите команды ниже, чтобы установить и запустить MailHog. +Finally, enter the commands below to install and run MailHog. ```bash go get github.com/mailhog/MailHog @@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog mailhog ``` -Начать [использовать MailHog](#using-mailhog). +Start [using MailHog](#using-mailhog). -## Использовать MailHog +## Using MailHog -Откройте новую вкладку или окно браузера и перейдите к [http://localhost:8025](http://localhost:8025) , чтобы открыть свой почтовый ящик после завершения установки MailHog и запущен MailHog. Почтовый ящик будет похож на снимок экрана ниже. +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. -![Скриншот MailHog 1](images/mailhog/1.jpg) +![MailHog Screenshot 1](images/mailhog/1.jpg) -Письма, отправленные вашей установкой FreeCodeCamp, будут отображаться ниже +Emails sent by your freeCodeCamp installation will appear as below -![Скриншот MailHog 2](images/mailhog/2.jpg) +![MailHog Screenshot 2](images/mailhog/2.jpg) -При открытии данного письма будут доступны две вкладки, которые позволят вам просматривать текст или исходный текст. Убедитесь, что вкладка с обычным текстом выбрана ниже. +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. -![Скриншот MailHog 3](images/mailhog/3.jpg) +![MailHog Screenshot 3](images/mailhog/3.jpg) -Все ссылки в электронной почте должны быть кликабельными и решаться на их URL. +All links in the email should be clickable and resolve to their URL. -## Полезные ссылки +## Useful Links -- Проверьте репозиторий [MailHog](https://github.com/mailhog/MailHog) для получения дополнительной информации, связанной с MailHog. Дополнительная информация также доступна в отношении пользовательских настроек MailHog. +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Russian/how-to-help-with-video-challenges.md b/docs/i18n/Russian/how-to-help-with-video-challenges.md index f10b562e70..0724aaef02 100644 --- a/docs/i18n/Russian/how-to-help-with-video-challenges.md +++ b/docs/i18n/Russian/how-to-help-with-video-challenges.md @@ -1,67 +1,67 @@ -# Как помочь с видео вызовами +# How to help with video challenges -Испытания на видео- это новый вид вызовов в учебной программе FreeCodeCamp. +Video challenges are a new type of challenge in the freeCodeCamp curriculum. -Видеосъемка - это небольшая секция полноформатного видеокурса по конкретной теме. Страница видео вызова встраивает видео YouTube. У каждой страницы заданий есть вопрос с несколькими вариантами ответа на видео. Пользователь должен правильно ответить на вопрос, прежде чем перейти к следующему видеоиспытанию на курсе. +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. -Страницы тестирования видео создаются членами команды freeCodeCamp. Видео YouTube также загружаются членами команды freeCodeCamp. Многие из задач видео еще не имеют вопросов, связанных с ними. +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. -Вы можете помочь, создав вопросы с множественным выбором по разделам видео и добавляя вопросы к файлам markdown для видео испытаний. +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. -## Шаблон вызова +## Challenge Template -Ниже приведен шаблон того, как выглядят файлы markdown вызовов. +Below is a template of what the challenge markdown files look like. ````md --- -id: Уникальный идентификатор (буквенно-цифровый, MongoDB_id) +id: Unique identifier (alphanumerical, MongoDB_id) title: Challenge Title challengeType: 11 -videoId: 'YouTube videoId для видео вызова' +videoId: 'YouTube videoId for video challenge' --- -## Описание +## Description
            -Дополнительное описание с полезной информацией, связанной с видео. +An optional description with helpful information related to the video.
            -## Тесты +## Tests
            ```yml -вопрос: - текст: 'Вопрос' - ответов: - - 'Ответ один' - - 'Ответ два' - - 'Ответ три' - решение: 3 +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 ````
            ```` -## Создание вопросов для видео вызовов +## Creating questions for video challenges -### Доступ к файлам отметок видео +### Access the video challenge markdown files -Вы можете найти markdown файлы для видео вызовов в следующих местах обучения: +You can find the markdown files for video challenges at the following locations in the curriculum: -- [Data Analysis with Python Course](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) -- [Курс TensorFlow 2.0](https://github. om/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) -- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) -- [How Neural Networks Work Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) +- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) -Pick a challenge markdown файл с отметкой задачи из перечисленных выше параметров. +Pick a challenge markdown file from the options above. -### Сначала найдите видео, связанное с заданием и создайте вопрос с несколькими вариантами ответа +### Skim through the video associated with the challenge and create a mutiple choice question -. +First, find the videoId. -Например, в следующем коде из заголовка файла markdown видеовызова, videoId - "nVAaxZ34khk". На GitHub информация должна быть размещена в табличном формате. +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. ```` --- id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 @@ -69,103 +69,104 @@ videoId: nVAaxZ34khk --- ``` -Далее откройте доступ к видео YouTube с помощью идентификатора видео. Адрес ссылки на видео будет следующим: -https://www.youtube. om/watch?v=[videoId] (добавьте идентификатор видео на URL без квадратных скобков) +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) -В примере выше, url - https://www. outube.com/watch?v=nVAaxZ34khk +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk -Skim YouTube видео с этим видео Id и думать о множественном выборе вопроса на основе содержания видео. +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. -### Добавьте вопрос в файл markdown +### Add the question to the markdown file -Вы можете добавить вопрос локально или через GitHub интерфейс. Чтобы добавить вопрос локально, вам нужно [настроить freeCodeCamp локально](how-to-setup-freecodecamp-locally.md). Вы также можете найти файл на GitHub и нажать на кнопку редактирования, чтобы добавить вопрос прямо в вашем браузере. +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. -Если вопрос еще не был добавлен в конкретное видео испытание, у него будет следующий вопрос по умолчанию: +If a question has not yet been added to a particular video challenge, it will have the following default question: ```yml -вопрос: - текст: | - Вопрос - ответы: +question: + text: | + Question + answers: - | - один + one - | - два + two - | - три - решение: 3 + three + solution: 3 ``` -Обновите слово «Вопрос» со своим вопросом. С возможными ответами обновите "одну", "два" и "три". Обязательно обновите номер решения, с которым правильный ответ. Вы можете добавить более возможные ответы в том же формате. Вопрос и ответы могут быть окружены кавычками. +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. -#### Используйте markdown для форматирования вашего вопроса +#### Use markdown to format your question -Текст в вопросе анализируется как markdown. Самый простой способ убедиться в корректном форматировании - начать вопрос с `текста: |`, так: +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: ```yml -вопрос: - текст: | - Вопрос +question: + text: | + Question ``` -Затем вы должны убедиться, что ваш вопрос находится на новой строке, а на одном уровне более `текста: |`. +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. -Тот же подход может быть использован для ответов, так что все вопросы становятся +The same approach can be used for the answers, so the entire question becomes ```yml -вопрос: - текст: | - Вопрос - ответы: +question: + text: | + Question + answers: - | - Первый ответ + First answer - | - Второй + Second - | - Третье - решение: 2 + Third + solution: 2 ``` -Убедитесь в достоверности каждого ответа, но есть только один правильный ответ. +Make sure each answer is plausible but there is only one correct answer. -#### Использование HTML +#### Use of HTML -Вопросы и ответы могут содержать определенные HTML теги, такие как `
            ` для новой строки. HTML теги должны использоваться очень осторожно, когда вопросы не могут быть выражены без них. +Questions and answers can contain certain HTML tags like `
            ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. -### Примеры вопросов +### Question examples -#### Примеры без HTML +#### Examples without HTML ````yml -вопрос: - текст: | - Что делает запись кода JavaScript в консоли? +question: + text: | + What does this JavaScript code log to the console? ```js console.log('hello world'); ```` - Выберите ответ! - ответы: - - | Привет, *мир* - - | **Здравствуйте** мир - - | Привет мир решение: 3 + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 ```` ````yml -вопрос: - текст: | - Что будет вывести после запуска этого кода: +question: + text: | + What will print out after running this code: ```py - ширина = 15 - высота = 12. распечатать (высота/3) + width = 15 + height = 12.0 + print(height/3) ```` - ответы: + answers: - | 39 - | 4 - | 4.0 - | 5.0 - - | 5 решение: 3 + - | 5 solution: 3 ```` #### Example with HTML @@ -189,10 +190,10 @@ question: solution: 3 ```` -Окончательный пример показывает, что HTML может быть использован, но он не так читается, как версия без него. +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. -Для большего количества примеров вы можете посмотреть файлы markdown для следующего видеокурса. У всех задач уже есть вопросы: [Python для каждого курса](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Открыть pull-request +## Open a pull request -После создания одного или нескольких вопросов вы можете зафиксировать изменения в новую ветку и [открыть запрос на слияние](how-to-open-a-pull-request.md). +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Russian/how-to-open-a-pull-request.md b/docs/i18n/Russian/how-to-open-a-pull-request.md index 51723e8d4d..2729cd6237 100644 --- a/docs/i18n/Russian/how-to-open-a-pull-request.md +++ b/docs/i18n/Russian/how-to-open-a-pull-request.md @@ -1,121 +1,121 @@ -# Как открыть Pull Request (PR) +# How to open a Pull Request (PR) -Pull request позволяет отправлять изменения с вашего форка на GitHub на бесплатный CodeCamp.org репозиторий. Как только вы выполните изменения в коде, или вызовите код, вы должны следовать этим рекомендациям, чтобы отправить PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. -## Подготовить хороший заголовок PR +## Prepare a good PR title -Мы рекомендуем использовать [обычные заголовки и сообщения](https://www.conventionalcommits.org/) для запросов на коммиты и pull. Контракт имеет следующий формат: +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: -> `([необязательный охват(ы)]): ` +> `([optional scope(s)]): ` > -> Например: +> For example: > -> `fix(learn): тесты для дела...while cycle challenge` +> `fix(learn): tests for the do...while loop challenge` -При открытии Pull Request(PR) вы можете использовать ниже для определения типа, области действия (необязательно) и описания. +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. -**4.3.2 Тип:** +**Type:** -| Тип | Когда выбрать | -|:--------- |:-------------------------------------------------------------------------------- | -| исправить | Изменена или обновлена/улучшена функциональность, тесты, оглавление урока и т.д. | -| перенести | Только если вы добавляете новые функции, тесты и т.д. | -| петь | Изменения, не связанные с кодом, тестами или извержениями урока. | -| docs | Изменения в `/docs` директории или рекомендации и т. д. | +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | -**Область:** +**Scope:** -Вы можете выбрать область [этого списка меток](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). -**Пояснение:** +**Description:** -Держите его коротким (менее 30 символов) и простым, вы можете добавить больше информации в поле описания PR и комментариев. +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. -К примерам хороших PR-файлов относятся: +Some examples of good PRs titles would be: -- `fix(a11y): улучшенный контраст строки поиска` -- `feat: добавить больше тестов в html и css вызовы` -- `fix(api,client): предотвращать ошибки CORS при отправке формы` -- `docs(i18n): китайский перевод локальной установки` +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` -## Предложить Pull Request +## Proposing a Pull Request -1. Как только правки будут сделаны, вам будет предложено создать запрос на слияние на странице GitHub вашего форка. +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. - ![Изображение - Сравнить запрос на слияние на GitHub](./images/github/compare-pull-request-prompt.png) + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) -2. По умолчанию, все pull-запросы должны быть против репозитория freeCodeCamp, `master` ветки. +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. - Убедитесь, что базовый форк установлен в freeCodeCamp/freeCodeCamp при получении запроса на слияние. + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. - ![Изображение - Сравнение форков при создании Pull Request](./images/github/comparing-forks-for-pull-request.png) + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) -3. Отправьте запрос на слияние с вашей ветки на `мастер-` freeCodeCamp. +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. -4. В тексте вашего PR содержится более подробная информация об изменениях, которые вы сделали и почему. +4. In the body of your PR include a more detailed summary of the changes you made and why. - - Вам будет представлен шаблон Pull Request'а. Это контрольный список, который вы должны были следовать перед открытием Pull request. + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. - - Заполните детали по своему усмотрению. Эта информация будет рассмотрена, и участники будут решать, будет ли ваш запрос на слияние принят. + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. - - Если PR предназначен для обращения к существующей проблеме GitHub, то в конце описания вашего PR, используйте ключевое слово _Закрывает_ с номером задачи [автоматически закрывать эту проблему, если PR принимается и сливается](https://help.github.com/en/articles/closing-issues-using-keywords). + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). - > Пример: `Закрытие #123` закроет задачу 123 + > Example: `Closes #123` will close issue 123 -5. Укажите, если вы протестировали на локальной копии сайта или нет. +5. Indicate if you have tested on a local copy of the site or not. - Это очень важно при внесении изменений, которые не просто редактируют содержимое текста, например документацию или описание проблемы. Примеры изменений, требующих локального тестирования, включают JavaScript, CSS или HTML, которые могут изменить функциональность или макет страницы. + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. -## Отзыв о pull-запросах +## Feedback on pull requests -> Поздравляем! :tada: за создание PR и благодарит вас за то, что вы потратили время на участие. +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. -Наши модераторы теперь посмотрите и оставьте отзыв. Пожалуйста, будьте терпеливы с другими модераторами и уважайте их время. Все Pull Request'ы рассматриваются в установленный срок. +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -Если вам нужна помощь, пожалуйста, обсудите [участников чата](https://gitter.im/FreeCodeCamp/Contributors), мы будем рады вам помочь. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Если вы хотите сделать больше запросов на слияние, мы рекомендуем вам прочитать [сделанные изменения и синхронизировать](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) рекомендации, чтобы избежать необходимости удаления ветки ветки. +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. -## Конфликтует на Pull Request +## Conflicts on a pull request -Конфликты могут возникать, потому что многие участники проекта работают над репозиторием, а изменения могут нарушить ваш PR, ожидающий рассмотрения и слияния. +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. -Чаще всего, вы не можете требовать перебазы, потому что мы используем все коммиты, Однако, если ребаз запрашивается здесь, это то, что вы должны делать. +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. -### Для обычных исправлений и возможностей +### For usual bug fixes and features -Когда вы работаете над регулярными ошибками и возможностями нашей ветки разработки `master`, вы можете сделать простой перебаз: +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: -1. Перебазируйте вашу локальную копию: +1. Rebase your local copy: ```console git checkout git pull --rebase upstream master ``` -2. Разрешать любые конфликты и добавлять/редактировать коммиты +2. Resolve any conflicts and add / edit commits ```console - # Или + # Either git add . - git commit -m "chore: урегулировать конфликты" + git commit -m "chore: resolve conflicts" - # или + # Or git add . - git коммит --change --no-edit + git commit --amend --no-edit ``` -3. Отправьте ваши изменения в PR +3. Push back your changes to the PR ```console git push --force origin ``` -### Для предстоящей учебной программы и элементов +### For upcoming curriculum and features -Когда вы работаете над функциями для нашей предстоящей учебной программы `следующей*` ветки, у вас есть выбор вишни: +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: -1. Убедитесь, что ваш исходный код синхронизирован с локальным: +1. Make sure your upstream comes in sync with your local: ```console git checkout master @@ -124,9 +124,9 @@ Pull request позволяет отправлять изменения с ва git reset --hard upstream/next-python-projects ``` -2. Сделать резервную копию +2. Take backup - a. Удалите либо вашу локальную ветку после создания резервной копии (если она по-прежнему локальная): + a. Either delete your local branch after taking a backup (if you still have it locally): ```console git checkout @@ -137,42 +137,42 @@ Pull request позволяет отправлять изменения с ва git checkout -b # example: - # git checkout -b backup-feat/add-numpy-video-question + # git checkout -b backup-feat/add-numpy-video-question - git ветка -D + git branch -D ``` - b. Или просто резервная копия вашей ветки Pr (если у вас нет локально): + b. Or just a backup of your pr branch (if you do not have it locally): ```console git checkout -b origin/ # example: - # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question ``` -4. Начать с чистого листа: +4. Start off with a clean slate: ```console git checkout -b next-python-projects git cherry-pick ``` -5. Разрешите конфликты и очистите, установите тесты запуска +5. Resolve any conflicts, and cleanup, install run tests ```console - npm запуск очистить + npm run clean npm ci - тест запуска npm:curriculum --superblock= + npm run test:curriculum --superblock= - # пример: + # example: - # npm запустить тест:curriculum --superblock=python-for-every + # npm run test:curriculum --superblock=python-for-everybody ``` -6. Если все выглядит хорошо оттолкнуться к PR +6. If everything looks good push back to the PR ```console git push --force origin diff --git a/docs/i18n/Russian/how-to-setup-freecodecamp-locally.md b/docs/i18n/Russian/how-to-setup-freecodecamp-locally.md index 6cf23e3a53..619db733cf 100644 --- a/docs/i18n/Russian/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Russian/how-to-setup-freecodecamp-locally.md @@ -1,326 +1,326 @@ -Следуйте этим инструкциям для установки freeCodeCamp локально на вашей системе. Рекомендуется вносить регулярные взносы. +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -Для некоторых рабочих потоков вклада вам нужно запустить freeCodeCamp локально. Например, предварительный просмотр вызовов программирования или отладка и исправление ошибок в кодовой базе. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] Если вы не заинтересованы в установке freeCodeCamp локально рассмотрите возможность использования Gitpod, бесплатного окружения для разработчиков. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > -> [![Открыть в Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > -> (Начинает готовое к исходному коду окружение для freeCodeCamp в вашем браузере.) +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Подготовить вашу локальную машину +### How to prepare your local machine -Начните с установки необходимого программного обеспечения для вашей операционной системы. +Start by installing the prerequisite software for your operating system. -В первую очередь мы поддерживаем разработку на системах **\*nix**. Наши сотрудники и участники сообщества регулярно работают с кодом с помощью инструментов, установленных на Ubuntu и macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. -Мы также поддерживаем Windows 10 через WSL2, который вы можете подготовить, [прочитав это руководство](/how-to-setup-wsl). +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). -Некоторые члены сообщества также разрабатываются на Windows 10 с Git для Windows (Git Bash) и другими инструментами, установленными в Windows. На данный момент у нас нет официальной поддержки такой установки, мы рекомендуем вместо этого использовать WSL2. +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. -**Требования:** +**Prerequisites:** -| Необходимые предпосылки | Версии | Примечания | -| --------------------------------------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Node.js](http://nodejs.org) | `12.x` | [График LTS](https://github.com/nodejs/Release#release-schedule) | -| npm (поставляется с узлом) | `6.x` | У вас нет LTS релизов, мы используем версию с узлами LTS | -| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Примечания к выпуску](https://docs.mongodb.com/manual/release-notes/), Примечание: в настоящее время мы на `3.6`, планируется [обновление](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | -> [!DANGER] Если у вас есть другая версия, пожалуйста, установите рекомендованную версию. Мы можем поддерживать только вопросы установки для рекомендованных версий. Смотрите [устранения неполадок](#troubleshooting) для деталей. +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. -Если Node.js уже установлен на вашей машине, выполните следующие команды для проверки версий: +If Node.js is already installed on your machine, run the following commands to validate the versions: ```console -узел -v +node -v npm -v ``` -> [!TIP] Мы настоятельно рекомендуем обновиться до последних стабильных версий программных продуктов, перечисленных выше, также известных как долговременная поддержка (LTS). +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. -После установки необходимых предварительных условий вам нужно подготовить свою среду разработки. Это часто используется для многих процессов разработки, и вам нужно будет сделать это только один раз. +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. -**Выполните следующие шаги, чтобы ваше окружение было готово:** +**Follow these steps to get your development environment ready:** -1. Установите [Git](https://git-scm.com/) или ваш любимый Git клиент, если вы еще этого не сделали. Обновление до последней версии; версия, поставляемая в комплекте с вашей операционной системой, может устареть. +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. -2. (Необязательно, но рекомендуется) [Настройка SSH ключа](https://help.github.com/articles/generating-an-ssh-key/) для GitHub. +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. -3. Установите редактор кода по вашему выбору. +3. Install a code editor of your choice. - Мы настоятельно рекомендуем использовать [Visual Studio Code](https://code.visualstudio.com/) или [Atom](https://atom.io/). Это отличные, бесплатные и открытые исходные коды. + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. -4. Настройте линию для редактора кода. +4. Set up linting for your code editor. - Вы должны иметь [ESLint запущен в вашем редакторе](http://eslint.org/docs/user-guide/integrations.html), и он выделит все, что не соответствует [бесплатному Руководству по стилю JavaScript](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). - > [!TIP] Пожалуйста, не игнорируйте любые ошибки линейки. Они предназначены для **помощи** и обеспечения чистой и простой кодовой базы. + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. -## Форкнуть репозиторий на GitHub +## Fork the repository on GitHub -[Forking](https://help.github.com/articles/about-forks/) - это шаг, на котором вы получите свою собственную копию основного репозитория бесплатного CodeCamp (например _repo_) на GitHub. +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. -Это важно, так как это позволяет работать на вашей собственной копии freeCodeCamp на GitHub, или скачать (клонировать) ваш репозиторий для работы на локальном компьютере. Позднее вы сможете запросить изменения для выгрузки их в основной репозиторий из вашего форка через pull request (PR). +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). -> [!TIP] Главный репозиторий на `https://github.com/freeCodeCamp/freeCodeCamp` часто называется `исходным репозиторием`. +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. > -> Ваш форк на `https://github.com/YOUR_USER_NAME/freeCodeCamp` часто называется репозиторием `origin`. +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. -**Выполните следующие шаги, чтобы форкнуть `https://github.com/freeCodeCamp/freeCodeCamp` репозиторий:** +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** -1. Перейдите в репозиторий freeCodeCamp на GitHub: +1. Go to the freeCodeCamp repository on GitHub: -2. Нажмите кнопку "Форк" в правом верхнем углу интерфейса ([подробности здесь](https://help.github.com/articles/fork-a-repo/)) +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) -3. После того, как репозиторий был форкнут, вы будете переданы в вашу копию репозитория freeCodeCamp на `https://github.com/YOUR_USER_NAME/freeCodeCamp` +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
            - Как форкнуть freeCodeCamp на GitHub (скриншот) + How to fork freeCodeCamp on GitHub (screenshot)
            - Как форкнуть freeCodeCamp на GitHub + How to fork freeCodeCamp on GitHub
            -## Клонируйте свой вилок из GitHub +## Clone your fork from GitHub -[Клонирование](https://help.github.com/articles/cloning-a-repository/) - это место, где вы **загрузите** копию репозитория с удаленного `` , принадлежащего вам или кому-либо другому. В вашем случае это удаленное местоположение - ваш `форк` репозиторий freeCodeCamp, который должен быть доступен на `https://github.com/YOUR_USER_NAME/freeCodeCamp`. +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. -Выполните эти команды на вашей локальной машине: +Run these commands on your local machine: -1. Откройте терминал / Командный подсказка / Shell в каталоге проектов +1. Open a Terminal / Command Prompt / Shell in your projects directory - _например: `/yourprojectsdirectory/`_ + _i.e.: `/yourprojectsdirectory/`_ -2. Клонируйте ваш форк свободного CodeCamp, заменив `YOUR_USER_NAME` на ваше имя пользователя GitHub +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username ```console git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` -Это загрузит весь репозиторий freeCodeCamp в каталог ваших проектов. +This will download the entire freeCodeCamp repository to your projects directory. -Примечание: `--depth=1` создает мелкий клон вилки с только последней историей/фиксацией. +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Настроить синхронизацию от родителя +## Set up syncing from parent -Теперь, когда вы скачали копию вашего форка, вам нужно будет настроить удаленный `вверх` в родительский репозиторий. +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. -[Как упоминалось ранее](#fork-the-repository-on-github), основной репозиторий ссылается `вверху` репозитория. Ваш форк называется репозиторием `origin`. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. -Вам нужна ссылка из локального клона на `исходный` репозиторий в дополнение к `происхождению` репозиторию. Это позволяет синхронизировать изменения из основного репозитория без необходимости повторного клонирования и форкирования. +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. -1. Изменить каталог на новый каталог freeCodeCamp: +1. Change directory to the new freeCodeCamp directory: ```console cd freeCodeCamp ``` -2. Добавить удаленную ссылку на основной репозиторий freeCodeCamp: +2. Add a remote reference to the main freeCodeCamp repository: ```console - git удалённое добавление вверх https://github.com/freeCodeCamp/freeCodeCamp.git + git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git ``` -3. Убедитесь, что конфигурация выглядит правильно: +3. Ensure the configuration looks correct: ```console - git удалённый -v + git remote -v ``` - Вывод должен выглядеть следующим образом: + The output should look something like below: ```console - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) - origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) - upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Запуск freeCodeCamp локально +## Running freeCodeCamp locally -Теперь, когда у вас есть локальная копия freeCodeCamp, вы можете выполнить эти инструкции, чтобы запустить его локально. Это позволит вам: +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: -- Просмотреть редактирование страниц в том виде, в каком они будут отображаться на платформе обучения. -- Работа над вопросами, связанными с пользовательским интерфейсом, и улучшениями. -- Отладка и исправление проблем с серверами приложений и клиентскими приложениями. +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. -Если вы столкнулись с проблемами, сначала выполните веб-поиск по вашей проблеме и посмотрите, что она уже была отвечена. Если вы не можете найти решение, пожалуйста, найдите на нашей [странице GitHub проблемы](https://github.com/freeCodeCamp/freeCodeCamp/issues) и сообщите о проблеме, если она еще не была зарегистрирована. +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -Как всегда, не стесняйтесь прыгать в наш [Чат участника на Gitter](https://gitter.im/FreeCodeCamp/Contributors) или [наш сервер Discord](https://discord.gg/pFspAhS), для быстрых запросов. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -> [!TIP] Вы можете пропустить запуск freeCodeCamp локально, если вы просто редактируете файлы. Например, выполнение перебазирования ``, или разрешение конфликтов `слияния`. +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > -> Вы всегда можете вернуться к этой части инструкций позже. Вам следует **только** пропустить этот шаг, если вам не нужно запускать приложения на компьютере. +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. > -> [Перейти к внесению изменений](#making-changes-locally). +> [Skip to making changes](#making-changes-locally). -### Настройка зависимостей +### Configuring dependencies -#### Шаг 1: Настройка файла переменной окружения +#### Step 1: Set up the environment variable file -По умолчанию ключи API и переменные окружения хранятся в файле `sample.env`. Этот файл должен быть скопирован в новый файл с именем `.env` , который динамически доступен во время шага установки. +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. ```console -# Создайте копию "sample.env" и назовите его ".env". -# Запустите его необходимыми ключами API и секретами: +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: # macOS / Linux -cp sample. nv .env +cp sample.env .env # Windows -копировать sample.env .env +copy sample.env .env ``` -Ключи в файле `.env` _не_ должны быть изменены для локального запуска приложения. Вы можете оставить скопированные значения по умолчанию из `sample.env` как есть. +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. -> [!TIP] Имейте в виду, если вы хотите использовать такие сервисы, как Auth0 или Algolia, вам придется получить свои собственные ключи API для этих сервисов и соответственно редактировать записи в `. nv` файл. +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. -#### Шаг 2: Установка зависимостей +#### Step 2: Install dependencies -Этот шаг установит зависимости, необходимые для запуска приложения: +This step will install the dependencies required for the application to run: ```console npm ci ``` -#### Шаг 3: Запуск MongoDB и инициализация базы данных +#### Step 3: Start MongoDB and seed the database -Прежде чем вы сможете запустить приложение локально, вам нужно запустить службу MongoDB. +Before you can run the application locally, you will need to start the MongoDB service. -> [!ПРИМЕЧАНИЕ] Если у вас не запущен MongoDB, отличный от настроек по умолчанию, URL, сохраненный как значение `MONGOHQ_URL` в `. nv` файл должен работать нормально. Если вы используете пользовательскую конфигурацию, измените это значение при необходимости. +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. -Запустить сервер MongoDB в отдельном терминале: +Start the MongoDB server in a separate terminal: -- На macOS & Ubuntu: +- On macOS & Ubuntu: ```console mongod ``` -- В Windows, вы должны указать полный путь к `двоичному файлу` +- On Windows, you must specify the full path to the `mongod` binary ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` - Обязательно замените `3.6` версией, которую вы установили + Make sure to replace `3.6` with the version you have installed -> [!TIP] Вы можете избегать запуска MongoDB каждый раз, установив его в качестве фоновой службы. Вы можете [узнать больше об этом в документации для вашей ОС](https://docs.mongodb.com/manual/administration/install-community/) +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) -Далее, давайте раздадим базу данных. На этом этапе мы запускаем команду ниже, которая заполняет сервер MongoDB некоторыми первоначальными наборами данных, которые необходимы службам. Они включают в себя несколько схем, в том числе и другие. +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. ```console -seed npm +npm run seed ``` -#### Шаг 4: Запустите клиентское приложение freeCodeCamp и API сервер +#### Step 4: Start the freeCodeCamp client application and API server -Теперь вы можете запустить сервер API и клиентские приложения. +You can now start up the API server and the client applications. ```console -разработка npm пробега +npm run develop ``` -Эта единственная команда запустит все сервисы, включая API сервер и клиентские приложения, доступные для работы. +This single command will fire up all the services, including the API server and the client applications available for you to work on. -> [!ПРИМЕЧАНИЕ] После готовности, откройте веб-браузер и **посетите **. Если приложение загружается, поздравляем – все готово! Теперь у вас есть копия бесплатной учебной платформы CodeCamp, работающей на локальной машине. +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. -> [!TIP] Сервер API обслуживает API по адресу `http://localhost:3000`. Приложение Gatsby обслуживает клиентское приложение на `http://localhost:8000` +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` -> Если вы посещаете , вы увидите доступные API. +> If you visit you should see the available APIs. -## Войти с помощью локального пользователя +## Sign in with a local user -Ваша локальная настройка автоматически заполняет локальный пользователь в базе данных. Нажатие кнопки `Войти` автоматически аутентифицирует вас в локальном приложении. +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. -Однако, доступ к странице пользовательского портфолио немного сложный. В процессе развития, Gatsby берет на себя обслуживание клиентских страниц и, следовательно, вы получите `404` страницу для пользовательского портфолио при работе локально. +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. -Просто нажмите кнопку **"Предварительный просмотр пользовательской страницы** переведет вас на правильную страницу. +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
            - Как войти при локальной работе (скриншот) + How to sign in when working locally (screenshot)
            - Как войти в систему при локальной работе + How to sign in when working locally
            -## Создание локальных изменений +## Making changes locally -Теперь вы можете внести изменения в файлы и подтвердить изменения в локальный клон вашего форка. +You can now make changes to files and commit your changes to your local clone of your fork. -Выполните следующие шаги: +Follow these steps: -1. Проверьте, что вы находитесь на `главной ветке`: +1. Validate that you are on the `master` branch: ```console git status ``` - Вы должны получить вывод следующим образом: + You should get an output like this: ```console - На ветке хозяин - Ваша ветка обновлена до версии 'origin/master'. + On branch master + Your branch is up-to-date with 'origin/master'. - ничего для фиксации, рабочий каталог очищает + nothing to commit, working directory clean ``` - Если вы не владеете мастер-каталогом или ваш рабочий каталог нечистый, исправьте все оставшиеся файлы/коммиты и просмотрите `мастер-`: + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: ```console - Мастер проверки git + git checkout master ``` -2. Синхронизировать последние изменения из freeCodeCamp вверху `мастер-` ветки к вашей локальной ветке: +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: - > [!ВНИМАНИЕ] Если у вас есть выдающийся запрос на слияние, который вы сделали из `главной ветки` вашего форка, вы потеряете их в конце этого шага. + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. > - > Перед выполнением этого шага вы должны убедиться, что запрос на слияние будет принят модератором. Чтобы избежать этого сценария, вы должны **всегда работать с веткой** , отличной от `master`. + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. - Этот шаг **синхронизирует последние изменения** с основного репозитория freeCodeCamp. Важно перебазировать свою ветку поверх последних `вверх/мастер` как можно чаще, чтобы избежать конфликтов позже. + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. - Обновите вашу локальную копию freeCodeCamp исходного репозитория: + Update your local copy of the freeCodeCamp upstream repository: ```console - git выгрузить вверх + git fetch upstream ``` - Тяжелый сброс вашей ветки мастера с помощью мастера freeCodeCamp: + Hard reset your master branch with the freeCodeCamp master: ```console - git сброс --hard upstream/master + git reset --hard upstream/master ``` - Отправьте вашу главную ветку в исходную среду, чтобы иметь чистую историю на ветке GitHub: + Push your master branch to your origin to have a clean history on your fork on GitHub: ```console - git толкайте отправителя --force + git push origin master --force ``` - Вы можете проверить соответствие вашего текущего мастера выше/мастер путём дифференцирования: + You can validate your current master matches the upstream/master by performing a diff: ```console - git diff вверх/мастер + git diff upstream/master ``` - Результирующий вывод должен быть пустым. + The resulting output should be empty. -3. Создать новую ветку: +3. Create a fresh new branch: - Работа над отдельной веткой по каждой проблеме поможет вам сохранить чистоту локальной копии работы. Вы никогда не должны работать на `мастер-`. Это почтит вашу копию FreeCodeCamp, и вам придется начать с свежих клонов или вилок. + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. - Проверьте, что вы на `мастер-` как объяснялось ранее, и оттуда ветка: + Check that you are on `master` as explained previously, and branch off from there: ```console git checkout -b fix/update-guide-for-xyz ``` - Имя вашей ветки должно начинаться с `fix/`, `feat/`, `docs/`, и т.д. Избегайте использования номеров замечаний в ветвях. Избегайте использования номеров замечаний в ветвях. Держите их короткими, значимыми и уникальными. + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. - Примерами хороших названий филиалов являются: + Some examples of good branch names are: ```md fix/update-challenges-for-react @@ -330,213 +330,217 @@ seed npm translate/add-spanish-basic-html ``` -4. Редактируйте страницы и работайте с кодом в Вашем любимом текстовом редакторе. +4. Edit pages and work on code in your favorite text editor. -5. После того, как вы будете довольны изменениями, вы должны запускать freeCodeCamp локально для просмотра изменений. +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. -6. Убедитесь, что вы исправили ошибки и проверьте форматирование ваших изменений. +6. Make sure you fix any errors and check the formatting of your changes. -7. Проверьте и подтвердите обновления файлов: +7. Check and confirm the files you are updating: ```console git status ``` - Это должно показывать список `неизмененных файлов` файлов, которые вы редактировали. + This should show a list of `unstaged` files that you have edited. ```console - В ветке feat/documentation - Ваша ветка актуальна с 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - Изменения: - (используйте "git reset HEAD ..." на unstage) + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) - изменено: CONTRIBUTING.md - изменено: docs/README.md - изменено: docs/how-to-setup-freecodecamp-locally.md - изменено: docs/how-to-work-on-guide-articles.md + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... ``` -8. Этап изменений и исправление: +8. Stage the changes and make a commit: - На этом шаге вы должны отметить только те файлы, которые вы отредактировали или добавили сами. Вы можете выполнить сброс и разрешить файлы, которые вы не намерены изменять, если это необходимо. + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. ```console - git добавить путь к/мю/изменен/файл.ext + git add path/to/my/changed/file.ext ``` - Или вы можете добавить все `неразбитые` файлы в промежуточную область: + Or you can add all the `unstaged` files to the staging area: ```console git add . ``` - Только файлы, которые были перемещены в промежуточную область, будут добавлены при создании коммита. + Only the files that were moved to the staging area will be added when you make a commit. ```console git status ``` - Выход: + Output: ```console - В ветке feat/documentation - Ваша ветка актуальна с 'upstream/feat/documentation'. + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. - d - изменено: docs/README.md - изменено: docs/how-to-setup-freecodecamp-locally. d - изменено: docs/how-to-work-on-guide-articles.md -... + Changes to be committed: + (use "git reset HEAD ..." to unstage) + + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md ``` - Теперь вы можете зафиксировать изменения с коротким сообщением так: + Now, you can commit your changes with a short message like so: ```console git commit -m "fix: my short commit message" ``` - Некоторые примеры: + Some examples: ```md - исправления : статья руководства по обновлению Java - для циклической функции - : добавьте статью руководства для alexa навыков + fix: update guide article for Java - for loop + feat: add guide article for alexa skills ``` - Дополнительно: + Optional: - Мы настоятельно рекомендуем делать обычные коммиты. Это хорошая практика, которую вы увидите на некоторых популярных репозиториях с открытым исходным кодом. Как разработчик, это побуждает вас следовать стандартным практикам. + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. - К некоторым примерам обычных обязательств относятся: + Some examples of conventional commit messages are: ```md - исправление: обновить статью HTML-руководства - исправлено: обновить сценарии сборки для функции Travis-CI - : добавить статью для JavaScript-hoisting - документа: обновить рекомендации + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines ``` - Держите эти короткие, не более 50 символов. Вы всегда можете добавить дополнительную информацию в описание сообщения. + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. - Это займет какое-либо дополнительное время, чем нестандартное сообщение, например 'update file' или 'add index.md' + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' - Вы можете узнать больше о том, почему использовать обычные коммиты [здесь](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). -9. Если вы понимаете, что вам нужно изменить файл или обновить сообщение о коммите, вы можете сделать это после редактирования файлов: +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: ```console - git commit --change + git commit --amend ``` - Это откроет текстовый редактор по умолчанию, например `nano` или `vi` , где вы можете редактировать заголовок сообщения фиксации и добавить/редактировать описание. + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. -10. Далее, вы можете перенести свои изменения в ваш форк: +10. Next, you can push your changes to your fork: ```console - git push ветка/имя отправителя-здесь + git push origin branch/name-here ``` -## Предложение Pull Request (PR) +## Proposing a Pull Request (PR) -После того, как вы зафиксировали изменения, проверьте здесь [, как открыть Pull Request](how-to-open-a-pull-request.md). +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). -## Ссылка на быстрые команды +## Quick commands reference -Быстрая ссылка на команды, которые вам понадобятся при работе на месте. +A quick reference to the commands that you will need when working locally. -| команда | описание | -| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `npm ci` | Установки / переустановка всех зависимостей и загрузок различных служб. | -| `seed npm` | Обрабатывает все вызовы markdown файлы и вставляет их в MongoDB. | -| `разработка npm пробега` | Запускает сервер API freeCodeCamp и клиентские приложения. | -| `тест npm` | Запустите все тесты JS в системе, включая клиент, сервер, lint и тестирование тестов. | -| `запуск npm тест:client` | Запустите клиентский тестовый набор. | -| `тест npm:curriculum` | Запустите набор тестов по учебной программе. | -| `npm запустить тест:учебный план --block='Основы HTML и HTML5'` | Тест конкретного блока. | -| `npm запуск test:curriculum --superblock='responsive-web-design'` | Тест конкретного SuperBlock. | -| `запуск npm теста-учебная программа полномасштабной работы` | Запустите тестовый набор для обучения, без исправления после первой ошибки | -| `запуск npm тест:server` | Запустите набор тестовых приложений. | -| `запуск npm e2e` | Для завершения тестов запустите Cypress find. | -| `очистка npm` | Удаление всех зависимостей и очистка кэша. | +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | -## Устранение проблем +## Troubleshooting -### Проблемы с установкой рекомендованных предпосылок +### Issues with installing the recommended prerequisites -Мы регулярно разрабатываем на последних или наиболее популярных операционных системах, таких как macOS 10.15 или позже, Ubuntu 18.04 или более поздней и Windows 10 (с WSL2). +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). -Рекомендуется изучить ваш конкретный вопрос о ресурсах, таких как Google, Stack Overflow и Stack Exchange. Есть шанс, что кто-то столкнулся с такой же проблемой и уже есть ответ на ваш конкретный запрос. +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. -Если вы используете другую ОС и/или до сих пор испытываете проблемы, см. [получение помощи](#getting-help). +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). -> [!ВНИМАНИЕ] +> [!WARNING] > -> Пожалуйста, не создайте GitHub проблемы для необходимых проблем. Они выходят за рамки этого проекта. +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. -### Проблемы с пользовательским интерфейсом, шрифтами, ошибками сборки и т.д. +### Issues with the UI, Fonts, build errors etc. -Если вы столкнулись с проблемами с интерфейсом, шрифтами или увидели ошибки сборки, то очистка может быть полезна: +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: ```console -запуск npm очистить +npm run clean npm ci -npm запустить seed -npm запустить develop +npm run seed +npm run develop ``` -ИЛИ +OR -Использовать ярлык +Use the shortcut ``` -npm запуск чисто-и-разработка +npm run clean-and-develop ``` -Если вы продолжаете сталкиваться с проблемами со сборкой, рекомендуется очистить рабочую область. +If you continue to face issues with the build, cleaning up the workspace is recommend. -Используйте `git clean` в interative режиме: +Use `git clean` in interative mode: ``` -git очистить -ifdX +git clean -ifdX ```
            - Как очистить git неотслеживаемые файлы (скриншот) + How to clean git untracked files (screenshot)
            - Как очистить git неотслеживаемые файлы + How to clean git untracked files
            -### Проблемы с API, Вход, Вызовы и т.д. +### Issues with API, Login, Challenge Submissions, etc. -Если вы не можете войти в систему, и вместо этого вы увидите баннер с сообщением об ошибке, о нем будет сообщено freeCodeCamp, убедитесь, что ваш локальный порт `3000` не используется другой программой. +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. -**На Linux / macOS / WSL на Windows - От терминала:** +**On Linux / macOS / WSL on Windows - From Terminal:** ```console netstat -ab | grep "3000" -tcp4 0 0 0.0.0:3000 ПОЛУЧЕНО +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` -**На Windows - с высочайшего уровня PowerShell:** +**On Windows - From Elevated PowerShell:** ```powershell -netstat -ab | Выборочная строка "3000" +netstat -ab | Select-String "3000" -TCP 0.0.0:3000 ПОЛУЧЕНИЕ +TCP 0.0.0.0:3000 DESKTOP LISTENING ``` -### Проблемы установки зависимостей +### Issues installing dependencies -Если вы получаете ошибки при установке зависимостей, Убедитесь, что вы не находитесь в ограниченной сети или настройки брандмауэра не мешают вам получить доступ к ресурсам. +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. -Первая настройка может занять некоторое время в зависимости от вашей пропускной способности сети. Будьте терпеливы, и если вы все еще запомним с помощью GitPod вместо автономной настройки. +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. -## Получение помощи +## Getting Help -Если вы застряли и нуждаетесь в помощи, Сообщите нам, попросив в категории ["Участники" на нашем форуме](https://forum.freecodecamp.org/c/contributors) или [чат авторов](https://gitter.im/FreeCodeCamp/Contributors) на Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Возникла ошибка в консоли вашего браузера или Bash / Terminal / Command Line которая поможет идентифицировать проблему. Предоставьте это сообщение об ошибке в описании проблемы, чтобы другие могли легко идентифицировать проблему и помочь вам найти решение. +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Russian/how-to-setup-wsl.md b/docs/i18n/Russian/how-to-setup-wsl.md index c59bfd6044..68bce6dde6 100644 --- a/docs/i18n/Russian/how-to-setup-wsl.md +++ b/docs/i18n/Russian/how-to-setup-wsl.md @@ -1,80 +1,80 @@ -# Настройте freeCodeCamp в подсистеме Windows для Linux (WSL) +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) -> [!ПРИМЕЧАНИЕ] Прежде чем следовать этим инструкциям, убедитесь, что ваша система соответствует требованиям +> [!NOTE] Before you follow these instructions make sure your system meets the requirements > -> **WSL 2**: Windows 10 64-bit (Версия 2004, Build 19041 или выше) - доступно для всех дистрибутивов, включая Windows 10 Home. +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. > -> **Docker Desktop для Windows**: Смотрите соответствующие требования к [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) и [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) -Это руководство описывает некоторые общие шаги с настройкой WSL2. После того, как будут решены некоторые общие проблемы с WSL2, вы можете следовать нашему руководству по локальной настройке для работы с бесплатным CodeCamp на Windows, в котором установлен дистрибутив WSL, как Ubuntu. +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. -## Включить WSL +## Enable WSL -Следуйте инструкциям на [официальной документации](https://docs.microsoft.com/en-us/windows/wsl/install-win10) для установки WSL1, а затем обновитесь до WSL2. +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. ## Install Ubuntu -1. Мы рекомендуем использовать Ubuntu-18.04 или выше с WSL2. +1. We recommended using Ubuntu-18.04 or above with WSL2. - > [!ПРИМЕЧАНИЕ] + > [!NOTE] > - > В то время как вы можете использовать другие дистрибутивы, не основанные на дебитах, все они приходят со своими собственными привилегиями и выходят за рамки этого руководства. + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. -2. Обновить зависимости для ОС +2. Update the dependencies for the OS ```console sudo apt update sudo apt upgrade -y - # очистка + # cleanup sudo apt autoremove -y ``` -## Настроить Git +## Set up Git -Git поставляется с предустановленным Ubuntu 18.04, убедитесь, что ваша версия Git с `git --version`. +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. ```output ~ - git --version -git версии 2.25.1 +❯ git --version +git version 2.25.1 ``` -(Необязательно, но рекомендуется) Теперь вы можете [настроить клавиши ssh](https://help.github.com/articles/generating-an-ssh-key) с помощью GitHub. +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. -## Установка редактора кода +## Installing a Code Editor -Мы настоятельно рекомендуем установить [Visual Studio Code](https://code.visualstudio.com) на Windows 10. Она имеет хорошую поддержку WSL и автоматически устанавливает все необходимые расширения на ваш WSL дистрибутив. +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. -По сути, вы будете редактировать и хранить свой код на Ubuntu-18.04 с VS кодом, установленным в Windows. +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. -## Установка Docker Desktop +## Installing Docker Desktop -**Docker Desktop для Windows** позволяет устанавливать и запускать базы данных и сервисы MongoDB, NGINX и т.д. Это полезно во избежание общих проблем с установкой MongoDB или других служб непосредственно на Windows или WSL2. Это полезно во избежание общих проблем с установкой MongoDB или других служб непосредственно на Windows или WSL2. +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. -Следуйте инструкциям на [официальной документации](https://docs.docker.com/docker-for-windows/install) и установите Docker Desktop для вашего дистрибутива Windows. +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. -Существует несколько минимальных требований к оборудованию для наилучшего использования. +There are some minimum hardware requirements for the best experience. -## Настройка Docker Desktop для WSL +## Configure Docker Desktop for WSL -После установки Docker Desktop [следуйте этим инструкциям](https://docs.docker.com/docker-for-windows/wsl) и настройте его на использование установки Ubuntu-18.04 в качестве бэкэнда. +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. -Это делает так, что контейнеры запускаются на WSL стороне вместо работы с Windows. Вы сможете получить доступ к сервисам через `http://localhost` в Windows и Ubuntu. +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. -## Установить MongoDB из Docker Hub +## Install MongoDB from Docker Hub -После настройки Docker Desktop для работы с WSL2, выполните следующие шаги для запуска сервиса MongoDB: +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: -1. Запустите новый Ubuntu-18.04 терминал +1. Launch a new Ubuntu-18.04 terminal -2. Потяните `MongoDB 3.6` из докерхаба +2. Pull `MongoDB 3.6` from dockerhub ```console docker pull mongo:3 ``` -3. Запустите сервис MongoDB в порту `27017`и настройте его автоматически при перезапуске системы +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts ```console docker run -it \ @@ -85,45 +85,45 @@ git версии 2.25.1 -d mongo:3 ``` -4. Теперь вы можете получить доступ к службе в Windows или Ubuntu на `mongodb://localhost:27017`. +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. -## Установка Node.js и npm +## Installing Node.js and npm -Мы рекомендуем вам установить LTS релиз для Node.js с помощью менеджера версий узла - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). -После установки используйте эти команды для установки и использования версии Node.js при необходимости +Once installed use these commands to install and use the Node.js version as needed ```console nvm install --lts -# ИЛИ +# OR # nvm install nvm install 14 -# Использование +# Usage # nvm use nvm use 12 ``` -Node.js поставляется в комплекте с `npm`, вы можете обновить до последних версий `npm` с: +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: ```console npm install -g npm@latest ``` -## Настроить freeCodeCamp локально +## Set up freeCodeCamp locally -Теперь, когда вы установили предварительные требования, следуйте [нашему локальному руководству по настройке](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) для клонирования, установки и установки freeCodeCamp локально на вашей машине. +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. -> [!ВНИМАНИЕ] +> [!WARNING] > -> Обратите внимание, на данный момент настройка тестов Cypress (и связанных с ними интерфейсов) находится в процессе работы. Вы все еще должны иметь возможность работать на большей части базы кода. +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. -## Полезные ссылки +## Useful Links -- [WSL2 Dev установка с Ubuntu 20.04, Node.js, MongoDB, VS Code и Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - статья Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) -- Часто задаваемые вопросы: - - [Подсистема Windows для Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) - - [Рабочий стол Docker для Windows](https://docs.docker.com/docker-for-windows/faqs) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Russian/how-to-use-docker-on-windows-home.md b/docs/i18n/Russian/how-to-use-docker-on-windows-home.md index aa8d9bcceb..85ac65a3e3 100644 --- a/docs/i18n/Russian/how-to-use-docker-on-windows-home.md +++ b/docs/i18n/Russian/how-to-use-docker-on-windows-home.md @@ -1,15 +1,15 @@ -# Как использовать Docker на Windows Home +# How to use Docker on Windows Home -Есть несколько проблем, которые нужно избежать при установке docker на домашнем компьютере. Прежде всего, вам необходимо использовать [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) в качестве администратора. К сожалению, Windows Home не поддерживает Docker для рабочего стола Windows, поэтому вместо этого необходимо использовать инструменты. Он должен быть запущен как Администратор, так как установка использует символьные ссылки, которые не могут быть созданы иначе. +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. -После установки панели инструментов запустите Docker Quickstart Terminal как администратор. Это создаст виртуальную машину `по умолчанию` , если она не существует. После этого закройте терминал и откройте VirtualBox (снова как Администратор). Вы должны увидеть машину `по умолчанию`. Сайт достаточно интенсивный, поэтому остановите виртуальную машину и увеличьте настройки так, как вы можете - в частности, память. Подтверждением является работа с 4ГБ рама. +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. -После того, как вы счастливы, что Docker работает, клонирует репозиторий freeCodeCamp в директорию внутри `C:\Users`. Эти каталоги предоставляют Docker доступ к локальным каталогам, которые ему нужны во время установки. +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. -Если вы видите такие сообщения +If you see messages like ```shell -bash: change_volumes_owner.sh: Нет такого файла или каталога +bash: change_volumes_owner.sh: No such file or directory ``` -когда вы `npm запускаете docker:init` это, скорее всего, является виновным. +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Russian/how-to-work-on-coding-challenges.md b/docs/i18n/Russian/how-to-work-on-coding-challenges.md index 961a759f76..2b95545e91 100644 --- a/docs/i18n/Russian/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Russian/how-to-work-on-coding-challenges.md @@ -1,388 +1,470 @@ -# Как работать над вызовами кодирования +# How to work on coding challenges -Наша цель состоит в том, чтобы развить интересный и понятный опыт интерактивного обучения. +Our goal is to develop a fun and clear interactive learning experience. -Проектирование интерактивных задач кодирования является сложным делом. Было бы намного проще написать длительное объяснение или создать видео учебник, и есть место для тех, кто находится на Средней и YouTube. Тем не менее, для нашей основной учебной программы мы придерживаемся того, что работает лучше всего для большинства людей - полностью интерактивный опыт в видеоигре. +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. -Создание этих вызовов требует огромного творческого потенциала и внимания к деталям. Достаточно много помощи. Вы будете получать поддержку со стороны целого коллектива участников, которым вы можете отказаться от идей и демо своих испытаний. Оставайтесь активными в [комнате участников](https://gitter.im/freecodecamp/contributors) и задайте много вопросов. +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/). -С вашей помощью мы можем разработать интерактивный учебный план, который поможет миллионам людей научиться программировать в течение многих лет. +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. -Контент для каждого испытания хранится в собственном файле markdown. Этот файл markdown позже преобразуется в HTML, используя наши инструменты для создания интерактивных веб-страниц. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). -Все содержимое учебника свободно CodeCamp.org можно найти в каталоге [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges). +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 own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. -Прежде чем работать в учебном плане, вам нужно будет создать инструмент, который поможет вам проверить изменения. Вы можете использовать любую опцию из нижеперечисленных вариантов: +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. -- Вы можете [настроить freeCodeCamp локально](how-to-setup-freecodecamp-locally.md). Это **настоятельно рекомендуется** для регулярных/повторных взносов. Эта настройка позволяет вам работать и тестировать изменения. -- Используйте Gitpod, бесплатную среду онлайн dev. Нажав на кнопку ниже, вы запустите готовое к коду окружение для свободного CodeCamp в вашем браузере. Это занимает всего несколько минут. +## Set up the tooling for the curriculum - [![Открыть в Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: -- Отредактируйте файлы на интерфейсе GitHub, нажав на значок карандаша для соответствующего файла. Хотя это самый быстрый способ, он **не рекомендуется**, потому что вы не можете проверить ваши изменения на GitHub. Если наши сопровождающие приходят к выводу, что изменения, внесенные вами, должны быть протестированы локально, то вам нужно будет следовать вышеуказанным методам снова. +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. -## Шаблон вызова + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -Ниже приведен шаблон того, как выглядят файлы markdown вызова. Чтобы увидеть упорядоченный шаблон, мы примем его на [ниже](#upcoming-challenge-template). +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). ````md --- -id: Уникальный идентификатор (буквенно-цифровый, MongoDB_id) +id: Unique identifier (alphanumerical, MongoDB_id) title: Challenge Title challengeType: 0 videoUrl: 'url of video explanation' --- -## Описание +## Description
            -Описание вызова и что необходимо для прохождения +A Description of the challenge and what is required to pass
            -## Инструкции +## Instructions
            -Инструкции о том, что именно нужно сделать. +Instructions about what exactly needs to be done.
            -## Тесты +## Tests
            ```yml tests: - - текст: Должен возвращать "foo" - тестовая строка: "Строковая функция, возможно использование Chai asserts" + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' ````
            -## Семена вызова +## Challenge Seed
            ```{ext} -код, отображаемый в редакторе по умолчанию. +Code displayed in the editor by default. -Это необходимый раздел для вызова. +This is a required section for the challenge. ```
            -### Перед тестом +### Before Test
            +```{ext} +Optional Test setup code. +``` + +
            + +### After Test + +
            + ```{ext} Optional Test tear down code. ```
            -### После теста - -
            - -```{ext} -Дополнительный тестовый код. -``` - -
            -
            -## Решение +## Solution
            ```{ext} -// требуется решение +// solution required ```
            ```` -> [!ПРИМЕЧАНИЕ] +> [!NOTE] > -> 1. В вышеуказанных разделах примеры `{ext}`: +> 1. In the above sections, examples of `{ext}` are: > > - `html` - HTML/CSS > - `js` - JavaScript > - `jsx` - JSX > -> 2. Для раздела `Tests` выше `text` и `testString` должны быть действительными YAML строками. `testString` может быть строчной функцией или выражением, с помощью которого можно утверждать Chai. +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. -## Многочисленные вызовы +## Numbering Challenges -Каждое испытание требует `id`. Если вы не указали один, то MongoDB создаст новый случайный тип при сохранении данных; Однако, мы не хотим, чтобы это делали, поскольку мы хотим, чтобы идентификаторы вызовов были последовательными в различных средах (поэтапно, , много различных разработчиков и т.п.). +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). -Чтобы сгенерировать новый в оболочке (предполагая, что MongoDB работает отдельно): +To generate a new one in a shell (assuming MongoDB is running separately): -1. Запустите команду «mongo». -2. Запустите команду `ObjectId()`. +1. Run `mongo` command. +2. Run `ObjectId()` command. -Например: +For example: ```bash $ mongo -Оболочка MongoDB версии v3.6.1 -подключающаяся к mongodb://127.0.0.1:27017 -MongoDB сервер версия: 3.4.10 +MongoDB shell version v3.6.1 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 ... $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -Результатом является новая помощь, например `5a474d78df58bafeb35d34` выше. +The result is a new id, for example `5a474d78df58bafeb3535d34` above. -После того, как у вас есть свой идентификатор, поместите его в файл markdown в качестве идентификатора `в верхней части` , напр. +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. ```yml --- -id: 5a474d78df58bafeb35d34 +id: 5a474d78df58bafeb3535d34 title: Challenge Title ``` -## Задачи в области именования +## Naming challenges -Тяжелое назование. Мы сделали это проще, введя некоторые ограничения. +Naming things is hard. We've made it easier by imposing some constraints. -Все названия заданий должны быть явными и следовать этой схеме: +All challenge titles should be explicit and should follow this pattern: -\[verb\]\[положение объекта\] +\[verb\]\[object clause\] -Вот несколько примеров названий вызовов: +Here are some example challenge names: -- Используйте нотацию по часовой стрелке для указания отступа элемента -- Конденсирующие массивы с .reduce -- Используйте нотации скобки, чтобы найти первый символ в строке +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String -## Описания/инструкции для вызова +## Challenge descriptions/instructions -Приговоры должны быть четкими и краткими с минимальным жаргоном. If used, jargon should be immediately defined in plain English. +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. -Коротко хранить абзацы (около 1-4 предложений). Люди чаще читают несколько коротких абзацев, чем стенка текста. +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. -Текст вызова должен использовать второго человека ("вы"), чтобы помочь ему разговорный звук. Таким образом текст и инструкции, как представляется, непосредственно говорят в кампере, работая с этой проблемой. Постарайтесь не использовать первого человека ("Я", "мы", "да" и "нас"). +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). -Не использовать исходящие ссылки. Они прерывают поток. В ходе этих вызовов лагерям никогда не придется ничего делать в Google. Если есть ресурсы, которые вы считаете, что лагеря выиграют от них, добавьте их в статью, посвященную руководству по вызову. +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. -Вы можете добавить диаграммы в случае крайней необходимости. +You can add diagrams if absolutely necessary. -Не используйте эмодзи или смайлики в испытаниях. Free CodeCamp имеет глобальное сообщество, и культурное значение эмодзи или эмоций может быть различным по всему миру. Также, emojis может показаться по-разному на разных системах. +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. -Надлежащие существительные должны использовать правильную заглавную букву, когда это возможно. Ниже приведен список слов, которые должны появиться в вызовах. +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. -- JavaScript (заглавные буквы в "J" и "S" и без аббревиатур) +- JavaScript (capital letters in "J" and "S" and no abbreviations) - Node.js -- Разработка фронт-энда (прилагательное форма с тире) - это когда вы работаете на передней части (существительная форма без тире). То же самое относится и к "обратно конца", "полный стек", и многие другие составные термины. +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. -### 2-минутное правило +### The 2-minute rule -Каждый вызов должен быть разрешен в течение 120 секунд родным англичанином, который завершил задания перед ним. Это включает в себя время, необходимое для прочтения направлений/инструкций для понимания кода сиденья, Напишите свой собственный код и получите все тесты для прохождения. +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. -Если для завершения испытания потребуется более двух минут, у вас есть два варианта: +If it takes longer than two minutes to complete the challenge, you have two options: -- Упростить вызов, или -- Разделить задачу на два вызова. +- Simplify the challenge, or +- Split the challenge into two challenges. -2-минутное правило вынуждает вас, дизайнер вызовов, чтобы сделать ваши указания четкими, ваш seed код и ваши тесты прямо вперед. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. -Мы отслеживаем, сколько времени требуется для решения изменений и использования этой информации для определения задач, которые необходимо упростить или разбить. +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. -### Модульность +### Modularity -Каждое задание должно обучать именно одному понятию, и это понятие должно быть видно из названия вызова. +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. -Мы можем укрепить ранее покрытые концепции путем повторения и вариаций - например, вносит h1 элементы в один вызов, затем h3 элементы позже. +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. -Наша цель состоит в том, чтобы иметь тысячи 2-минутных испытаний. Они могут объединять усилия и повторять ранее охваченные концепции. +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. -### Форматирование вызова +### Formatting challenge text -Ниже приведены конкретные руководящие принципы для форматирования текста и примеров: +Here are specific formatting guidelines for challenge text and examples: -- Ключевые слова языка находятся в тегах ``. Например, имена тегов HTML или имена свойств CSS -- Первый экземпляр ключевого слова при его определении или общие ключевые слова (т.е. "object" или "immutable") находятся в `` тегов -- Ссылки на части кода (т.е. функция, метод или имена переменных) должны быть завернуты в `` тегов. Пример ниже: -- Используйте parseInt для преобразования переменной realNumber в целое число. -- Блоки многострочного кода **должны предшествовать пустой строкой**. Следующая строка должна начинаться с трех backtick'ов, за которыми следует немедленно один из [поддерживаемых языков](https://prismjs.com/#supported-languages). Чтобы заполнить блок кода, вы должны начать новую строку, в которой есть только три backticks и **еще одна пустая строка**. **Примечание:** Если вы собираетесь использовать код примера в YAML, используйте `yaml` вместо `yml` для языка справа от обратной связи. +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -Пример ниже: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md -Ниже приведен пример кода: +The following is an example of code: ```{language} -[ВАШ КОД ЗДЕСЬ] +[YOUR CODE HERE] ```` ```` -- Дополнительная информация в виде заметки должна быть отформатирована `Примечание: Отказ от текста заметки... - При необходимости нескольких заметок, затем перечислите все заметки в отдельных предложениях, используя формат `Примечания: Текст первой заметки. Второй текст заметки. -- Используйте двойные кавычки, где это применимо +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable -## Письменные тесты +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. -Испытания должны иметь минимальное количество тестов, необходимых для проверки понимания кемпером. +## Writing tests -Наша цель заключается в том, чтобы сообщить единую точку, которую задача пытается преподавать, и проверить, что они поняли этот момент. +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. -Тестирование вызовов может использовать библиотеки для установки Node.js и Chai.js. Также, при необходимости, к переменной `code` можно получить доступ созданный пользователем код. +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. -## Форматирование кода seed seed +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. -Ниже приведены конкретные рекомендации по форматированию кода seed задания: +## Formatting seed code -- Используйте два пробела для отступа -- JavaScript операторы заканчиваются точкой с точкой с запятой -- используйте двойные кавычки, где это применимо -- Произведенные комментарии должны иметь пробел между символами комментария и самими комментариями +Here are specific formatting guidelines for the challenge seed code: - `// Исправьте эту строку` +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable -## Подсказки и решения +### Seed code comments -Каждое задание имеет кнопку `Получить Hint`, , чтобы пользователь мог получить доступ к любым подсказкам/решениям, которые были созданы для вызова. Подсказки по учебному плану/темы находятся на [нашем форуме](https://forum.freecodecamp.org/c/guide) в категории `Guide`. +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. -Если вы нашли проблему с подсказками или решениями вызова, вы можете внести предложения в [категорию участников](https://forum.freecodecamp.org/c/contributors) на форуме. Модераторы и пользователи с уровнем доверия 3 рассмотрят комментарии и решат, включить ли изменения в соответствующую тему подсказки/решения. +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -### Добавление новых подсказок/тем решений +Example of valid single line JavaScript comment: -Пройдите следующие шаги при добавлении новых подсказок/связанных с решениями темы. +```js +// Only change code below this line +```` -1. Начните с тех же шагов для создания новой темы, но оставьте отзыв о следующей для создания заголовка. -2. Название темы должно начинаться с `freeCodeCamp Challenge Guide: `, совпадающий с фактическим названием учебного задания. Например, если вызов называется "`Chunky Monkey`", название темы будет "`freeCodeCamp Challenge Guide: Chunky Monkey`". -3. `camperbot` должен быть владельцем этих тем/записей, поэтому вам нужно будет запросить администратора для смены владельца основного сообщения на `camperbot`. -4. После создания новой темы создается ID темы форума. Она находится в конце URL темы форума. Этот идентификатор должен быть добавлен на первый план файла задания в учебном плане через нормальный процесс запроса на слияние для кнопки `Получить хинт` для связи с темой. +Example of a valid CSS comment: -### Руководящие принципы для содержания подсказок и тем решений +```js +/* Only change code above this line */ +``` -При предложении решения для задания учебного плана с темой Руководства, необходимо добавить полный код. Это включает в себя все исходные коды семенного кода, а также любые изменения, необходимые для прохождения всех испытательных испытаний. Следующий шаблон должен использоваться при создании новых подсказок/тем решений: +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. -``md -# Вызовите Имя Здесь +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
            + { /* Change code below this line */ } + + { /* Change code above this line */ } +

            {this.state.text}

            +
            + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md +# Challenge Name Goes Here --- -## Пояснение проблемы +## Problem Explanation -Таким образом, что нужно сделать без повторного описания задачи и/или инструкций. Это опциональная секция +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section -#### Связанные ссылки +#### Relevant Links -- [Текст ссылки](link_url_goes_here) -- [Текст ссылки](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here) --- -## Подсказки +## Hints -### Подсказка 1 +### Hint 1 -Подсказка идет +Hint goes here -### Подсказка 2 +### Hint 2 -Подсказка идет +Hint goes here --- -## Разрешения +## Solutions -
            Решение 1 (Нажмите, чтобы Показать/Скрыть) +
            Solution 1 (Click to Show/Hide) ```js function myFunc() { - консоль. og('Привет мир!'); + console.log('Hello World!'); } ```` -#### Объяснение кода +#### Code Explanation -- Здесь пояснение кода -- Здесь пояснение кода +- Code explanation goes here +- Code explanation goes here -#### Соответствующие ссылки +#### Relevant Links -- [Текст ссылки](link_url_goes_here) -- [Текст ссылки](link_url_goes_here) +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here)
            ```` -## Испытания на тестирование +## Testing Challenges -Прежде чем вы [создаете запрос на слияние](how-to-open-a-pull-request. г) для ваших изменений, вы должны подтвердить, что внесенные вами изменения не случайно вызывают проблем с вызовом. +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. -1. Чтобы проверить все вызовы, запустите команду ниже из корневого каталога +1. To test all challenges run the below command from the root directory ```` -тест npm:curriculum +npm run test:curriculum ``` -2. Вы также можете протестировать блок или суперблок испытаний с помощью этих команд +2. You can also test a block or a superblock of challenges with these commands ``` -npm запустить тест:учебный план --block='Основы HTML и HTML5' +npm run test:curriculum --block='Basic HTML and HTML5' ``` ``` -npm запуск test:curriculum --superblock=отзывчивый web-дизайн +npm run test:curriculum --superblock=responsive-web-design ``` -Вы также можете самостоятельно протестировать одно испытание, выполнив следующие шаги: +You are also able to test one challenge individually by performing the following steps: -1. Переключиться на папку «Учебный план»: +1. Switch to the `curriculum` directory: ``` - cd учебный план + cd curriculum ``` -2. Выполните следующие действия для каждого файла вызова, для которого вы изменили: +2. Run the following for each challenge file for which you have changed: ``` - тест npm -- -g 'полный английский заголовок вызова' + npm run test -- -g 'the full English title of the challenge' ``` -Как только вы подтвердили, что каждое испытание, которое вы проработали при прохождении тестов, [пожалуйста, создайте запрос на слияние](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). > [!TIP] -> Вы можете установить переменную окружения `LOCALE` в `.env` на язык испытания, который необходимо проверить. +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. > -> Принятые значения являются `english` и `chinese`, а `english` устанавливается по умолчанию. +> The currently accepted values are `english` and `chinese`, with `english` being set by default. -## Шаблон предстоящего вызова +## Upcoming Challenge Template -Шаблон испытания в процессе обновления до более чистой и менее вложенной структуры. Это не было полностью завершено, но следующие должны быть близки к окончательной структуре: +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: -``mdx +````mdx --- -id: Уникальный идентификатор (буквенно-цифровый, MongoDB_id) +id: Unique identifier (alphanumerical, MongoDB_id) title: 'Challenge Title' -challengeType: Integer, defined in `client/utils/challengeTypes. s` +challengeType: Integer, defined in `client/utils/challengeTypes.js` videoUrl: 'url of video explanation' forumTopicId: 12345 --- -import Script from './script. dx'; +import Script from './script.mdx'; ## --step-description-- -Текст описания, в markdown +Description text, in markdown ```html
            - пример кода + example code
            ``` @@ -390,48 +472,48 @@ import Script from './script. dx'; ![test-id-1] -Имеется произвольное количество трофеев идентификаторов, инструкций (в markdown) и блоков кода. +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. ```js -Код для теста +Code for test one ``` ![test-id-2] -Больше инструкций в синтаксисе markdown +More instructions in markdown syntax ```js -Больше кода +More code ``` ## --step-seed-- -### --pre-user-код-- +### --before-user-code-- ```lang -Код вычисляется перед пользователем +Code evaluated before the user’s ``` -### --after-user-код-- +### --after-user-code-- ```lang -Код оценивается после пользователей, и перед тестами +Code evaluated after the user’s, and just before the tests ``` -### --seed-содержимое-- +### --seed-content-- ![index-html] ```html -Некоторые html +Some html ``` ```css -Некоторые css +Some css ``` ```js -Некоторые js +Some js ``` ![index-js] @@ -446,17 +528,17 @@ import Script from './script. dx';

            - Точно так же, как семена + Exactly the same as the seeds section

            - --next-solution-маркер + --next-solution-marker

            - То же самое + Same again

            @@ -470,29 +552,29 @@ import Script from './script. dx';

            - Вопрос будет здесь (используется только для видеоиспытаний) + The question would go here (only used for video challenges)

            - --answers-маркера-- + --answers-marker--

            - Ответ 1 + Answer 1


            - Ответ 2 + Answer 2


            - Ответ 2 + More answers

            @@ -512,13 +594,13 @@ import Script from './script. dx';

            - Полезные ссылки + Useful Links

            - Создание и редактирование вызовов: + Creating and Editing Challenges:

            @@ -526,14 +608,14 @@ import Script from './script. dx';
            1. - типы вызовов - что означает числовый тип задания (перечислить). + Challenge types - what the numeric challenge type values mean (enum).

            2. - Вклад в FreeCodeCamp - написание ES6 испытаний - видео, следующего за Ethan Arrowood , поскольку он вносит вклад в старую версию учебного плана. + Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.

            3. diff --git a/docs/i18n/Russian/how-to-work-on-the-docs-theme.md b/docs/i18n/Russian/how-to-work-on-the-docs-theme.md index 715205525c..bf8bf8f6c9 100644 --- a/docs/i18n/Russian/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Russian/how-to-work-on-the-docs-theme.md @@ -1,40 +1,54 @@ -# Как работать с темой документации +# How to work on the docs theme -> [!ПРИМЕЧАНИЕ] Быстрое напоминание о том, что вам ничего не нужно устанавливать для работы с содержимым сайта документации. +> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site. > -> Для работы над рекомендациями по внесению вклада вы можете редактировать или добавлять файлы в `документацию` каталога [доступен здесь](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Когда ваши изменения объединены, они будут автоматически доступны на сайте документации. +> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site. -## Структура досье сайта +## Structure of the docs website -Сайт сгенерирован с помощью [`docsify`](https://docsify.js.org), и сервируется с помощью страниц GitHub. +The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages. -Обычно вам не нужно изменять настройки или создавать сайт локально. Если вас интересует, то вот как это работает: +Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works: -- Источник домашней страницы для этого сайта доступен в [`docs/index.html`](index.html). -- Мы обслуживаем этот файл как SPA, используя `docsify` и GitHub страницы. -- `docsify` script generates the content of `markdown` files in `docs` directory on demand. -- Главная страница создается на [`_coverpage.md`](_coverpage.md). -- боковая навигация генерируется из [`_sidebar.md`](_sidebar.md) +- The homepage's source for this site is available in [`docs/index.html`](index.html). +- We serve this file as a SPA using `docsify` and GitHub Pages. +- The `docsify` script generates the content of `markdown` files in `docs` directory on demand. +- The homepage is generated from the [`_coverpage.md`](_coverpage.md). +- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -## Обслуживание сайта документации локально +## Serving the documentation site locally -Свободный код для клонирования: +Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` -Установить `docsify`: +Install `docsify`: -```sh +```console npm install -g docsify ``` -и отправьте каталог `/docs` +and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Кроме того, если вы установили freeCodeCamp локально (см. руководство по локальной настройке), мы объединяем CLI с инструментами разработки, так что вы можете запустить `npm запустить docs:serve` из корня репозитория. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Russian/how-to-work-on-the-news-theme.md b/docs/i18n/Russian/how-to-work-on-the-news-theme.md index 665b22e5f9..51ad62ccf0 100644 --- a/docs/i18n/Russian/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Russian/how-to-work-on-the-news-theme.md @@ -1,8 +1,99 @@ - https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md \ No newline at end of file +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). + +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Russian/index.md b/docs/i18n/Russian/index.md index 9300384965..1c4add4ab3 100644 --- a/docs/i18n/Russian/index.md +++ b/docs/i18n/Russian/index.md @@ -1,45 +1,43 @@ -Сообщество [freeCodeCamp.org](https://freecodecamp.org) возможно благодаря тысячам таких добровольцев, как вы. Мы рады приветствовать Вас на борту. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!ПРИМЕЧАНИЕ] Прежде чем продолжить, пожалуйста, зайдите 2 минуты, чтобы прочитать наш [Кодекс поведения](https://www.freecodecamp.org/code-of-conduct). Мы строго соблюдаем его во всем нашем сообществе. Мы хотим, чтобы вклад в бесплатную работу CodeCamp.org был безопасным и инклюзивным для всех. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. -Счастливый вклад. +Happy contributing. -Добро пожаловать: +You are welcome to: -- Создавать, обновлять и исправлять ошибки в наших [задачах по кодированию](#coding-challenges). -- Помогите нам исправить ошибки в бесплатной платформе [для обучения](#learning-platform). -- _(Приближается скоро)_ Помогите нам перевести freeCodeCamp.org на мировые языки. +- Create, update and fix bugs in our [curriculum](#curriculum). +- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). +- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Есть вопросы? Зайдите на страницу [этих вопросов](/FAQ.md) , где мы ответим на несколько общих вопросов о вкладе. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Испытания программирования +## Curriculum -Все наши задачи в области кодирования курируют сообщество, принося экспертные знания от таких волонтеров, как вы. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -Вы можете помочь расширить их и сделать их слова лучше. Вы также можете обновить пользовательские истории, чтобы объяснить концепцию лучше или удалить избыточные и улучшить испытательные тесты, чтобы сделать их более точно тестировать код людей. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**Если вы заинтересованы в улучшении этих вызовов кодирования, вы можете [как работать с задачами кодирования](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** -## Платформа обучения +## Learning Platform -Наша учебная платформа работает на современном JavaScript-стеке. Он имеет различные компоненты, инструменты и библиотеки, включая, но не ограничиваясь этим, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, и многое другое. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -В целом, +Broadly, we use -- У нас есть сервер API на основе Node.js. -- Набор клиентских приложений на основе React. -- Скрипт, который мы используем для оценки наших сторонних проектов. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Внесение вклада в это требует некоторого понимания API, ES6 Syntax, и много любопытства. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -По сути, мы ожидаем базовое знакомство с некоторыми из вышеупомянутых технологий, инструментов и библиотек. При этом вы не обязаны быть экспертом по ним для того, чтобы внести свой вклад. +If you want to help us improve our codebase... -**Если вы хотите помочь нам улучшить нашу кодовую базу, вы можете использовать Gitpod, бесплатную среду онлайн dev** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** -[![Открыть в Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Начинает готовое к исходному коду окружение для freeCodeCamp в вашем браузере.) +Or you can... -ИЛИ - -**вы можете [настроить freeCodeCamp локально](how-to-setup-freecodecamp-locally.md) на вашей машине.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Russian/moderator-handbook.md b/docs/i18n/Russian/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Russian/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
              + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Serbian/FAQ.md b/docs/i18n/Serbian/FAQ.md index be0299b973..e6ef4fed0d 100644 --- a/docs/i18n/Serbian/FAQ.md +++ b/docs/i18n/Serbian/FAQ.md @@ -1,24 +1,12 @@ -### I am new to GitHub and Open Source, where should I start? +### I am new to GitHub and Open Source. Where should I start? -Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. ### Can I translate freeCodeCamp's curriculum? -We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts. - -We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese. - -**Why are you focusing on Chinese curriculum first?** - -China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n. - -We will focus on Latin America as the demographic region for Portuguese and Spanish. - -We do not have any plans for i18n to any other languages other than the above for the foreseeable future. - -We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. ### How can I report a new bug? @@ -26,19 +14,17 @@ If you think you've found a bug, first read the ["Help I've Found a Bug"](https: If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. ### How can I report a security issue? Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### I am a student, can I or our team work on a feature for academic credits? +### I am a student. Can I work on a feature for academic credits? -Yes, sure. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all. - -We request you to plan ahead and work on a feature with this in mind. +We request you to plan ahead and work on code contributions with this in mind. ### What do these different labels that are tagged on issues mean? @@ -48,42 +34,37 @@ The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_man You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### I found a typo, should I report an issue before I can make a pull request? +### I found a typo. Should I report an issue before I can make a pull request? -For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### How do I get an issue assigned to me? +### How can I get an issue assigned to me? -We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. The first pull request for any issue is preferred to be merged. -2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: - Did you include tests? - Did you catch all usecases? - - Did you ensure all tests pass, and you confirmed everything works locally? -3. Finally, we favor pull requests which follow our recommended guidelines. + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. - Did you follow the pull request checklist? - - Did you name your pull request title meaningfully? - -You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier. - -Follow the guidelines carefully and open a pull request. + - Did you give your pull request a meaningful title? ### I am stuck on something that is not included in this documentation. **Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. **Additional Assistance:** diff --git a/docs/i18n/Serbian/_sidebar.md b/docs/i18n/Serbian/_sidebar.md index 3b43405b5f..1b5bda2bdc 100644 --- a/docs/i18n/Serbian/_sidebar.md +++ b/docs/i18n/Serbian/_sidebar.md @@ -1,8 +1,8 @@ - **Getting Started** - - [Introduction](index 'Contribute to the freeCodeCamp.org Community') + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") - [Frequently Asked Questions](FAQ.md) - **Code Contribution** -- - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) - [Open a pull request](how-to-open-a-pull-request.md) - [Work on coding challenges](how-to-work-on-coding-challenges.md) - [Work on video challenges](how-to-help-with-video-challenges.md) @@ -14,18 +14,21 @@ --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- - **Flight Manuals** (for Staff & Mods) - - [Moderator Handbook](flight-manuals/moderator-handbook.md) - - [Reply Templates](flight-manuals/using-reply-templates.md) - - [DevOps Overview](devops.md) - - [Working on Servers](flight-manuals/working-on-virtual-machines.md) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- diff --git a/docs/i18n/Serbian/devops.md b/docs/i18n/Serbian/devops.md index ff7eec13cb..46fb8b5382 100644 --- a/docs/i18n/Serbian/devops.md +++ b/docs/i18n/Serbian/devops.md @@ -1,10 +1,10 @@ -# Developer Operations at freeCodeCamp.org +# DevOps Handbook This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. Let us know, if you have feedback or queries, and we will be happy to clarify. -## How do we build, test and deploy the codebase? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. @@ -46,7 +46,7 @@ The build pipeline goes on to trigger a corresponding release pipeline if it com Status of builds and releases are [available here](#build-test-and-deployment-status). -## Triggering a build, test and deployment. +## Trigger a build, test and deploy Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). @@ -218,10 +218,491 @@ There are some known limitations and tradeoffs when using the beta version of th - #### Sign page may look different than production - We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. ## Reporting issues and leaving feedback Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

              https://amplify.nginx.com

              +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Serbian/flight-manuals/moderator-handbook.md b/docs/i18n/Serbian/flight-manuals/moderator-handbook.md deleted file mode 100644 index 5916fb23de..0000000000 --- a/docs/i18n/Serbian/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# The official freeCodeCamp Moderator Handbook. - -This will help you moderate different places in our community, including: - -- GitHub issues & pull requests -- The forum, chat rooms, Facebook groups, and other online meeting places -- In-person events like study groups, hackathons, and conferences - -**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** - -This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. - -The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. - -> [!NOTE] "With great power comes great responsibility." - Uncle Ben - -As a moderator, temperament is more important than technical skill. - -Listen. Be Helpful. Don't abuse your power. - -freeCodeCamp is an inclusive community, and we need to keep it that way. - -We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderators have the ability to close issues and accept or close pull requests. - -Moderators have two primary responsibilities regarding GitHub: - -1. QA'ing and merging pull requests -2. Evaluating and responding to issues - -## Moderating Pull Requests - -Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. - -### Types of Pull Requests - -1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: - - > Thank you for your pull request. - > - > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. - -2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. - -3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. - -### How to merge or close pull requests - -First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. - -Depending on the type of pull request it is, follow the corresponding rules listed above. - -Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. - -Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. - -If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. - -You should then comment on the pull request, thanking the contributor in your own personal way. - -If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. - -Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". - -There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. - -In both of these situations, you should go ahead and close their pull request and reply with this standard message: - -> Thank you for opening this pull request. -> -> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. -> -> Thank you and happy coding. - -If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. - -## Moderating GitHub Issues - -freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. - -### Types of GitHub Issues - -1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. - > - > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. - > - > Thank you and happy coding. - -2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: - -- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. -- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. - -3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -### Closing Stale, Outdated, Inactive Issues and Pull Requests - -- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. - -- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. - -- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. - -### Other guidelines for Moderators on GitHub - -Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. - -Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. - -If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. - -# Moderating the Forum - -As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. - -Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." - -![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) - -These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. - -### Deleting forum posts - -Forum moderators have the ability to delete user's posts. You should only do this for the following instances: - -1. Someone has posted a pornographic or graphically violent image. -2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -3. Someone has flooded a thread with lots of spam messages. - -### Dealing with spam - -For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." - -You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). - -### Dealing with off-topic conversations - -Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. - -In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. - -Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. - -### Underage Users - -Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. - -```markdown -SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service - -It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. - -Please rejoin once you have reached at least 13 years of age. - -Thank you for understanding. -``` - -# Moderating Facebook - -If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. - -Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. - -But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. - -# Moderating Discord - -Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: - -1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. - -2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** - -- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: - -``` -This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. - -I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: - -1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ -2. Message me back confirming that you have finished reading it. -3. Explain to me why you think I suspended you, and why I should remove your suspension. -``` - -- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: - -``` -Suspended: _@username_ -Reason(s): _Spamming, trolling_ -Evidence: _One or more links to the offending message(s)_ -CoC: _Sent_ -``` - -- A report for removing a suspension should look like: - -``` -I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. -``` - -- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". - -3. **How to ban and/or unban** - -- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. -- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". - -Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. - -4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: - -- Someone has posted a pornographic or graphically violent image. -- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. -- Someone has posted advertisement and / or a self-promoting message / image (social media). - -In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. - -5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. - -6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: - -- Camper posts a wall of code to request help - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. - -- Or if you really have to explain why: - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. - -- For mild and unintentional violations of the code of conduct - - Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ - -7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. - -8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. - -9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! - -10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. - -# How to become a moderator - -If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. - -If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. - -# How we retire inactive moderators - -Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: - -> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. - -> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. - -# How our Contributors room works - -Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. - -Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. - -# Dealing with solicitors - -You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). - -# Dealing with (mental) health inquiries - -You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! - -If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: - -- The user is guaranteed some privacy -- Public chat is no longer disrupted -- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself - -> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! - -If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: - -> Reference medical advice: - -After that, you can remove the Suspension from the user as you normally do. - -Helpful URLs: - -http://www.suicide.org/international-suicide-hotlines.html - -# A note on free speech - -Sometimes people will defend something offensive or incendiary that they said as "free speech." - -This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. - -
              - -Thanks for reading this, and thanks for helping the developer community! diff --git a/docs/i18n/Serbian/flight-manuals/using-reply-templates.md b/docs/i18n/Serbian/flight-manuals/using-reply-templates.md deleted file mode 100644 index ced39a3641..0000000000 --- a/docs/i18n/Serbian/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Using Reply Templates - -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. - -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. - -### Thank you - -```markdown -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Thank you and congrats - -> For thanking and encouraging first-time contributors. - -```markdown -Hi @username. Congrats on your first pull request (PR)! 🎉 - -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Build Error - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -Once you resolve these issues, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -``` - -### Syncing Fork - -> When PR is not up to date with the `master` branch. - -``````markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. - -To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. - -Using the command line, you can do this in three easy steps: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. - -Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` - -### Merge Conflicts - -> When PR has merge conflicts that need to be resolved.¹ - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ - -Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 - ---- - -> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` -¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. - -### Duplicate - -> When PR is repetitive or a duplicate. - -```markdown -Hey @username - -It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 - -If you feel you have more to add, please feel free to open up a new PR. - -Thanks again! 😊 - ---- - -> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬 -``` - -### Closing invalid pull requests - -> When PR is invalid. - -```markdown -Hey @username - -You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️ - -Feel free to open another PR though! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Serbian/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Serbian/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Serbian/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

              https://amplify.nginx.com

              -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Serbian/how-to-open-a-pull-request.md b/docs/i18n/Serbian/how-to-open-a-pull-request.md index ced6082c8a..2729cd6237 100644 --- a/docs/i18n/Serbian/how-to-open-a-pull-request.md +++ b/docs/i18n/Serbian/how-to-open-a-pull-request.md @@ -1,6 +1,6 @@ # How to open a Pull Request (PR) -A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. ## Prepare a good PR title @@ -72,7 +72,7 @@ Some examples of good PRs titles would be: Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. diff --git a/docs/i18n/Serbian/how-to-setup-freecodecamp-locally.md b/docs/i18n/Serbian/how-to-setup-freecodecamp-locally.md index 1b5573ce07..619db733cf 100644 --- a/docs/i18n/Serbian/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Serbian/how-to-setup-freecodecamp-locally.md @@ -1,18 +1,18 @@ Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > > [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare your local machine +### How to prepare your local machine Start by installing the prerequisite software for your operating system. -We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). @@ -147,7 +147,7 @@ Now that you have a local copy of freeCodeCamp, you can follow these instruction If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/pFspAhS), for quick queries. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > @@ -541,6 +541,6 @@ The first time setup can take a while depending on your network bandwidth. Be pa ## Getting Help -If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Serbian/how-to-work-on-coding-challenges.md b/docs/i18n/Serbian/how-to-work-on-coding-challenges.md index 568913de3b..2b95545e91 100644 --- a/docs/i18n/Serbian/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Serbian/how-to-work-on-coding-challenges.md @@ -2,11 +2,15 @@ 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, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like 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. -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. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions. +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/). + +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 [our Discord server](https://discord.gg/pFspAhS). With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. @@ -210,12 +214,15 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an Here are specific formatting guidelines for challenge text and examples: - Language keywords go in `` tags. For example, HTML tag names or CSS property names -- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags - References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: -- Use parseInt to convert the variable realNumber into an integer. -- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -See example below: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md The following is an example of code: @@ -229,7 +236,9 @@ The following is an example of code: - Additional information in the form of a note should be formatted `Note: Rest of note text...` - If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. -- Use double quotes where applicable +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests @@ -246,9 +255,81 @@ Here are specific formatting guidelines for the challenge seed code: - Use two spaces to indent - JavaScript statements end with a semicolon - Use double quotes where applicable -- Comments made should have a space between the comment characters and the comment themselves - `// Fix this line` +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
              + { /* Change code below this line */ } + + { /* Change code above this line */ } +

              {this.state.text}

              +
              + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions @@ -261,7 +342,7 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca Take the following steps when adding a new challenge hints/solutions related topic. 1. Start by following the same steps for creating a new topic but review the next for creating the title. -2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". 3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. 4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. diff --git a/docs/i18n/Serbian/how-to-work-on-the-docs-theme.md b/docs/i18n/Serbian/how-to-work-on-the-docs-theme.md index 8de043746f..bf8bf8f6c9 100644 --- a/docs/i18n/Serbian/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Serbian/how-to-work-on-the-docs-theme.md @@ -20,21 +20,35 @@ Typically you would not need to change any configuration or build the site local Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` Install `docsify`: -```sh +```console npm install -g docsify ``` and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Serbian/how-to-work-on-the-news-theme.md b/docs/i18n/Serbian/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Serbian/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Serbian/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Serbian/index.md b/docs/i18n/Serbian/index.md index 93e97fae8d..1c4add4ab3 100644 --- a/docs/i18n/Serbian/index.md +++ b/docs/i18n/Serbian/index.md @@ -1,45 +1,43 @@ -The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. We welcome any and all contributions to the community and are excited to welcome you aboard. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. Happy contributing. You are welcome to: -- Create, update and fix bugs in our [coding challenges](#coding-challenges). +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). - _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Coding Challenges +## Curriculum -All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** ## Learning Platform -Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Broadly, +Broadly, we use -- We have a Node.js based API server. -- A set of React-based client applications. -- A script that we use to evaluate our front-end projects. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. +If you want to help us improve our codebase... -**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts a ready-to-code dev environment for freeCodeCamp in your browser.) +Or you can... -OR - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Serbian/moderator-handbook.md b/docs/i18n/Serbian/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Serbian/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
              + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Spanish/FAQ.md b/docs/i18n/Spanish/FAQ.md index be0299b973..e6ef4fed0d 100644 --- a/docs/i18n/Spanish/FAQ.md +++ b/docs/i18n/Spanish/FAQ.md @@ -1,24 +1,12 @@ -### I am new to GitHub and Open Source, where should I start? +### I am new to GitHub and Open Source. Where should I start? -Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. ### Can I translate freeCodeCamp's curriculum? -We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first. +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. -We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts. - -We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese. - -**Why are you focusing on Chinese curriculum first?** - -China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n. - -We will focus on Latin America as the demographic region for Portuguese and Spanish. - -We do not have any plans for i18n to any other languages other than the above for the foreseeable future. - -We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments. +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. ### How can I report a new bug? @@ -26,19 +14,17 @@ If you think you've found a bug, first read the ["Help I've Found a Bug"](https: If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. -Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report. +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. ### How can I report a security issue? Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. -### I am a student, can I or our team work on a feature for academic credits? +### I am a student. Can I work on a feature for academic credits? -Yes, sure. +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. -While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all. - -We request you to plan ahead and work on a feature with this in mind. +We request you to plan ahead and work on code contributions with this in mind. ### What do these different labels that are tagged on issues mean? @@ -48,42 +34,37 @@ The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_man You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. -> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments. +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. -### I found a typo, should I report an issue before I can make a pull request? +### I found a typo. Should I report an issue before I can make a pull request? -For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum. +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. -However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes. +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. -### How do I get an issue assigned to me? +### How can I get an issue assigned to me? -We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone: +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: -1. The first pull request for any issue is preferred to be merged. -2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests. +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: - Did you include tests? - Did you catch all usecases? - - Did you ensure all tests pass, and you confirmed everything works locally? -3. Finally, we favor pull requests which follow our recommended guidelines. + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. - Did you follow the pull request checklist? - - Did you name your pull request title meaningfully? - -You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier. - -Follow the guidelines carefully and open a pull request. + - Did you give your pull request a meaningful title? ### I am stuck on something that is not included in this documentation. **Feel free to ask for help in:** - The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). -- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors). - The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). -We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one. +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. -Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries. +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. **Additional Assistance:** diff --git a/docs/i18n/Spanish/_sidebar.md b/docs/i18n/Spanish/_sidebar.md index 3b43405b5f..1b5bda2bdc 100644 --- a/docs/i18n/Spanish/_sidebar.md +++ b/docs/i18n/Spanish/_sidebar.md @@ -1,8 +1,8 @@ - **Getting Started** - - [Introduction](index 'Contribute to the freeCodeCamp.org Community') + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") - [Frequently Asked Questions](FAQ.md) - **Code Contribution** -- - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) - [Open a pull request](how-to-open-a-pull-request.md) - [Work on coding challenges](how-to-work-on-coding-challenges.md) - [Work on video challenges](how-to-help-with-video-challenges.md) @@ -14,18 +14,21 @@ --- + + - **中文社区贡献指南** - - [成为专栏作者](/i18n/chinese/news-author-application.md) - - [文章翻译计划](/i18n/chinese/news-translations.md) - - [视频翻译计划](/i18n/chinese/video-translations.md) + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + --- - **Flight Manuals** (for Staff & Mods) - - [Moderator Handbook](flight-manuals/moderator-handbook.md) - - [Reply Templates](flight-manuals/using-reply-templates.md) - - [DevOps Overview](devops.md) - - [Working on Servers](flight-manuals/working-on-virtual-machines.md) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) --- diff --git a/docs/i18n/Spanish/devops.md b/docs/i18n/Spanish/devops.md index ff7eec13cb..46fb8b5382 100644 --- a/docs/i18n/Spanish/devops.md +++ b/docs/i18n/Spanish/devops.md @@ -1,10 +1,10 @@ -# Developer Operations at freeCodeCamp.org +# DevOps Handbook This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. Let us know, if you have feedback or queries, and we will be happy to clarify. -## How do we build, test and deploy the codebase? +# Flight Manual - Code deployments This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. @@ -46,7 +46,7 @@ The build pipeline goes on to trigger a corresponding release pipeline if it com Status of builds and releases are [available here](#build-test-and-deployment-status). -## Triggering a build, test and deployment. +## Trigger a build, test and deploy Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). @@ -218,10 +218,491 @@ There are some known limitations and tradeoffs when using the beta version of th - #### Sign page may look different than production - We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. ## Reporting issues and leaving feedback Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

              https://amplify.nginx.com

              +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Spanish/flight-manuals/moderator-handbook.md b/docs/i18n/Spanish/flight-manuals/moderator-handbook.md deleted file mode 100644 index 5916fb23de..0000000000 --- a/docs/i18n/Spanish/flight-manuals/moderator-handbook.md +++ /dev/null @@ -1,326 +0,0 @@ -# The official freeCodeCamp Moderator Handbook. - -This will help you moderate different places in our community, including: - -- GitHub issues & pull requests -- The forum, chat rooms, Facebook groups, and other online meeting places -- In-person events like study groups, hackathons, and conferences - -**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** - -This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. - -The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. - -> [!NOTE] "With great power comes great responsibility." - Uncle Ben - -As a moderator, temperament is more important than technical skill. - -Listen. Be Helpful. Don't abuse your power. - -freeCodeCamp is an inclusive community, and we need to keep it that way. - -We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). - -# Moderating GitHub - -Moderators have the ability to close issues and accept or close pull requests. - -Moderators have two primary responsibilities regarding GitHub: - -1. QA'ing and merging pull requests -2. Evaluating and responding to issues - -## Moderating Pull Requests - -Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. - -### Types of Pull Requests - -1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: - - > Thank you for your pull request. - > - > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. - -2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. - -3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. - -### How to merge or close pull requests - -First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. - -Depending on the type of pull request it is, follow the corresponding rules listed above. - -Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. - -Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. - -If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. - -You should then comment on the pull request, thanking the contributor in your own personal way. - -If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: - -![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) - -If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. - -Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". - -There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. - -In both of these situations, you should go ahead and close their pull request and reply with this standard message: - -> Thank you for opening this pull request. -> -> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. -> -> Thank you and happy coding. - -If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. - -## Moderating GitHub Issues - -freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. - -### Types of GitHub Issues - -1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. - > - > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. - > - > Thank you and happy coding. - -2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: - -- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. -- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. - -3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: - - > Thank you for reporting this issue. - > - > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. - > - > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. - -### Closing Stale, Outdated, Inactive Issues and Pull Requests - -- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. - -- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. - -- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. - -### Other guidelines for Moderators on GitHub - -Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. - -Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. - -If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. - -# Moderating the Forum - -As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. - -Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." - -![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) - -These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. - -### Deleting forum posts - -Forum moderators have the ability to delete user's posts. You should only do this for the following instances: - -1. Someone has posted a pornographic or graphically violent image. -2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -3. Someone has flooded a thread with lots of spam messages. - -### Dealing with spam - -For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." - -You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). - -### Dealing with off-topic conversations - -Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. - -In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. - -Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. - -### Underage Users - -Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. - -```markdown -SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service - -It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. - -Please rejoin once you have reached at least 13 years of age. - -Thank you for understanding. -``` - -# Moderating Facebook - -If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. - -Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. - -But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. - -# Moderating Discord - -Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: - -1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. - -2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** - -- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: - -``` -This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. - -I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: - -1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ -2. Message me back confirming that you have finished reading it. -3. Explain to me why you think I suspended you, and why I should remove your suspension. -``` - -- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: - -``` -Suspended: _@username_ -Reason(s): _Spamming, trolling_ -Evidence: _One or more links to the offending message(s)_ -CoC: _Sent_ -``` - -- A report for removing a suspension should look like: - -``` -I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. -``` - -- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". - -3. **How to ban and/or unban** - -- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. -- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". - -Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. - -4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: - -- Someone has posted a pornographic or graphically violent image. -- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. -- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. -- Someone has posted advertisement and / or a self-promoting message / image (social media). - -In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. - -5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. - -6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: - -- Camper posts a wall of code to request help - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. - -- Or if you really have to explain why: - - Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. - -- For mild and unintentional violations of the code of conduct - - Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ - -7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. - -8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. - -9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! - -10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. - -# How to become a moderator - -If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. - -If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. - -> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. - -# How we retire inactive moderators - -Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: - -> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. - -> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. - -# How our Contributors room works - -Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. - -Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. - -# Dealing with solicitors - -You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). - -# Dealing with (mental) health inquiries - -You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! - -If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: - -- The user is guaranteed some privacy -- Public chat is no longer disrupted -- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself - -> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! - -If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: - -> Reference medical advice: - -After that, you can remove the Suspension from the user as you normally do. - -Helpful URLs: - -http://www.suicide.org/international-suicide-hotlines.html - -# A note on free speech - -Sometimes people will defend something offensive or incendiary that they said as "free speech." - -This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. - -
              - -Thanks for reading this, and thanks for helping the developer community! diff --git a/docs/i18n/Spanish/flight-manuals/using-reply-templates.md b/docs/i18n/Spanish/flight-manuals/using-reply-templates.md deleted file mode 100644 index ced39a3641..0000000000 --- a/docs/i18n/Spanish/flight-manuals/using-reply-templates.md +++ /dev/null @@ -1,126 +0,0 @@ -# Using Reply Templates - -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. - -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. - -### Thank you - -```markdown -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 🎉 -``` - -### Thank you and congrats - -> For thanking and encouraging first-time contributors. - -```markdown -Hi @username. Congrats on your first pull request (PR)! 🎉 - -Thank you for your contribution to the page! 👍 -We are happy to accept these changes and look forward to future contributions. 📝 -``` - -### Build Error - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -Once you resolve these issues, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -``` - -### Syncing Fork - -> When PR is not up to date with the `master` branch. - -``````markdown -Hey @username - -We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ - -```bash -Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' -`````` - -This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. - -To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. - -Using the command line, you can do this in three easy steps: - -```bash -git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git - -git fetch upstream - -git pull upstream master -``` - -If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. - -Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 - ---- - -> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` - -### Merge Conflicts - -> When PR has merge conflicts that need to be resolved.¹ - -```markdown -Hey @username - -We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ - -Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 - ---- - -> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ -> -> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 -`````` -¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. - -### Duplicate - -> When PR is repetitive or a duplicate. - -```markdown -Hey @username - -It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 - -If you feel you have more to add, please feel free to open up a new PR. - -Thanks again! 😊 - ---- - -> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬 -``` - -### Closing invalid pull requests - -> When PR is invalid. - -```markdown -Hey @username - -You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️ - -Feel free to open another PR though! 👍 -``` \ No newline at end of file diff --git a/docs/i18n/Spanish/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Spanish/flight-manuals/working-on-virtual-machines.md deleted file mode 100644 index c5c91b90f1..0000000000 --- a/docs/i18n/Spanish/flight-manuals/working-on-virtual-machines.md +++ /dev/null @@ -1,475 +0,0 @@ -# Flight Manual for working on Virtual Machines - -As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. - -Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. - -# Get a list of the VMs - -> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. - -## Azure - -Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install azure-cli -``` - -> **(One-time) Login:** - -``` -az login -``` - -> **Get the list of VM names and P addresses:** - -``` -az vm list-ip-addresses --output table -``` - -## Digital Ocean - -Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl - -> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** - -``` -brew install doctl -``` - -> **(One-time) Login:** - -Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean - -``` -doctl auth init -``` - -> **Get the list of VM names and IP addresses:** - -``` -doctl compute droplet list --format "ID,Name,PublicIPv4" -``` - -# Spin a VM (or VM Scale Set) - -> Todo: Add instructions for spinning VM(s) - - - - -# Keep VMs updated - -You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. - -> [!WARNING] Before you run these commands: -> -> - Make sure that the VM has been provisioned completely and there is no post-install steps running. -> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. - -Update package information - -```console -sudo apt update -``` - -Upgrade installed packages - -```console -sudo apt upgrade -y -``` - -Cleanup unused packages - -```console -sudo apt autoremove -y -``` - -# Work on Web Servers (Proxy) - -We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. - -The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). - -## First Install - -Provisioning VMs with the Code - -### 1. (Optional) Install NGINX and configure from repository. - -The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). - -If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: - -```console -sudo su - -cd /var/www/html -git clone https://github.com/freeCodeCamp/error-pages - -cd /etc/ -rm -rf nginx -git clone https://github.com/freeCodeCamp/nginx-config nginx - -cd /etc/nginx -``` - -### 2. Install Cloudflare origin certificates and upstream application config. - -Get the Cloudflare origin certificates from the secure storage and install at required locations. - -**OR** - -Move over existing certificates: - -```console -# Local -scp -r username@source-server-public-ip:/etc/nginx/ssl ./ -scp -pr ./ssl username@target-server-public-ip:/tmp/ - -# Remote -rm -rf ./ssl -mv /tmp/ssl ./ -``` - -Update Upstream Configurations: - -```console -vi configs/upstreams.conf -``` - -Add/update the source/origin application IP addresses. - -### 3. Setup networking and firewalls. - -Configure Azure firewalls and `ufw` as needed for ingress origin addresses. - -### 4. Add the VM to the load balancer backend pool. - -Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. - -## Logging and Monitoring - -1. Check status for NGINX service using the below command: - -```console -sudo systemctl status nginx -``` - -2. Logging and monitoring for the servers are available at: - ->

              https://amplify.nginx.com

              -## Updating Instances (Maintenance) - -Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: - -1. SSH into the instance and enter sudo - -```console -sudo su -``` - -2. Get the latest config code. - -```console -cd /etc/nginx -git fetch --all --prune -git reset --hard origin/master -``` - -3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). - -```console -nginx -t -nginx -s reload -``` - -# Work on API Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone freeCodeCamp, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/freeCodeCamp.git - cd freeCodeCamp - git checkout production-current # or any other branch to be deployed - ``` - -4. Create the `.env` from the secure credentials storage. - -5. Create the `google-credentials.json` from the secure credentials storage. - -6. Install dependencies - - ```console - npm ci - ``` - -7. Build the server - - ```console - npm run ensure-env && npm run build:server - ``` - -8. Start Instances - - ```console - cd api-server - pm2 start production-start.js -i max --max-memory-restart 600M --name org - ``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - -```console -pm2 stop all -``` - -2. Install dependencies - -```console -npm ci -``` - -3. Build the server - -```console -npm run ensure-env && npm run build:server -``` - -4. Start Instances - -```console -pm2 start all --update-env && pm2 logs -``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. - -# Work on Client Instances - -1. Install build tools for node binaries (`node-gyp`) etc. - -```console -sudo apt install build-essential -``` - -## First Install - -Provisioning VMs with the Code - -1. Install Node LTS. - -2. Update `npm` and install PM2 and setup logrotate and startup on boot - - ```console - npm i -g npm - npm i -g pm2 - npm install -g serve - pm2 install pm2-logrotate - pm2 startup - ``` - -3. Clone client config, setup env and keys. - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - ```console - git clone https://github.com/freeCodeCamp/client-config.git client - cd client - ``` - - Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. - - > Todo: This setup needs to move to S3 or Azure Blob storage - > - > ```console - echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh - chmod +x client-start-primary.sh - pm2 delete client-primary - pm2 start ./client-start-primary.sh --name client-primary - echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh - chmod +x client-start-secondary.sh - pm2 delete client-secondary - pm2 start ./client-start-secondary.sh --name client-secondary -``` - -## Logging and Monitoring - -```console -pm2 logs -``` - -```console -pm2 monit -``` - -## Updating Instances (Maintenance) - -Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. - -> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. - -### 1. Manual Updates - Used for updating dependencies, env variables. - -1. Stop all instances - - ```console - pm2 stop all - ``` - -2. Install or update dependencies - -3. Start Instances - - ```console - pm2 start all --update-env && pm2 logs - ``` - -### 2. Rolling updates - Used for logical changes to code. - -```console -pm2 reload all --update-env && pm2 logs -``` - -> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Spanish/how-to-open-a-pull-request.md b/docs/i18n/Spanish/how-to-open-a-pull-request.md index ced6082c8a..2729cd6237 100644 --- a/docs/i18n/Spanish/how-to-open-a-pull-request.md +++ b/docs/i18n/Spanish/how-to-open-a-pull-request.md @@ -1,6 +1,6 @@ # How to open a Pull Request (PR) -A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR. +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. ## Prepare a good PR title @@ -72,7 +72,7 @@ Some examples of good PRs titles would be: Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. -If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. diff --git a/docs/i18n/Spanish/how-to-setup-freecodecamp-locally.md b/docs/i18n/Spanish/how-to-setup-freecodecamp-locally.md index 1b5573ce07..619db733cf 100644 --- a/docs/i18n/Spanish/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/Spanish/how-to-setup-freecodecamp-locally.md @@ -1,18 +1,18 @@ Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. -For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase. +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. -> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment. +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. > > [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) -## Prepare your local machine +### How to prepare your local machine Start by installing the prerequisite software for your operating system. -We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). @@ -147,7 +147,7 @@ Now that you have a local copy of freeCodeCamp, you can follow these instruction If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. -And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/pFspAhS), for quick queries. +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). > [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. > @@ -541,6 +541,6 @@ The first time setup can take a while depending on your network bandwidth. Be pa ## Getting Help -If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter. +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Spanish/how-to-work-on-coding-challenges.md b/docs/i18n/Spanish/how-to-work-on-coding-challenges.md index 568913de3b..2b95545e91 100644 --- a/docs/i18n/Spanish/how-to-work-on-coding-challenges.md +++ b/docs/i18n/Spanish/how-to-work-on-coding-challenges.md @@ -2,11 +2,15 @@ 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, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like 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. -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. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions. +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/). + +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 [our Discord server](https://discord.gg/pFspAhS). With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. @@ -210,12 +214,15 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an Here are specific formatting guidelines for challenge text and examples: - Language keywords go in `` tags. For example, HTML tag names or CSS property names -- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags - References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: -- Use parseInt to convert the variable realNumber into an integer. -- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: -See example below: +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. ````md The following is an example of code: @@ -229,7 +236,9 @@ The following is an example of code: - Additional information in the form of a note should be formatted `Note: Rest of note text...` - If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. -- Use double quotes where applicable +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. ## Writing tests @@ -246,9 +255,81 @@ Here are specific formatting guidelines for the challenge seed code: - Use two spaces to indent - JavaScript statements end with a semicolon - Use double quotes where applicable -- Comments made should have a space between the comment characters and the comment themselves - `// Fix this line` +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
              + { /* Change code below this line */ } + + { /* Change code above this line */ } +

              {this.state.text}

              +
              + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. ## Hints and Solutions @@ -261,7 +342,7 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca Take the following steps when adding a new challenge hints/solutions related topic. 1. Start by following the same steps for creating a new topic but review the next for creating the title. -2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". 3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. 4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. diff --git a/docs/i18n/Spanish/how-to-work-on-the-docs-theme.md b/docs/i18n/Spanish/how-to-work-on-the-docs-theme.md index 8de043746f..bf8bf8f6c9 100644 --- a/docs/i18n/Spanish/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/Spanish/how-to-work-on-the-docs-theme.md @@ -20,21 +20,35 @@ Typically you would not need to change any configuration or build the site local Clone freeCodeCamp: -```sh +```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git docsify serve docs ``` Install `docsify`: -```sh +```console npm install -g docsify ``` and serve the `/docs` directory -```sh +```console docsify serve docs ``` -Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo. +Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: + +### Serve and launch the documentation site only + +```console +npm run docs:serve +``` + +### Serve the documentation site alongside freeCodeCamp locally: + +```console +npm run develop +``` + +> The documentation site should be available at \ No newline at end of file diff --git a/docs/i18n/Spanish/how-to-work-on-the-news-theme.md b/docs/i18n/Spanish/how-to-work-on-the-news-theme.md index e878e67fd7..51ad62ccf0 100644 --- a/docs/i18n/Spanish/how-to-work-on-the-news-theme.md +++ b/docs/i18n/Spanish/how-to-work-on-the-news-theme.md @@ -1,10 +1,99 @@ - +Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper). -[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md) \ No newline at end of file +The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. + +**The main files are:** + +- `default.hbs` - The main template file +- `index.hbs` - Used for the home page +- `post.hbs` - Used for individual posts +- `page.hbs` - Used for individual pages +- `tag.hbs` - Used for tag archives +- `author.hbs` - Used for author archives + +One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: + +- `page-about.hbs` - Custom template for the `/about/` page +- `tag-news.hbs` - Custom template for `/tag/news/` archive +- `author-ali.hbs` - Custom template for `/author/ali/` archive + +## Development + +1. Get Ghost installed locally. + + ```sh + npm install -g ghost-cli@latest + mkdir ghost-local-site + cd ghost-local-site + ``` + + ```sh + ghost install local + ghost start + ``` + + > Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that. + + Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface. + +2. Fork and clone the repository in your theme directory: + + ```sh + cd content/themes/ + git clone https://github.com/YOUR_USERNAME/news-theme.git + ``` + +3. Make sure you have all the pre-requisites. + + The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`. + +4. Install dependencies and develop the theme + + ```sh + npm ci + npm run develop + ``` + +5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. + +6. Access the development site. + + a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time). + + b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available. + + ```sh + cd ghost-local-site + ghost restart + ``` + + c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`. + +7. Zip the final code and make a pull-request + + The `zip` Gulp task packages the theme files into `dist/.zip`, which we can then upload to the production site. + + When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR. + + ```sh + npm run zip + ``` +## Other Reference and resources + +### PostCSS Features Used + +- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +- Variables - Simple pure CSS variables +- [Color Function](https://github.com/postcss/postcss-color-function) + +### SVG Icons + +The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. + +You can add your own SVG icons in the same manner. \ No newline at end of file diff --git a/docs/i18n/Spanish/index.md b/docs/i18n/Spanish/index.md index 93e97fae8d..1c4add4ab3 100644 --- a/docs/i18n/Spanish/index.md +++ b/docs/i18n/Spanish/index.md @@ -1,45 +1,43 @@ -The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. We welcome any and all contributions to the community and are excited to welcome you aboard. +The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard. -> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone. +> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone. Happy contributing. You are welcome to: -- Create, update and fix bugs in our [coding challenges](#coding-challenges). +- Create, update and fix bugs in our [curriculum](#curriculum). - Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform). - _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages. -Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing. +We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md). -## Coding Challenges +## Curriculum -All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you. +Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you. -You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. +You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code. -**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** +**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).** ## Learning Platform -Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more. +Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more. -Broadly, +Broadly, we use -- We have a Node.js based API server. -- A set of React-based client applications. -- A script that we use to evaluate our front-end projects. +- a Node.js based API server +- a set of React-based client applications +- and testing scripts to evaluate camper-submitted curriculum projects. -Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity. +If you want to productively contribute to the curriculum, we recommend some familiarity with these tools. -Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. +If you want to help us improve our codebase... -**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment** +**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.** [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) -(Starts a ready-to-code dev environment for freeCodeCamp in your browser.) +Or you can... -OR - -**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** +**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.** diff --git a/docs/i18n/Spanish/moderator-handbook.md b/docs/i18n/Spanish/moderator-handbook.md new file mode 100644 index 0000000000..126794b1a2 --- /dev/null +++ b/docs/i18n/Spanish/moderator-handbook.md @@ -0,0 +1,456 @@ +# The official freeCodeCamp Moderator Handbook. + +This will help you moderate different places in our community, including: + +- GitHub issues & pull requests +- The forum, chat rooms, Facebook groups, and other online meeting places +- In-person events like study groups, hackathons, and conferences + +**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.** + +This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere. + +The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you. + +> [!NOTE] "With great power comes great responsibility." - Uncle Ben + +As a moderator, temperament is more important than technical skill. + +Listen. Be Helpful. Don't abuse your power. + +freeCodeCamp is an inclusive community, and we need to keep it that way. + +We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). + +## Moderating GitHub + +Moderators have the ability to close issues and accept or close pull requests. + +Moderators have two primary responsibilities regarding GitHub: + +1. QA'ing and merging pull requests +2. Evaluating and responding to issues + +### Moderating Pull Requests + +Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them. + +#### Types of Pull Requests + +1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this: + + > Thank you for your pull request. + > + > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding. + +2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. + +3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look. + +#### How to merge or close pull requests + +First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface. + +Depending on the type of pull request it is, follow the corresponding rules listed above. + +Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first. + +Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. + +If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read. + +You should then comment on the pull request, thanking the contributor in your own personal way. + +If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below: + +![Copy_edits_for_Java_arrays_article_by_karentobo_%C2%B7_Pull_Request__20615_%C2%B7_freeCodeCamp_freeCodeCamp|690x281](https://i.imgur.com/dTQMjGM.png) + +If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready. + +Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md". + +There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves. + +In both of these situations, you should go ahead and close their pull request and reply with this standard message: + +> Thank you for opening this pull request. +> +> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. +> +> Thank you and happy coding. + +If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. + +### Moderating GitHub Issues + +freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled. + +#### Types of GitHub Issues + +1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. + > + > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. + > + > Thank you and happy coding. + +2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then: + +- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate. +- If the issue is more significant, flag as `bug`.   If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label. + +3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue. + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label: + + > Thank you for reporting this issue. + > + > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue. + > + > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding. + +#### Closing Stale, Outdated, Inactive Issues and Pull Requests + +- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves. + +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. + +- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status. + +#### Other guidelines for Moderators on GitHub + +Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. + +Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR. + +If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely. + +## Moderating the Forum + +As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. + +Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." + +![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png) + +These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds. + +### Deleting forum posts + +Forum moderators have the ability to delete user's posts. You should only do this for the following instances: + +1. Someone has posted a pornographic or graphically violent image. +2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +3. Someone has flooded a thread with lots of spam messages. + +### Dealing with spam + +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." + +You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff). + +### Dealing with off-topic conversations + +Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. + +In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. + +Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. + +### Underage Users + +Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well. + +```markdown +SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service + +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. + +Please rejoin once you have reached at least 13 years of age. + +Thank you for understanding. +``` + +## Moderating Facebook + +If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately. + +Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate. + +But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group. + +## Moderating Discord + +Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord: + +1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin. + +2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:** + +- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message: + +``` +This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server. + +I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first: + +1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/ +2. Message me back confirming that you have finished reading it. +3. Explain to me why you think I suspended you, and why I should remove your suspension. +``` + +- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like: + +``` +Suspended: _@username_ +Reason(s): _Spamming, trolling_ +Evidence: _One or more links to the offending message(s)_ +CoC: _Sent_ +``` + +- A report for removing a suspension should look like: + +``` +I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did. +``` + +- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:". + +3. **How to ban and/or unban** + +- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record. +- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban". + +Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server. + +4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations: + +- Someone has posted a pornographic or graphically violent image. +- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it. +- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable. +- Someone has posted advertisement and / or a self-promoting message / image (social media). + +In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + +5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + +6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + +- Camper posts a wall of code to request help + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code. + +- Or if you really have to explain why: + + Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + +- For mild and unintentional violations of the code of conduct + + Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + +7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. + +8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + +9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + +10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not. + +## How to become a moderator + +If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. + +If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc. + +> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories. + +## How we retire inactive moderators + +Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message: + +> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. + +> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. + +## How our Contributors room works + +Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups. + +Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact. + +## Dealing with solicitors + +You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). + +## Dealing with (mental) health inquiries + +You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! + +If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways: + +- The user is guaranteed some privacy +- Public chat is no longer disrupted +- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself + +> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help! + +If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log: + +> Reference medical advice: + +After that, you can remove the Suspension from the user as you normally do. + +Helpful URLs: + +http://www.suicide.org/international-suicide-hotlines.html + +## A note on free speech + +Sometimes people will defend something offensive or incendiary that they said as "free speech." + +This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them. + +
              + +Thanks for reading this, and thanks for helping the developer community! + +## Using Reply Templates + +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues. + +> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. + +### Thank you + +```markdown +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 🎉 +``` + +### Thank you and congrats + +> For thanking and encouraging first-time contributors. + +```markdown +Hi @username. Congrats on your first pull request (PR)! 🎉 + +Thank you for your contribution to the page! 👍 +We are happy to accept these changes and look forward to future contributions. 📝 +``` + +### Build Error + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +Once you resolve these issues, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +``` + +### Syncing Fork + +> When PR is not up to date with the `master` branch. + +````markdown +Hey @username + +We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️ + +```bash +Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md' +```` + +This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved. + +To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo. + +Using the command line, you can do this in three easy steps: + +```bash +git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git + +git fetch upstream + +git pull upstream master +``` + +If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above. + +Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊 + +--- + +> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +### Merge Conflicts + +> When PR has merge conflicts that need to be resolved.¹ + +```markdown +Hey @username + +We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️ + +Once you resolve these conflicts, We will be able to review your PR and merge it. 😊 + +--- + +> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️ +> +> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝 +```` + +¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them. + +### Duplicate + +> When PR is repetitive or a duplicate. + +```markdown +Hey @username + +It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓 + +If you feel you have more to add, please feel free to open up a new PR. + +Thanks again! 😊 + +--- + +> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). +``` + +### Closing invalid pull requests + +> When PR is invalid. + +```markdown +Hey @username + +Thank you for opening this pull request. + +This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you. + +Thank you and happy coding. +``` diff --git a/docs/i18n/Swahili/FAQ.md b/docs/i18n/Swahili/FAQ.md new file mode 100644 index 0000000000..e6ef4fed0d --- /dev/null +++ b/docs/i18n/Swahili/FAQ.md @@ -0,0 +1,82 @@ +### I am new to GitHub and Open Source. Where should I start? + +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. + +### Can I translate freeCodeCamp's curriculum? + +Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon. + +Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish. + +### How can I report a new bug? + +If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions. + +If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this. + +Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue. + +### How can I report a security issue? + +Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately. + +### I am a student. Can I work on a feature for academic credits? + +Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related. + +We request you to plan ahead and work on code contributions with this in mind. + +### What do these different labels that are tagged on issues mean? + +The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels). + +### Where do I start if I want to work on an issue? + +You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on. + +> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before. + +### I found a typo. Should I report an issue before I can make a pull request? + +For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change. + +Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum. + +### How can I get an issue assigned to me? + +We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone: + +1. We are most likely to merge the first pull request that addresses the issue. +2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider: + - Did you include tests? + - Did you catch all usecases? + - Did you ensure all tests pass, and confirm everything works locally? +3. Finally, we give priority to pull requests which follow our recommended guidelines. + - Did you follow the pull request checklist? + - Did you give your pull request a meaningful title? + +### I am stuck on something that is not included in this documentation. + +**Feel free to ask for help in:** + +- The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors). +- The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS). + +We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one. + +Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers. + +**Additional Assistance:** + +If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team: + +| Staff | Send message on Forum | +|:--------------------- |:---------------------------------------------------------------------------- | +| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) | +| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) | +| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) | +| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) | +| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) | +| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) | + +**You can email our developer staff at: `dev[at]freecodecamp.org`** diff --git a/docs/i18n/Swahili/_sidebar.md b/docs/i18n/Swahili/_sidebar.md new file mode 100644 index 0000000000..1b5bda2bdc --- /dev/null +++ b/docs/i18n/Swahili/_sidebar.md @@ -0,0 +1,39 @@ +- **Getting Started** + - [Introduction](index.md "Contribute to the freeCodeCamp.org Community") + - [Frequently Asked Questions](FAQ.md) +- **Code Contribution** + - [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) + - [Open a pull request](how-to-open-a-pull-request.md) + - [Work on coding challenges](how-to-work-on-coding-challenges.md) + - [Work on video challenges](how-to-help-with-video-challenges.md) + - [Work on the news theme](how-to-work-on-the-news-theme.md) + - [Work on the docs theme](how-to-work-on-the-docs-theme.md) +- **Optional Guides** + - [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md) + - [Set up freeCodeCamp on WSL](how-to-setup-wsl.md) + +--- + + + +- **中文社区贡献指南** + - [成为专栏作者](/i18n/Chinese/news-author-application.md) + - [文章翻译计划](/i18n/Chinese/news-translations.md) + - [视频翻译计划](/i18n/Chinese/video-translations.md) + + + +--- + +- **Flight Manuals** (for Staff & Mods) + - [Moderator Handbook](moderator-handbook.md) + - [Reply Templates](moderator-handbook?id=using-reply-templates) + - [DevOps Handbook](devops.md) + +--- + +- **Our Community** + - [**GitHub**](https://github.com/freecodecamp/freecodecamp) + - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors) + - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors) + - [**Discord Server**](https://discord.gg/pFspAhS) diff --git a/docs/i18n/Swahili/devops.md b/docs/i18n/Swahili/devops.md new file mode 100644 index 0000000000..46fb8b5382 --- /dev/null +++ b/docs/i18n/Swahili/devops.md @@ -0,0 +1,708 @@ +# DevOps Handbook + +This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems. + +Let us know, if you have feedback or queries, and we will be happy to clarify. + +# Flight Manual - Code deployments + +This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. + +This involves three steps to be followed in sequence: + +1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests. +2. These changes are run through a series of automated tests. +3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure. + +#### Building the codebase - Mapping Git Branches to Deployments. + +Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure. + +This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release. + +It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms. + +Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch. + +This is the final release that moves changes to our production platforms on freeCodeCamp.org. + +#### Testing changes - Integration and User Acceptance Testing. + +We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp). + +We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components. + +> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services. + +Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature. + +#### Deploying Changes - Pushing changes to servers. + +We have configured continuous delivery software to push changes to our development and production servers. + +Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use. + +The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live. + +Status of builds and releases are [available here](#build-test-and-deployment-status). + +## Trigger a build, test and deploy + +Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp). + +> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency. + +### Pushing changes to Staging Applications. + +1. Configure your remotes correctly. + + ```sh + git remote -v + ``` + + **Results:** + + ``` + origin git@github.com:raisedadead/freeCodeCamp.git (fetch) + origin git@github.com:raisedadead/freeCodeCamp.git (push) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) + upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) + ``` + +2. Make sure your `master` branch is pristine and in sync with the upstream. + + ```sh + git checkout master + git fetch --all --prune + git reset --hard upstream/master + ``` + +3. Check that the Travis CI is passing on the `master` branch for upstream. + + The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch. + +
              Checking status on Travis CI (screenshot) +
              + ![Check build status on Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png) +
              + + If this is failing you should stop and investigate the errors. + +4. Confirm that you are able to build the repository locally. + + ``` + npm run clean-and-develop + ``` + +5. Move changes from `master` to `production-staging` via a fast-forward merge + + ``` + git checkout production-staging + git merge master + git push upstream + ``` + + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. + > + > If they do, you may have done something incorrectly and you should just start over. + +The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. + +The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. + +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total. + +### Pushing changes to Production Applications. + +The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment. + +| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | + + +1. Make sure your `production-staging` branch is pristine and in sync with the upstream. + + ```sh + git checkout production-staging + git fetch --all --prune + git reset --hard upstream/production-staging + ``` + +2. Move changes from `production-staging` to `production-current` via a fast-forward merge + + ``` + git checkout production-current + git merge production-staging + git push upstream + ``` + + > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out. + > + > If they do, you may have done something incorrectly and you should just start over. + +The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline. + +> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete. + +**Additional Steps for Staff Action** + +One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run. + +If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release. + +For staff use: + +| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. | +|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| | + + +Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live. + +> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval). + +## Build, Test and Deployment Status + +Here is the current test, build and deployment status of the codebase. + +| Type | Branch | Status | Dashboard | +|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- | +| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-dev-ci?branchName=production-staging)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | +| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Travis CI Build Status](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) | +| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Build Status](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_apis/build/status/dot-org-ci?branchName=production-current)](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) | +| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) | + +## Early access and beta testing + +We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably. + +Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone. + +We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock! + +### Identifying the upcoming version of the platforms + +Currently a public beta testing version is available at: + +

              freecodecamp.dev

              + +> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform. + +### Identifying the current version of the platforms + +**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).** + +The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site. + +You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation. + +### Known Limitations + +There are some known limitations and tradeoffs when using the beta version of the platform. + +- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production. + + **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed. + +- #### There are no guarantees on the uptime and reliability of the beta platforms. + + Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version. + +- #### Do not send regular users to this site as a measure of confirming a fix + + The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon. + +- #### Sign page may look different than production + + We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get. + +## Reporting issues and leaving feedback + +Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage. + +You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum. + +# Flight Manual - Server Maintenance + +> [!WARNING] +> +> 1. The guide applies to the **freeCodeCamp Staff members only**. +> 2. These instructions should not be considered exhaustive, please use caution. + +As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc. + +Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping. + +## Get a list of the VMs + +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well. + +### Azure + +Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install azure-cli +``` + +> **(One-time) Login:** + +``` +az login +``` + +> **Get the list of VM names and P addresses:** + +``` +az vm list-ip-addresses --output table +``` + +### Digital Ocean + +Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl + +> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):** + +``` +brew install doctl +``` + +> **(One-time) Login:** + +Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean + +``` +doctl auth init +``` + +> **Get the list of VM names and IP addresses:** + +``` +doctl compute droplet list --format "ID,Name,PublicIPv4" +``` + +## Spin a VM (or VM Scale Set) + +> Todo: Add instructions for spinning VM(s) + + + + +## Keep VMs updated + +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes. + +> [!WARNING] Before you run these commands: +> +> - Make sure that the VM has been provisioned completely and there is no post-install steps running. +> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications. + +Update package information + +```console +sudo apt update +``` + +Upgrade installed packages + +```console +sudo apt upgrade -y +``` + +Cleanup unused packages + +```console +sudo apt autoremove -y +``` + +## Work on Web Servers (Proxy) + +We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures. + +The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config). + +### First Install + +Provisioning VMs with the Code + +#### 1. (Optional) Install NGINX and configure from repository. + +The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s). + +If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages: + +```console +sudo su + +cd /var/www/html +git clone https://github.com/freeCodeCamp/error-pages + +cd /etc/ +rm -rf nginx +git clone https://github.com/freeCodeCamp/nginx-config nginx + +cd /etc/nginx +``` + +#### 2. Install Cloudflare origin certificates and upstream application config. + +Get the Cloudflare origin certificates from the secure storage and install at required locations. + +**OR** + +Move over existing certificates: + +```console +# Local +scp -r username@source-server-public-ip:/etc/nginx/ssl ./ +scp -pr ./ssl username@target-server-public-ip:/tmp/ + +# Remote +rm -rf ./ssl +mv /tmp/ssl ./ +``` + +Update Upstream Configurations: + +```console +vi configs/upstreams.conf +``` + +Add/update the source/origin application IP addresses. + +#### 3. Setup networking and firewalls. + +Configure Azure firewalls and `ufw` as needed for ingress origin addresses. + +#### 4. Add the VM to the load balancer backend pool. + +Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed. + +### Logging and Monitoring + +1. Check status for NGINX service using the below command: + +```console +sudo systemctl status nginx +``` + +2. Logging and monitoring for the servers are available at: + +>

              https://amplify.nginx.com

              +### Updating Instances (Maintenance) + +Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so: + +1. SSH into the instance and enter sudo + +```console +sudo su +``` + +2. Get the latest config code. + +```console +cd /etc/nginx +git fetch --all --prune +git reset --hard origin/master +``` + +3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx). + +```console +nginx -t +nginx -s reload +``` + +## Work on API Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone freeCodeCamp, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/freeCodeCamp.git + cd freeCodeCamp + git checkout production-current # or any other branch to be deployed + ``` + +4. Create the `.env` from the secure credentials storage. + +5. Create the `google-credentials.json` from the secure credentials storage. + +6. Install dependencies + + ```console + npm ci + ``` + +7. Build the server + + ```console + npm run ensure-env && npm run build:server + ``` + +8. Start Instances + + ```console + cd api-server + pm2 start production-start.js -i max --max-memory-restart 600M --name org + ``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + +```console +pm2 stop all +``` + +2. Install dependencies + +```console +npm ci +``` + +3. Build the server + +```console +npm run ensure-env && npm run build:server +``` + +4. Start Instances + +```console +pm2 start all --update-env && pm2 logs +``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. + +## Work on Client Instances + +1. Install build tools for node binaries (`node-gyp`) etc. + +```console +sudo apt install build-essential +``` + +### First Install + +Provisioning VMs with the Code + +1. Install Node LTS. + +2. Update `npm` and install PM2 and setup logrotate and startup on boot + + ```console + npm i -g npm + npm i -g pm2 + npm install -g serve + pm2 install pm2-logrotate + pm2 startup + ``` + +3. Clone client config, setup env and keys. + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + ```console + git clone https://github.com/freeCodeCamp/client-config.git client + cd client + ``` + + Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline. + + > Todo: This setup needs to move to S3 or Azure Blob storage + > + > ```console + echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh + chmod +x client-start-primary.sh + pm2 delete client-primary + pm2 start ./client-start-primary.sh --name client-primary + echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh + chmod +x client-start-secondary.sh + pm2 delete client-secondary + pm2 start ./client-start-secondary.sh --name client-secondary +``` + +### Logging and Monitoring + +```console +pm2 logs +``` + +```console +pm2 monit +``` + +### Updating Instances (Maintenance) + +Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables. + +> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. + +#### 1. Manual Updates - Used for updating dependencies, env variables. + +1. Stop all instances + + ```console + pm2 stop all + ``` + +2. Install or update dependencies + +3. Start Instances + + ```console + pm2 start all --update-env && pm2 logs + ``` + +#### 2. Rolling updates - Used for logical changes to code. + +```console +pm2 reload all --update-env && pm2 logs +``` + +> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation. diff --git a/docs/i18n/Swahili/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Swahili/how-to-catch-outgoing-emails-locally.md new file mode 100644 index 0000000000..397ea3382a --- /dev/null +++ b/docs/i18n/Swahili/how-to-catch-outgoing-emails-locally.md @@ -0,0 +1,100 @@ +> **Note:** This is an **optional** step and is required only when working with email workflows + +## Introduction + +Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. + +## Installing MailHog + +MailHog can be installed on macOS, Windows and Linux. + +- [Introduction](#introduction) +- [Installing MailHog](#installing-mailhog) + - [Installing MailHog on macOS](#installing-mailhog-on-macos) + - [Installing MailHog on Windows](#installing-mailhog-on-windows) + - [Installing MailHog on Linux](#installing-mailhog-on-linux) +- [Using MailHog](#using-mailhog) +- [Useful Links](#useful-links) + +### Installing MailHog on macOS + +Install MailHog on macOS with [Homebrew](https://brew.sh/): + +```bash +brew install mailhog +brew services start mailhog +``` + +The above commands will start a mailhog service in the background. + +When the installation completes, you can start [using MailHog](#using-mailhog). + +### Installing MailHog on Windows + +Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer. + +When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted. + +Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file. + +Start [using MailHog](#using-mailhog). + +### Installing MailHog on Linux + +First, install [Go](https://golang.org). + +Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint. + +```bash +sudo apt-get install golang +``` + +Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc. + +```bash +sudo dnf install golang +``` + +Alternatively, run the following commands to install GO. + +```bash +sudo yum install golang +``` + +Now set the path for Go with the following commands. + +```bash +echo "export GOPATH=$HOME/go" >> ~/.profile +echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile +source ~/.profile +``` + +Finally, enter the commands below to install and run MailHog. + +```bash +go get github.com/mailhog/MailHog +sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog +mailhog +``` + +Start [using MailHog](#using-mailhog). + +## Using MailHog + +Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below. + +![MailHog Screenshot 1](images/mailhog/1.jpg) + +Emails sent by your freeCodeCamp installation will appear as below + +![MailHog Screenshot 2](images/mailhog/2.jpg) + +Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below. + +![MailHog Screenshot 3](images/mailhog/3.jpg) + +All links in the email should be clickable and resolve to their URL. + +## Useful Links + +- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations. diff --git a/docs/i18n/Swahili/how-to-help-with-video-challenges.md b/docs/i18n/Swahili/how-to-help-with-video-challenges.md new file mode 100644 index 0000000000..0724aaef02 --- /dev/null +++ b/docs/i18n/Swahili/how-to-help-with-video-challenges.md @@ -0,0 +1,199 @@ +# How to help with video challenges + +Video challenges are a new type of challenge in the freeCodeCamp curriculum. + +A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course. + +The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them. + +You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges. + + +## Challenge Template + +Below is a template of what the challenge markdown files look like. + +````md +--- +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 11 +videoId: 'YouTube videoId for video challenge' +--- + +## Description + +
              +An optional description with helpful information related to the video. +
              + +## Tests + +
              + +```yml +question: + text: 'Question' + answers: + - 'Answer One' + - 'Answer Two' + - 'Answer Three' + solution: 3 +```` + +
              +```` + +## Creating questions for video challenges + +### Access the video challenge markdown files + +You can find the markdown files for video challenges at the following locations in the curriculum: + +- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course) +- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow) +- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy) +- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work) + +Pick a challenge markdown file from the options above. + +### Skim through the video associated with the challenge and create a mutiple choice question + +First, find the videoId. + +For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format. +```` +--- +id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11 +videoId: nVAaxZ34khk +--- +``` + +Next, access the YouTube video with that videoId. The url for the video will be: +https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets) + +In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk + +Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video. + +### Add the question to the markdown file + +You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser. + +If a question has not yet been added to a particular video challenge, it will have the following default question: + +```yml +question: + text: | + Question + answers: + - | + one + - | + two + - | + three + solution: 3 +``` + +Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks. + +#### Use markdown to format your question + +The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this: + +```yml +question: + text: | + Question +``` + +Then you need to make sure that your question is on a new line and indented one level more than `text: |`. + +The same approach can be used for the answers, so the entire question becomes + +```yml +question: + text: | + Question + answers: + - | + First answer + - | + Second + - | + Third + solution: 2 +``` + +Make sure each answer is plausible but there is only one correct answer. + +#### Use of HTML + +Questions and answers can contain certain HTML tags like `
              ` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them. + +### Question examples + +#### Examples without HTML + +````yml +question: + text: | + What does this JavaScript code log to the console? + ```js + console.log('hello world'); + ```` + + + Select an answer! + answers: + - | hello *world* + - | **hello** world + - | hello world solution: 3 +```` + +````yml +question: + text: | + What will print out after running this code: + ```py + width = 15 + height = 12.0 + print(height/3) + ```` + answers: + - | 39 + - | 4 + - | 4.0 + - | 5.0 + - | 5 solution: 3 +```` + +#### Example with HTML + +```yml +question: + text: | + What will print out after running this code: +
              width = 15
              height = 12.0
              print(height/3)
              + answers: + - | + 39 + - | + 4 + - | + 4.0 + - | + 5.0 + - | + 5 + solution: 3 +```` + +The final example demonstrates that HTML can be used, but that it is not as readable as the version without it. + +For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) + +## Open a pull request + +After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md). diff --git a/docs/i18n/Swahili/how-to-open-a-pull-request.md b/docs/i18n/Swahili/how-to-open-a-pull-request.md new file mode 100644 index 0000000000..2729cd6237 --- /dev/null +++ b/docs/i18n/Swahili/how-to-open-a-pull-request.md @@ -0,0 +1,179 @@ +# How to open a Pull Request (PR) + +A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR. + +## Prepare a good PR title + +We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format: + +> `([optional scope(s)]): ` +> +> For example: +> +> `fix(learn): tests for the do...while loop challenge` + +When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description. + +**Type:** + +| Type | When to select | +|:----- |:---------------------------------------------------------------------------- | +| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. | +| feat | Only if you are adding new functionality, tests, etc. | +| chore | Changes that are not related to code, tests or verbiage of a lesson. | +| docs | Changes to `/docs` directory or the contributing guidelines, etc. | + +**Scope:** + +You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope). + +**Description:** + +Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments. + +Some examples of good PRs titles would be: + +- `fix(a11y): improved search bar contrast` +- `feat: add more tests to html and css challenges` +- `fix(api,client): prevent CORS errors on form submission` +- `docs(i18n): Chinese translation of local setup` + +## Proposing a Pull Request + +1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page. + + ![Image - Compare pull request prompt on GitHub](./images/github/compare-pull-request-prompt.png) + +2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch. + + Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request. + + ![Image - Comparing forks when making a pull request](./images/github/comparing-forks-for-pull-request.png) + +3. Submit the pull request from your branch to freeCodeCamp's `master` branch. + +4. In the body of your PR include a more detailed summary of the changes you made and why. + + - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request. + + - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted. + + - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords). + + > Example: `Closes #123` will close issue 123 + +5. Indicate if you have tested on a local copy of the site or not. + + This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page. + +## Feedback on pull requests + +> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute. + +Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course. + +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). + +> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork. + +## Conflicts on a pull request + +Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge. + +More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do. + +### For usual bug fixes and features + +When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase: + +1. Rebase your local copy: + + ```console + git checkout + git pull --rebase upstream master + ``` + +2. Resolve any conflicts and add / edit commits + + ```console + # Either + git add . + git commit -m "chore: resolve conflicts" + + # Or + git add . + git commit --amend --no-edit + ``` + +3. Push back your changes to the PR + + ```console + git push --force origin + ``` + +### For upcoming curriculum and features + +When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick: + +1. Make sure your upstream comes in sync with your local: + + ```console + git checkout master + git fetch --all --prune + git checkout next-python-projects + git reset --hard upstream/next-python-projects + ``` + +2. Take backup + + a. Either delete your local branch after taking a backup (if you still have it locally): + + ```console + git checkout + + # example: + # git checkout feat/add-numpy-video-question + + git checkout -b + + # example: + # git checkout -b backup-feat/add-numpy-video-question + + git branch -D + ``` + + b. Or just a backup of your pr branch (if you do not have it locally): + + ```console + git checkout -b origin/ + + # example: + # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question + ``` + +4. Start off with a clean slate: + + ```console + git checkout -b next-python-projects + git cherry-pick + ``` + +5. Resolve any conflicts, and cleanup, install run tests + + ```console + npm run clean + + npm ci + npm run test:curriculum --superblock= + + # example: + + # npm run test:curriculum --superblock=python-for-everybody + + ``` + +6. If everything looks good push back to the PR + + ```console + git push --force origin + ``` diff --git a/docs/i18n/Swahili/how-to-setup-freecodecamp-locally.md b/docs/i18n/Swahili/how-to-setup-freecodecamp-locally.md new file mode 100644 index 0000000000..619db733cf --- /dev/null +++ b/docs/i18n/Swahili/how-to-setup-freecodecamp-locally.md @@ -0,0 +1,546 @@ +Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly. + +Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer. + +> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment. +> +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) +> +> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.) + +### How to prepare your local machine + +Start by installing the prerequisite software for your operating system. + +We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS. + +We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl). + +Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead. + +**Prerequisites:** + +| Prerequisite | Version | Notes | +| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) | +| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS | +| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). | + +> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details. + +If Node.js is already installed on your machine, run the following commands to validate the versions: + +```console +node -v +npm -v +``` + +> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases. + +Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once. + +**Follow these steps to get your development environment ready:** + +1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated. + +2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. + +3. Install a code editor of your choice. + + We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors. + +4. Set up linting for your code editor. + + You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121). + + > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase. + +## Fork the repository on GitHub + +[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub. + +This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR). + +> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository. +> +> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. + +**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:** + +1. Go to the freeCodeCamp repository on GitHub: + +2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) + +3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp` + +
              + + How to fork freeCodeCamp on GitHub (screenshot) + + +
              + How to fork freeCodeCamp on GitHub +
              + +## Clone your fork from GitHub + +[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. + +Run these commands on your local machine: + +1. Open a Terminal / Command Prompt / Shell in your projects directory + + _i.e.: `/yourprojectsdirectory/`_ + +2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username + + ```console + git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git + ``` + +This will download the entire freeCodeCamp repository to your projects directory. + +Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. + +## Set up syncing from parent + +Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository. + +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository. + +You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly. + +1. Change directory to the new freeCodeCamp directory: + + ```console + cd freeCodeCamp + ``` + +2. Add a remote reference to the main freeCodeCamp repository: + + ```console + git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git + ``` + +3. Ensure the configuration looks correct: + + ```console + git remote -v + ``` + + The output should look something like below: + + ```console + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) + origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) + upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) + ``` + +## Running freeCodeCamp locally + +Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to: + +- Preview edits to pages as they would appear on the learning platform. +- Work on UI related issues and enhancements. +- Debug and fix issues with the application servers and client apps. + +If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported. + +And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). + +> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts. +> +> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine. +> +> [Skip to making changes](#making-changes-locally). + +### Configuring dependencies + +#### Step 1: Set up the environment variable file + +The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. + +```console +# Create a copy of the "sample.env" and name it ".env". +# Populate it with the necessary API keys and secrets: + +# macOS / Linux +cp sample.env .env + +# Windows +copy sample.env .env +``` + +The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is. + +> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file. + +#### Step 2: Install dependencies + +This step will install the dependencies required for the application to run: + +```console +npm ci +``` + +#### Step 3: Start MongoDB and seed the database + +Before you can run the application locally, you will need to start the MongoDB service. + +> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed. + +Start the MongoDB server in a separate terminal: + +- On macOS & Ubuntu: + + ```console + mongod + ``` + +- On Windows, you must specify the full path to the `mongod` binary + + ```console + "C:\Program Files\MongoDB\Server\3.6\bin\mongod" + ``` + + Make sure to replace `3.6` with the version you have installed + +> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/) + +Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things. + +```console +npm run seed +``` + +#### Step 4: Start the freeCodeCamp client application and API server + +You can now start up the API server and the client applications. + +```console +npm run develop +``` + +This single command will fire up all the services, including the API server and the client applications available for you to work on. + +> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine. + +> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000` + +> If you visit you should see the available APIs. + +## Sign in with a local user + +Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application. + +However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally. + +Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page. + +
              + + How to sign in when working locally (screenshot) + + +
              + How to sign in when working locally +
              + +## Making changes locally + +You can now make changes to files and commit your changes to your local clone of your fork. + +Follow these steps: + +1. Validate that you are on the `master` branch: + + ```console + git status + ``` + + You should get an output like this: + + ```console + On branch master + Your branch is up-to-date with 'origin/master'. + + nothing to commit, working directory clean + ``` + + If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`: + + ```console + git checkout master + ``` + +2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch: + + > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step. + > + > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`. + + This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later. + + Update your local copy of the freeCodeCamp upstream repository: + + ```console + git fetch upstream + ``` + + Hard reset your master branch with the freeCodeCamp master: + + ```console + git reset --hard upstream/master + ``` + + Push your master branch to your origin to have a clean history on your fork on GitHub: + + ```console + git push origin master --force + ``` + + You can validate your current master matches the upstream/master by performing a diff: + + ```console + git diff upstream/master + ``` + + The resulting output should be empty. + +3. Create a fresh new branch: + + Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork. + + Check that you are on `master` as explained previously, and branch off from there: + + ```console + git checkout -b fix/update-guide-for-xyz + ``` + + Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. + + Some examples of good branch names are: + + ```md + fix/update-challenges-for-react + fix/update-guide-for-html-css + fix/platform-bug-sign-in-issues + feat/add-guide-article-for-javascript + translate/add-spanish-basic-html + ``` + +4. Edit pages and work on code in your favorite text editor. + +5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes. + +6. Make sure you fix any errors and check the formatting of your changes. + +7. Check and confirm the files you are updating: + + ```console + git status + ``` + + This should show a list of `unstaged` files that you have edited. + + ```console + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. + + Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) + + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ... + ``` + +8. Stage the changes and make a commit: + + In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed. + + ```console + git add path/to/my/changed/file.ext + ``` + + Or you can add all the `unstaged` files to the staging area: + + ```console + git add . + ``` + + Only the files that were moved to the staging area will be added when you make a commit. + + ```console + git status + ``` + + Output: + + ```console + On branch feat/documentation + Your branch is up to date with 'upstream/feat/documentation'. + + Changes to be committed: + (use "git reset HEAD ..." to unstage) + + modified: CONTRIBUTING.md + modified: docs/README.md + modified: docs/how-to-setup-freecodecamp-locally.md + modified: docs/how-to-work-on-guide-articles.md + ``` + + Now, you can commit your changes with a short message like so: + + ```console + git commit -m "fix: my short commit message" + ``` + + Some examples: + + ```md + fix: update guide article for Java - for loop + feat: add guide article for alexa skills + ``` + + Optional: + + We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices. + + Some examples of conventional commit messages are: + + ```md + fix: update HTML guide article + fix: update build scripts for Travis-CI + feat: add article for JavaScript hoisting + docs: update contributing guidelines + ``` + + Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message. + + This does not take any additional time than an unconventional message like 'update file' or 'add index.md' + + You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits). + +9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with: + + ```console + git commit --amend + ``` + + This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description. + +10. Next, you can push your changes to your fork: + + ```console + git push origin branch/name-here + ``` + +## Proposing a Pull Request (PR) + +After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md). + +## Quick commands reference + +A quick reference to the commands that you will need when working locally. + +| command | description | +| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. | +| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | +| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. | +| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. | +| `npm run test:client` | Run the client test suite. | +| `npm run test:curriculum` | Run the curriculum test suite. | +| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. | +| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. | +| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error | +| `npm run test:server` | Run the server test suite. | +| `npm run e2e` | Run the Cypress end to end tests. | +| `npm run clean` | Uninstalls all dependencies and cleans up caches. | + +## Troubleshooting + +### Issues with installing the recommended prerequisites + +We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2). + +It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query. + +If you are on a different OS and/or are still running into issues, see [getting help](#getting-help). + +> [!WARNING] +> +> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project. + +### Issues with the UI, Fonts, build errors etc. + +If you face issues with the UI, Fonts or see builds errors a cleanup can be useful: + +```console +npm run clean +npm ci +npm run seed +npm run develop +``` + +OR + +Use the shortcut + +``` +npm run clean-and-develop +``` + +If you continue to face issues with the build, cleaning up the workspace is recommend. + +Use `git clean` in interative mode: + +``` +git clean -ifdX +``` + +
              + + How to clean git untracked files (screenshot) + + +
              + How to clean git untracked files +
              + +### Issues with API, Login, Challenge Submissions, etc. + +If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program. + +**On Linux / macOS / WSL on Windows - From Terminal:** + +```console +netstat -ab | grep "3000" + +tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN +``` + +**On Windows - From Elevated PowerShell:** + +```powershell +netstat -ab | Select-String "3000" + +TCP 0.0.0.0:3000 DESKTOP LISTENING +``` + +### Issues installing dependencies + +If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources. + +The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup. + +## Getting Help + +If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS). + +There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution. diff --git a/docs/i18n/Swahili/how-to-setup-wsl.md b/docs/i18n/Swahili/how-to-setup-wsl.md new file mode 100644 index 0000000000..68bce6dde6 --- /dev/null +++ b/docs/i18n/Swahili/how-to-setup-wsl.md @@ -0,0 +1,129 @@ +# Set up freeCodeCamp on Windows Subsystem for Linux (WSL) + +> [!NOTE] Before you follow these instructions make sure your system meets the requirements +> +> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home. +> +> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) + +This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu. + +## Enable WSL + +Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2. + +## Install Ubuntu + +1. We recommended using Ubuntu-18.04 or above with WSL2. + + > [!NOTE] + > + > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide. + +2. Update the dependencies for the OS + + ```console + sudo apt update + sudo apt upgrade -y + + # cleanup + sudo apt autoremove -y + ``` + +## Set up Git + +Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`. + +```output +~ +❯ git --version +git version 2.25.1 +``` + +(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub. + +## Installing a Code Editor + +We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro. + +Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows. + +## Installing Docker Desktop + +**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2. + +Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution. + +There are some minimum hardware requirements for the best experience. + +## Configure Docker Desktop for WSL + +Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend. + +This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu. + +## Install MongoDB from Docker Hub + +Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service: + +1. Launch a new Ubuntu-18.04 terminal + +2. Pull `MongoDB 3.6` from dockerhub + + ```console + docker pull mongo:3 + ``` + +3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts + + ```console + docker run -it \ + -v mongodata:/data/db \ + -p 27017:27017 \ + --name mongodb \ + --restart unless-stopped \ + -d mongo:3 + ``` + +4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`. + +## Installing Node.js and npm + +We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). + +Once installed use these commands to install and use the Node.js version as needed + +```console +nvm install --lts + +# OR +# nvm install + +nvm install 14 + +# Usage +# nvm use + +nvm use 12 +``` + +Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with: + +```console +npm install -g npm@latest +``` + +## Set up freeCodeCamp locally + +Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine. + +> [!WARNING] +> +> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase. + +## Useful Links + +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- Frequently asked questions on: + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq) + - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs) diff --git a/docs/i18n/Swahili/how-to-use-docker-on-windows-home.md b/docs/i18n/Swahili/how-to-use-docker-on-windows-home.md new file mode 100644 index 0000000000..85ac65a3e3 --- /dev/null +++ b/docs/i18n/Swahili/how-to-use-docker-on-windows-home.md @@ -0,0 +1,15 @@ +# How to use Docker on Windows Home + +There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise. + +Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram. + +Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation. + +If you see messages like + +```shell +bash: change_volumes_owner.sh: No such file or directory +``` + +when you `npm run docker:init` this is likely the culprit. diff --git a/docs/i18n/Swahili/how-to-work-on-coding-challenges.md b/docs/i18n/Swahili/how-to-work-on-coding-challenges.md new file mode 100644 index 0000000000..2b95545e91 --- /dev/null +++ b/docs/i18n/Swahili/how-to-work-on-coding-challenges.md @@ -0,0 +1,622 @@ +# 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/). + +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 [our Discord server](https://discord.gg/pFspAhS). + +With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come. + +The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages. + +You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory. + +## Set up the tooling for the curriculum + +Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below: + +- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes. +- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes. + + [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) + +- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again. + +## Challenge Template + +Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template). + +````md +--- +id: Unique identifier (alphanumerical, MongoDB_id) +title: Challenge Title +challengeType: 0 +videoUrl: 'url of video explanation' +--- + +## Description + +
              +A Description of the challenge and what is required to pass +
              + +## Instructions + +
              +Instructions about what exactly needs to be done. +
              + +## Tests + +
              + +```yml +tests: + - text: Should return "foo" + testString: 'A stringified function possibly using Chai asserts' +```` + +
              + +## Challenge Seed + +
              + +
              + +```{ext} +Code displayed in the editor by default. + +This is a required section for the challenge. +``` + +
              + +### Before Test + +
              + +```{ext} +Optional Test setup code. +``` + +
              + +### After Test + +
              + +```{ext} +Optional Test tear down code. +``` + +
              + +
              + +## Solution + +
              + +```{ext} +// solution required +``` + +
              + +```` + +> [!NOTE] +> +> 1. In the above sections, examples of `{ext}` are: +> +> - `html` - HTML/CSS +> - `js` - JavaScript +> - `jsx` - JSX +> +> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts. + +## Numbering Challenges + +Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.). + +To generate a new one in a shell (assuming MongoDB is running separately): + +1. Run `mongo` command. +2. Run `ObjectId()` command. + +For example: + +```bash +$ mongo +MongoDB shell version v3.6.1 +connecting to: mongodb://127.0.0.1:27017 +MongoDB server version: 3.4.10 +... +$ ObjectId() +ObjectId("5a474d78df58bafeb3535d34") +```` + +The result is a new id, for example `5a474d78df58bafeb3535d34` above. + +Once you have your id, put it into the markdown file as the `id` field at the top, e.g. + +```yml +--- +id: 5a474d78df58bafeb3535d34 +title: Challenge Title +``` + +## Naming challenges + +Naming things is hard. We've made it easier by imposing some constraints. + +All challenge titles should be explicit and should follow this pattern: + +\[verb\]\[object clause\] + +Here are some example challenge names: + +- Use Clockwise Notation to Specify the Padding of an Element +- Condense arrays with .reduce +- Use Bracket Notation to Find the First Character in a String + +## Challenge descriptions/instructions + +Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English. + +Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text. + +Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us"). + +Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article. + +You can add diagrams if absolutely necessary. + +Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems. + +Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges. + +- JavaScript (capital letters in "J" and "S" and no abbreviations) +- Node.js +- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms. + +### The 2-minute rule + +Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass. + +If it takes longer than two minutes to complete the challenge, you have two options: + +- Simplify the challenge, or +- Split the challenge into two challenges. + +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward. + +We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split. + +### Modularity + +Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name. + +We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later. + +Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts. + +### Formatting challenge text + +Here are specific formatting guidelines for challenge text and examples: + +- Language keywords go in `` tags. For example, HTML tag names or CSS property names +- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `` tags +- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below: +```md +Use parseInt to convert the variable realNumber into an integer. +``` +- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` tags. +- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below: + +**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks. + +````md +The following is an example of code: + +```{language} + +[YOUR CODE HERE] + +```` +```` + +- Additional information in the form of a note should be formatted `Note: Rest of note text...` +- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`. +- Use single-quotes where applicable + +**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags. + +## Writing tests + +Challenges should have the minimum number of tests necessary to verify that a camper understands a concept. + +Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point. + +Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. + +## Formatting seed code + +Here are specific formatting guidelines for the challenge seed code: + +- Use two spaces to indent +- JavaScript statements end with a semicolon +- Use double quotes where applicable + +### Seed code comments + +We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. + +Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. + +Example of valid single line JavaScript comment: + +```js +// Only change code below this line +```` + +Example of a valid CSS comment: + +```js +/* Only change code above this line */ +``` + +If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made. + +```js +var a = 3; +var b = 17; +var c = 12; + +// Only change code below this line +a = a + 12; +b = 9 + b; +c = c + 7; +``` + +If a challenge has multiple places where the user is expected to change code (i.e. the React challenges) + +```jsx +class MyComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + text: "Hello" + }; + // Change code below this line + + // Change code above this line + } + handleClick() { + this.setState({ + text: "You clicked!" + }); + } + render() { + return ( +
              + { /* Change code below this line */ } + + { /* Change code above this line */ } +

              {this.state.text}

              +
              + ); + } +}; +``` + +### Translation of seed code comments + +There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. + +Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated. + +```text +Declare the myGlobal variable below this line +``` +> [!NOTE] +> +> We are working on an integration to make it possible to work on i18n for the comment dictionary. + +## Hints and Solutions + +Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category. + +If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic. + +### Adding new Challenge hints/solutions Topics + +Take the following steps when adding a new challenge hints/solutions related topic. + +1. Start by following the same steps for creating a new topic but review the next for creating the title. +2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`". +3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`. +4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic. + +### Guidelines for content of hints and solutions topics + +When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics: + +````md +# Challenge Name Goes Here + +--- + +## Problem Explanation + +This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section + +#### Relevant Links + +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here) + +--- + +## Hints + +### Hint 1 + +Hint goes here + +### Hint 2 + +Hint goes here + +--- + +## Solutions + +
              Solution 1 (Click to Show/Hide) + +```js +function myFunc() { + console.log('Hello World!'); +} +```` + +#### Code Explanation + +- Code explanation goes here +- Code explanation goes here + +#### Relevant Links + +- [Link Text](link_url_goes_here) +- [Link Text](link_url_goes_here) + +
              +```` + +## Testing Challenges + +Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge. + +1. To test all challenges run the below command from the root directory + +```` +npm run test:curriculum +``` + +2. You can also test a block or a superblock of challenges with these commands + +``` +npm run test:curriculum --block='Basic HTML and HTML5' +``` + +``` +npm run test:curriculum --superblock=responsive-web-design +``` + +You are also able to test one challenge individually by performing the following steps: + +1. Switch to the `curriculum` directory: + + ``` + cd curriculum + ``` + +2. Run the following for each challenge file for which you have changed: + + ``` + npm run test -- -g 'the full English title of the challenge' + ``` + +Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md). + +> [!TIP] +> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test. +> +> The currently accepted values are `english` and `chinese`, with `english` being set by default. + +## Upcoming Challenge Template + +The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure: + +````mdx + +--- +id: Unique identifier (alphanumerical, MongoDB_id) +title: 'Challenge Title' +challengeType: Integer, defined in `client/utils/challengeTypes.js` +videoUrl: 'url of video explanation' +forumTopicId: 12345 +--- + +import Script from './script.mdx'; + +## --step-description-- + +Description text, in markdown + +```html +
              + example code +
              +``` + +## --step-hints-- + +![test-id-1] + +There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks. + +```js +Code for test one +``` + +![test-id-2] + +More instructions in markdown syntax + +```js +More code +``` + +## --step-seed-- + +### --before-user-code-- + +```lang +Code evaluated before the user’s +``` + +### --after-user-code-- + +```lang +Code evaluated after the user’s, and just before the tests +``` + +### --seed-content-- + +![index-html] + +```html +Some html +``` + +```css +Some css +``` + +```js +Some js +``` + +![index-js] + +