diff --git a/README.korean.md b/README.korean.md index c1dd21bb8..c88304dfb 100644 --- a/README.korean.md +++ b/README.korean.md @@ -9,7 +9,7 @@
- 83 items Last update: Jun 5, 2019 Updated for Node 12.14.0 LTS + 86 items Last update: March, 2020 Updated for Node 13.1.0

@@ -18,21 +18,25 @@
-다른 언어로 읽기: [![CN](/assets/flags/CN.png)**CN**](/README.chinese.md) [(![ES](/assets/flags/ES.png)**ES**, ![FR](/assets/flags/FR.png)**FR**, ![HE](/assets/flags/HE.png)**HE**, ![KR](/assets/flags/KR.png)**KR**, ![RU](/assets/flags/RU.png)**RU**, ![TR](/assets/flags/TR.png)**TR** 는 작업중입니다!)](#translations) +[:green_book: 포괄적인 Node.js 테스트 & 품질 모범사례 강의](https://testjavascript.com/)
-###### Built and maintained by our [Steering Committee](#steering-committee) and [Collaborators](#collaborators) +다른 언어로 읽기: [![CN](/assets/flags/CN.png)**CN**](/README.chinese.md), [![BR](/assets/flags/BR.png)**BR**](/README.brazilian-portuguese.md), [![RU](/assets/flags/RU.png)**RU**](/README.russian.md) [(![ES](/assets/flags/ES.png)**ES**, ![FR](/assets/flags/FR.png)**FR**, ![HE](/assets/flags/HE.png)**HE**, ![KR](/assets/flags/KR.png)**KR** and ![TR](/assets/flags/TR.png)**TR** 은 작업중입니다!)](#translations) -# Latest Best Practices and News +
-- **New best practice:** 4.4: [Avoid test-fixtures, add data per test](https://github.com/i0natan/nodebestpractices#4-testing-and-overall-quality-practices) +###### [운영 위원회](#운영-위원회)와 [협력자분들](#협력자)이 구축하고 유지하고 있습니다 -- **New best practice:** 6.25: [Avoid publishing secrets to the npm registry](/sections/security/avoid_publishing_secrets.md) +# 최근 모범사례와 뉴스 -- **New translation:** ![BR](/assets/flags/BR.png) [Brazilian Portuguese](/README.brazilian-portuguese.md) available now, courtesy of [Marcelo Melo](https://github.com/marcelosdm)! ❤️ +- **:tada: Node.js 모범사례가 4만 별에 도달했습니다**: Thank you to each and every contributor who helped turning this project into what it is today! We've got lots of plans for the time ahead, as we expand our ever-growing list of Node.js best practices even further. -
+- **:rocket: 새로운 모범사례 둘 추가**: We've been working hard on two new best practices, a section about [using npm ci](https://github.com/goldbergyoni/nodebestpractices#-519-install-your-packages-with-npm-ci) to preview the dependency state in production environments and another on [testing your middlewares in isolation](https://github.com/goldbergyoni/nodebestpractices#-413-test-your-middlewares-in-isolation) + +- **:whale: Node.js + Docker 모범사례**: We've opened a [call for ideas](https://github.com/goldbergyoni/nodebestpractices/issues/620) to collect best practices related to running dockerized Node.js applications. If you've got any further best practices, don't hesitate to join the conversation! + +

# 어서오세요! 먼저 이 3가지를 알아두세요: @@ -50,9 +54,9 @@ 2. [에러 처리 방법 (11)](#2-에러-처리-방법) 3. [코드 스타일 (12) ](#3-코드-스타일) 4. [테스트 및 전체 품질 관리 (13) ](#4-테스트-및-전체-품질-관리) -5. [운영 환경으로 전환하기 (16) ](#5-운영-환경으로-전환하기) -6. [보안 (25)](#6-security-best-practices) -7. [성능 (2) (현재진행형 ✍️)](#7-draft-performance-best-practices) +5. [운영 환경으로 전환하기 (19) ](#5-운영-환경으로-전환하기) +6. [보안 (25)](#6-보안) +7. [성능 (2) (현재진행형 ✍️)](#7-초안-성능)

@@ -519,7 +523,7 @@ null == undefined // true # `5. 운영환경으로 전환하기` -## ![✔] 5.1. 모니터링! +## ![✔] 5.1. 모니터링 **핵심요약:** 모니터링은 고객이 문제를 발견하기 전에 먼저 발견하는 게임이다. 모니터링에는 분명히 전례가없는 중요성을 부여해야한다. 솔루션에 너무 많은 기능들이 들어가 있을 가능성이 있으므로 확인해야만하는 기본 항목을 내부적으로 정의하고 나서 추가적인 기능들을 살펴보고 필요한 기능들이 모두 들어있는 솔루션을 선택하라. 아래의 'gist'를 클릭하면 솔루션 개요를 볼 수 있다 @@ -695,11 +699,21 @@ null == undefined // true 🔗 [**자세히 보기: Log Routing**](/sections/production/logrouting.md) +

+ +## ![✔] 5.19. `npm ci`로 패키지를 설치해라 + +**핵심요약** 상용환경에서 쓰는 코드가 테스트할떄 쓴 패키지 버젼과 동일하다는 것을 반드시 보장해야 한다. `npm ci`를 써서 의존하는 패키지를 모두 package.json과 package-lock.json만들 따른 클린설치를 해라. + +**그렇게 하지 않을 경우:** QA팀이 코드를 승인하기 전에 철저히 테스트해도 상용환경에서는 다르게 작동할것이다. 게다가 같은 프로덕션 클러스터의 다른 서버들이 서로 다른 코드를 실행할 수도 있다. + +🔗 [**자세히 보기: npm ci 쓰기**](/sections/production/installpackageswithnpmci.md) +


⬆ 목차로 돌아가기

-# `6. Security Best Practices` +# `6. 보안`
54 items @@ -1001,14 +1015,26 @@ null == undefined // true

⬆ Return to top

-# `7. Performance Best Practices` +# `7. 초안: 성능` + +## 협력자들이 현재 작업중입니다. [함꼐 하시겠습니까?](https://github.com/i0natan/nodebestpractices/issues/256) + +

+ +## ![✔] 7.1. Don't block the event loop -## Our contributors are working on this section. [Would you like to join?](https://github.com/i0natan/nodebestpractices/issues/256) +**핵심요약:** Avoid CPU intensive tasks as they will block the mostly single-threaded Event Loop and offload those to a dedicated thread, process or even a different technology based on the context. -## ![✔] 7.1. Prefer native JS methods over user-land utils like Lodash +**그렇게 하지 않을 경우:** As the Event Loop is blocked, Node.js will be unable to handle other request thus causing delays for concurrent users. **3000 users are waiting for a response, the content is ready to be served, but one single request blocks the server from dispatching the results back** - **핵심요약:** It's often more penalising to use utility libraries like `lodash` and `underscore` over native methods as it leads to unneeded dependencies and slower performance. - Bear in mind that with the introduction of the new V8 engine alongside the new ES standards, native methods were improved in such a way that it's now about 50% more performant than utility libraries. +🔗 [**자세히 보기: Do not block the event loop**](/sections/performance/block-loop.md) + +


+ +## ![✔] 7.2. Prefer native JS methods over user-land utils like Lodash + +**핵심요약:** It's often more penalising to use utility libraries like `lodash` and `underscore` over native methods as it leads to unneeded dependencies and slower performance. +Bear in mind that with the introduction of the new V8 engine alongside the new ES standards, native methods were improved in such a way that it's now about 50% more performant than utility libraries. **그렇게 하지 않을 경우:** You'll have to maintain less performant projects where you could have simply used what was **already** available or dealt with a few more lines in exchange of a few more files. @@ -1028,21 +1054,21 @@ null == undefined // true ### 번역 작업 완료 -- ![BR](/assets/flags/BR.png) [Brazilian Portuguese](/README.brazilian-portuguese.md) - Courtesy of [Marcelo Melo](https://github.com/marcelosdm) -- ![CN](/assets/flags/CN.png) [Chinese](README.chinese.md) - Courtesy of [Matt Jin](https://github.com/mattjin) +- ![BR](/assets/flags/BR.png) [Brazilian Portuguese](./README.brazilian-portuguese.md) - Courtesy of [Marcelo Melo](https://github.com/marcelosdm) +- ![CN](/assets/flags/CN.png) [Chinese](./README.chinese.md) - Courtesy of [Matt Jin](https://github.com/mattjin) +- ![RU](/assets/flags/RU.png) [Russian](./README.russian.md) - Courtesy of [Alex Ivanov](https://github.com/contributorpw) ### 번역 작업중 - ![FR](/assets/flags/FR.png) [French](https://github.com/gaspaonrocks/nodebestpractices/blob/french-translation/README.french.md) ([Discussion](https://github.com/i0natan/nodebestpractices/issues/129)) - ![HE](/assets/flags/HE.png) Hebrew ([Discussion](https://github.com/i0natan/nodebestpractices/issues/156)) - ![KR](/assets/flags/KR.png) [Korean](README.korean.md) - Courtesy of [Sangbeom Han](https://github.com/uronly14me) ([Discussion](https://github.com/i0natan/nodebestpractices/issues/94)) -- ![RU](/assets/flags/RU.png) [Russian](https://github.com/i0natan/nodebestpractices/blob/russian-translation/README.russian.md) ([Discussion](https://github.com/i0natan/nodebestpractices/issues/105)) - ![ES](/assets/flags/ES.png) [Spanish](https://github.com/i0natan/nodebestpractices/blob/spanish-translation/README.spanish.md) ([Discussion](https://github.com/i0natan/nodebestpractices/issues/95)) - ![TR](/assets/flags/TR.png) Turkish ([Discussion](https://github.com/i0natan/nodebestpractices/issues/139))

-## Steering Committee +## 운영 위원회 Meet the steering committee members - the people who work together to provide guidance and future direction to the project. In addition, each member of the committee leads a project tracked under our [Github projects](https://github.com/i0natan/nodebestpractices/projects). @@ -1052,7 +1078,7 @@ Meet the steering committee members - the people who work together to provide gu -Independent Node.js consultant who works with customers in USA, Europe, and Israel on building large scale scalable Node applications. Many of the best practices above were first published at [goldbergyoni.com](https://goldbergyoni.com). Reach Yoni at @goldbergyoni or me@goldbergyoni.com +Independent Node.js consultant who works with customers in the USA, Europe, and Israel on building large-scale Node.js applications. Many of the best practices above were first published at [goldbergyoni.com](https://goldbergyoni.com). Reach Yoni at [@goldbergyoni](https://github.com/goldbergyoni) or [me@goldbergyoni.com](mailto:me@goldbergyoni.com)
@@ -1086,121 +1112,159 @@ Deep specialist in JavaScript and its ecosystem — React, Node.js, MongoDB, pre
-## Collaborators +## 협력자 Thank you to all our collaborators! 🙏 -Our collaborators are members who are contributing to the repository on a reguar basis, through suggesting new best practices, triaging issues, reviewing pull requests and more. If you are interested in helping us guide thousands of people to craft better Node.js applications, please read our [contributor guidelines](/.operations/CONTRIBUTING.md) 🎉 +Our collaborators are members who are contributing to the repository on a regular basis, through suggesting new best practices, triaging issues, reviewing pull requests and more. If you are interested in helping us guide thousands of people to craft better Node.js applications, please read our [contributor guidelines](/.operations/CONTRIBUTING.md) 🎉 -| | | -| :--: | :--: | -| [Ido Richter (Founder)](https://github.com/idori) | [Keith Holliday](https://github.com/TheHollidayInn) | +| | | | +| :---------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: |:--------------------------------------------------------------------------------------------------------------------------------: | +| [Ido Richter (Founder)](https://github.com/idori) | [Keith Holliday](https://github.com/TheHollidayInn) | [Kevyn Bruyere](https://github.com/kevynb) | ### Past collaborators | | -| :--: | -| [Refael Ackermann](https://github.com/refack) | +| :-------------------------------------------------------------------------------------------------------------------------: | +| [Refael Ackermann](https://github.com/refack) |
-## 감사 노트 - -하나의 단어를 고치는 것 부터 새로운 모범사례까지, 어떤 컨트리뷰트든 환영합니다. 아래는 이 프로젝트에 컨트리뷰트한 모든 사람의 리스트입니다. 🌻는 성공적인 풀리퀘스트를 표시하고, ⭐는 새로운 모범사례를 의미합니다. - -### Flowers - -🌻 [Kevin Rambaud](https://github.com/kevinrambaud), -🌻 [Michael Fine](https://github.com/mfine15), -🌻 [Shreya Dahal](https://github.com/squgeim), -🌻 [ChangJoo Park](https://github.com/ChangJoo-Park), -🌻 [Matheus Cruz Rocha](https://github.com/matheusrocha89), -🌻 [Yog Mehta](https://github.com/BitYog), -🌻 [Kudakwashe Paradzayi](https://github.com/kudapara), -🌻 [t1st3](https://github.com/t1st3), -🌻 [mulijordan1976](https://github.com/mulijordan1976), -🌻 [Matan Kushner](https://github.com/matchai), -🌻 [Fabio Hiroki](https://github.com/fabiothiroki), -🌻 [James Sumners](https://github.com/jsumners), -🌻 [Chandan Rai](https://github.com/crowchirp), -🌻 [Dan Gamble](https://github.com/dan-gamble), -🌻 [PJ Trainor](https://github.com/trainorpj), -🌻 [Remek Ambroziak](https://github.com/reod), -🌻 [Yoni Jah](https://github.com/yonjah), -🌻 [Misha Khokhlov](https://github.com/hazolsky), -🌻 [Evgeny Orekhov](https://github.com/EvgenyOrekhov), -🌻 [Gediminas Petrikas](https://github.com/gediminasml), -🌻 [Isaac Halvorson](https://github.com/hisaac), -🌻 [Vedran Karačić](https://github.com/vkaracic), -🌻 [lallenlowe](https://github.com/lallenlowe), -🌻 [Nathan Wells](https://github.com/nwwells), -🌻 [Paulo Vítor S Reis](https://github.com/paulovitin), -🌻 [syzer](https://github.com/syzer), -🌻 [David Sancho](https://github.com/davesnx), -🌻 [Robert Manolea](https://github.com/pupix), -🌻 [Xavier Ho](https://github.com/spaxe), -🌻 [Aaron Arney](https://github.com/ocularrhythm), -🌻 [Jan Charles Maghirang Adona](https://github.com/septa97), -🌻 [Allen Fang](https://github.com/AllenFang), -🌻 [Leonardo Villela](https://github.com/leonardovillela), -🌻 [Michal Zalecki](https://github.com/MichalZalecki) -🌻 [Chris Nicola](https://github.com/chrisnicola), -🌻 [Alejandro Corredor](https://github.com/aecorredor), -🌻 [Ye Min Htut](https://github.com/ymhtut), -🌻 [cwar](https://github.com/cwar), -🌻 [Yuwei](https://github.com/keyfoxth), -🌻 [Utkarsh Bhatt](https://github.com/utkarshbhatt12), -🌻 [Duarte Mendes](https://github.com/duartemendes), -🌻 [Sagir Khan](https://github.com/sagirk), -🌻 [Jason Kim](https://github.com/serv), -🌻 [Mitja O.](https://github.com/Max101), -🌻 [Sandro Miguel Marques](https://github.com/SandroMiguel), -🌻 [Gabe Kuslansky](https://github.com/GabeKuslansky), -🌻 [Ron Gross](https://github.com/ripper234), -🌻 [Valeri Karpov](https://github.com/vkarpov15) -🌻 [Sergio](https://github.com/imsergiobernal), -🌻 [Duarte Mendes](https://github.com/duartemendes), -🌻 [Nikola Telkedzhiev](https://github.com/ntelkedzhiev), -🌻 [Vitor Godoy](https://github.com/vitordagamagodoy), -🌻 [Manish Saraan](https://github.com/manishsaraan), -🌻 [Sangbeom Han](https://github.com/uronly14me), -🌻 [blackmatch](https://github.com/blackmatch), -🌻 [Joe Reeve](https://github.com/ISNIT0), -🌻 [Marcelo Melo](https://github.com/marcelosdm), -🌻 [Ryan Busby](https://github.com/BusbyActual), -🌻 [Iman Mohamadi](https://github.com/ImanMh), -🌻 [Remek Ambroziak](https://github.com/reod), -🌻 [Sergii Paryzhskyi](https://github.com/HeeL), -🌻 [Kapil Patel](https://github.com/kapilepatel), -🌻 [迷渡](https://github.com/justjavac), -🌻 [Hozefa](https://github.com/hozefaj), -🌻 [Ethan](https://github.com/el-ethan), -🌻 [Sam](https://github.com/milkdeliver), -🌻 [Arlind](https://github.com/ArlindXh), -🌻 [Teddy Toussaint](https://github.com/ttous), -🌻 [Lewis](https://github.com/LewisArdern), -🌻 [DouglasMV](https://github.com/DouglasMV), -🌻 [Corey Cleary](https://github.com/coreyc), -🌻 [Mehmet Perk](https://github.com/mperk), -🌻 [Ryan Ouyang](https://github.com/ryanouyang), -🌻 [Gabriel Lidenor](https://github.com/GabrielLidenor), -🌻 [Roman](https://github.com/animir), -🌻 [Invvard](https://github.com/Invvard), -🌻 [Rômulo Garofalo](https://github.com/romulogarofalo), -🌻 [Tho Q Luong](https://github.com/thoqbk), -🌻 [Burak Shen](https://github.com/Qeneke), -🌻 [Martin Muzatko](https://github.com/MartinMuzatko) - - -### Stars - -⭐ [Kyle Martin](https://github.com/js-kyle), -⭐ [Keith Holliday](https://github.com/TheHollidayInn), -⭐ [Corey Cleary](https://github.com/coreyc), -⭐ [Maximilian Berkmann](https://github.com/Berkmann18), -⭐ [DouglasMV](https://github.com/DouglasMV), -⭐ [Marcelo Melo](https://github.com/marcelosdm), -⭐ [Mehmet Perk](https://github.com/mperk), -⭐ [Ryan Ouyang](https://github.com/ryanouyang) - -


+## Contributing +If you've ever wanted to contribute to open source, now is your chance! See the [contributing docs](.operations/CONTRIBUTING.md) for more information. + +## Contributors ✨ + +Thanks goes to these wonderful people who have contributed to this repository! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Kevin Rambaud

🖋

Michael Fine

🖋

Shreya Dahal

🖋

Matheus Cruz Rocha

🖋

Yog Mehta

🖋

Kudakwashe Paradzayi

🖋

t1st3

🖋

mulijordan1976

🖋

Matan Kushner

🖋

Fabio Hiroki

🖋

James Sumners

🖋

Dan Gamble

🖋

PJ Trainor

🖋

Remek Ambroziak

🖋

Yoni Jah

🖋

Misha Khokhlov

🖋

Evgeny Orekhov

🖋

-

🖋

Isaac Halvorson

🖋

Vedran Karačić

🖋

lallenlowe

🖋

Nathan Wells

🖋

Paulo Reis

🖋

syzer

🖋

David Sancho

🖋

Robert Manolea

🖋

Xavier Ho

🖋

Aaron

🖋

Jan Charles Maghirang Adona

🖋

Allen

🖋

Leonardo Villela

🖋

Michał Załęcki

🖋

Chris Nicola

🖋

Alejandro Corredor

🖋

cwar

🖋

Yuwei

🖋

Utkarsh Bhatt

🖋

Duarte Mendes

🖋

Jason Kim

🖋

Mitja O.

🖋

Sandro Miguel Marques

🖋

Gabe

🖋

Ron Gross

🖋

Valeri Karpov

🖋

Sergio Bernal

🖋

Nikola Telkedzhiev

🖋

Vitor Godoy

🖋

Manish Saraan

🖋

Sangbeom Han

🖋

blackmatch

🖋

Joe Reeve

🖋

Ryan Busby

🖋

Iman Mohamadi

🖋

Sergii Paryzhskyi

🖋

Kapil Patel

🖋

迷渡

🖋

Hozefa

🖋

Ethan

🖋

Sam

🖋

Arlind

🖋

Teddy Toussaint

🖋

Lewis

🖋

Gabriel Lidenor

🖋

Roman

🖋

Francozeira

🖋

Invvard

🖋

Rômulo Garofalo

🖋

Tho Q Luong

🖋

Burak Shen

🖋

Martin Muzatko

🖋

Jared Collier

🖋

Hilton Meyer

🖋

ChangJoo Park(박창주)

🖋

Masahiro Sakaguchi

🖋

Keith Holliday

🖋

coreyc

🖋

Maximilian Berkmann

🖋

Douglas Mariano Valero

🖋

Marcelo Melo

🖋

Mehmet Perk

🖋

ryan ouyang

🖋

Shabeer

🖋

Eduard Kyvenko

🖋

Deyvison Rocha

🖋

George Mamer

🖋

Konstantinos Leimonis

🖋

Oliver Lluberes

🌍

Tien Do

🖋

Ranvir Singh

🖋

Vadim Nicolaev

🖋

German Gamboa Gonzalez

🖋

Hafez

🖋

Chandiran

🖋

VinayaSathyanarayana

🖋
+ + + +