GithubHelp home page GithubHelp logo

connect-foundation / 2019-20 Goto Github PK

View Code? Open in Web Editor NEW
14.0 14.0 2.0 4.24 MB

πŸ¦‰[Project 48] κ°œμΈκ°„ 쀑고 거래 쀑계 ν”Œλž«νΌ πŸ¦‰

Home Page: https://github.com/connect-foundation/2019-20/wiki

JavaScript 98.19% Shell 0.68% CSS 0.44% HTML 0.69%

2019-20's People

Contributors

connectfoundation avatar dependabot[bot] avatar johnie-yeo avatar kgpyo avatar sukjae avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

2019-20's Issues

μ‚¬μš©μžλ‘œμ„œ μ›ν•˜λŠ” μ œμ•½μ‘°κ±΄μœΌλ‘œ ν•„ν„°λ§ν•˜μ—¬ μ›ν•˜λŠ” 쑰건의 μƒν’ˆλ“€λ§Œ λ³Ό 수 μžˆλ‹€.

ν•„ν„°

μœ μ € μŠ€ν† λ¦¬ μΆ”κ°€ (Add User Story)

μœ μ € μŠ€ν† λ¦¬

  • μ‚¬μš©μžλ‘œμ„œ μ›ν•˜λŠ” μ œμ•½μ‘°κ±΄μœΌλ‘œ ν•„ν„°λ§ν•˜μ—¬ μ›ν•˜λŠ” 쑰건의 μƒν’ˆλ“€λ§Œ λ³Ό 수 μžˆλ‹€.

μƒμ„Έν•œ μ„€λͺ…

  • μ‚¬μš©μžλŠ” ν‚€μ›Œλ“œ κ²€μƒ‰λΏλ§Œ μ•„λ‹ˆλΌ λ‚΄κ°€ μžˆλŠ” 지역, κ°€κ²©λ²”μœ„, μΉ΄ν…Œκ³ λ¦¬, ν˜„μž¬ μΈκΈ°μƒν’ˆλ“±μ˜ 쑰건으둜 필터링 된 κ²°κ³Όλ₯Ό μ œκ³΅λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ‚΄κ°€ μ›ν•˜λŠ” μƒν’ˆμ„ λ”μš± μƒμ„Έν•œ 쑰건을 톡해 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ„ ν–‰ 이슈 (선택)

μ™„λ£Œ 쑰건

  • μ§€μ—­κΈ°λ°˜ 필터링
  • κ°€κ²©λ²”μœ„ 필터링
  • μΉ΄ν…Œκ³ λ¦¬ 필터링
  • μΈκΈ°μƒν’ˆ 필터링

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • EPIC을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€ (선택)
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό μœ„ν•œ μΆ©λΆ„ν•œ μ™„λ£Œ 쑰건이 μ œμ‹œ λ˜μ—ˆλŠ”κ°€
  • Assignees λ₯Ό μΆ”κ°€ ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Labels λ₯Ό μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

λŒμ–΄μ˜¬λ¦¬κΈ° κΈ°λŠ₯

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • ν•„μˆ˜ μš”μ†ŒλŠ” μ•„λ‹ˆλ‚˜ μ‚¬μš©μžμ˜ 편의λ₯Ό κ³ λ €ν•œ 좔가적인 κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • λŒμ–΄μ˜¬λ¦¬κΈ° κΈ°λŠ₯

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

Express JS κΈ°λ³Έ 폴더 ꡬ쑰 톡일 ν•˜κΈ°

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

Express JSλ₯Ό μ‚¬μš©ν•˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œ 폴더ꡬ쑰λ₯Ό ν†΅μΌν•˜μ—¬ ν˜‘μ—…μ„ μš©μ΄ν•˜κ²Œ ν•œλ‹€.

κΈ°λŠ₯ λ°°κ²½

Expressμ•± 의 κ²½μš°μ—λŠ” λΉ„μŠ·ν•œ κ΅¬μ„±μ˜ μ„œλ²„κ°€ μ—¬λŸ¬λ²ˆ λ°˜λ³΅λ˜μ–΄ μ‚¬μš©λ©λ‹ˆλ‹€(API μ„œλ²„). 이 κ³Όμ •μ—μ„œ νŒ€μ›λ“€κ³Ό ν•˜λ‚˜μ˜ μ†ŒμŠ€μ½”λ“œλ₯Ό κ³΅μœ ν•˜κ²Œ 되며, μ„œλ‘œ λ‹€λ₯Έ Express앱을 μƒμ„±ν•˜λ©΄μ„œ 일관적인 κ°œλ°œμ„ μœ„ν•˜μ—¬ ν•˜λ‚˜μ˜ 폴더ꡬ쑰에 λŒ€ν•œ 약속이 ν•„μš”ν•©λ‹ˆλ‹€.

우리의 ν”„λ‘œμ νŠΈλŠ” ν•˜λ‚˜μ˜ λ ˆν¬μ§€ν† λ¦¬λ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ³ , 닀은과 같이 ν•˜λ‚˜μ˜ λ ˆν¬μ—μ„œ μ„œλ‘œλ‹€λ₯Έ ν΄λ”λ‘œ μ„œλ²„μ˜ μ½”λ“œλ₯Ό 뢄리해야 ν•©λ‹ˆλ‹€.

.
β”œβ”€β”€ ApiServer1               //Express Server 1
β”‚Β Β  └── package.json
β”œβ”€β”€ ApiServer2               //Express Server 2
β”‚Β Β  └── package.json
└── package.json

μ—¬λŸ¬μ„œλ²„λ₯Ό μ˜€κ°€λŠ” κ³Όμ •μ—μ„œ 폴더 ꡬ쑰가 μ„œλ‘œ λ‹€λ₯΄λ©΄ μ½”λ“œλ₯Ό μ΄ν•΄ν•˜λŠ”λ° 큰 λ…Έλ ₯이 λ“€κ²Œ λ©λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

μ„Έλͺ…이 ν•˜λ‚˜μ˜ μ†ŒμŠ€μ½”λ“œλ₯Ό κ³΅μœ ν•˜κ³ , κ°œλ°œμ‹œ μ•½μ†λœ μ μ ˆν•œ μœ„μΉ˜μ—μ„œ μž‘μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

Express Generator μ—μ„œ μ œκ³΅ν•˜λŠ” κΈ°λ³Έ 폴더 ꡬ쑰λ₯Ό ν™œμš©ν•˜λŠ” 방법이 κ°€μž₯ 생산적일 것 κ°™μŠ΅λ‹ˆλ‹€.

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μΌλž˜μŠ€ν‹± μ„œμΉ˜ ν™˜κ²½μ„€μ •

ν™˜κ²½μ„€μ •

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • μΌλž˜μŠ€ν‹± μ„œμΉ˜λ₯Ό μ μš©ν•˜κΈ° μœ„ν•΄ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ—°κ²°ν•˜κ³ , 데이터 동기화 방식을 κ²°μ •ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

  • μΌλž˜μŠ€ν‹± μ„œμΉ˜λ₯Ό ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ— μ΄μš©ν•  수 μžˆλ„λ‘ μ„€μ •ν•©λ‹ˆλ‹€.
  • μƒν’ˆ μˆ˜μ •/등둝에 κ΄€λ ¨λœ API μ„œλ²„μ™€ λΆ„λ¦¬λ˜μ–΄ 있기 λ•Œλ¬Έμ— μƒν’ˆ 정보λ₯Ό μ‘°νšŒν•  수 μžˆλŠ” λ°μ΄ν„°λ² μ΄μŠ€κ΄€λ¦¬ 방법을 κ²°μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ 싱크λ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•΄ 풀링 방식을 μ‚¬μš©ν•˜κ±°λ‚˜ μ€‘κ°„μ„œλ²„λ₯Ό λ‘μ–΄μ„œ ν‘Έμ‹œλ₯Ό ν•˜λŠ” 방법등 μ—¬λŸ¬κ°€μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€. 각각의 μž₯단점이 μžˆμœΌλ―€λ‘œ ν•΄λ‹Ή 방법에 λŒ€ν•΄μ„œ κ²°μ •ν•˜κ³  이에 λ§žλŠ” κ΄€λ ¨ 섀정을 μ μš©ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μΌλž˜μŠ€ν‹±κ³Ό λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²°
  • λ°μ΄ν„°λ² μ΄μŠ€ 동기화
  • 인덱슀 μ„€μ •

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

관심 μΉ΄ν…Œκ³ λ¦¬λ₯Ό κΈ°μ–΅ν•˜μ§€ λͺ»ν•¨

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

관심 μΉ΄ν…Œκ³ λ¦¬λ₯Ό μ„±μ •ν•œ ν›„ λ‹€μ‹œ ν™ˆμ— λŒμ•„μ˜€κ³  λ‹€μ‹œ μ„€μ •ν•˜λŸ¬ λ“€μ–΄κ°€λ©΄ κΈ°μ–΅ν•˜κ³  μžˆμ§€ μ•ŠμŒ

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

ν΄λΌμ΄μ–ΈνŠΈκ°€ 관심 μΉ΄ν…Œκ³ λ¦¬λ₯Ό κΈ°μ–΅ν•˜κ³  미리 μ²΄ν¬ν•˜κ³  μžˆμ„ 것 κ°™μ•˜μŒ

버그 μž¬ν˜„ 방법

  1. ν™ˆμ—μ„œ κ΄€μ‹¬μΉ΄ν…Œκ³ λ¦¬μ— λ“€μ–΄κ°„λ‹€.
  2. ν™ˆμœΌλ‘œ λŒμ•„κ°„λ‹€.
  3. 관심 μΉ΄ν…Œκ³ λ¦¬μ— λ“€μ–΄κ°„λ‹€.

ꡬ동 ν™˜κ²½

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • OS: os x
  • Browser chrome

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μƒν’ˆ 이미지 μ—…λ‘œλ“œ μ„€μ •

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • μƒν’ˆμ˜ 이미지λ₯Ό 전달받아 Object storage에 μ €μž₯ν•˜κ³  μ‚¬μš©μžμ˜ ν™˜κ²½μ— μ΅œμ ν™”λœ 이미지λ₯Ό μ œκ³΅ν•΄μ£ΌκΈ° μœ„ν•œ μž‘μ—…μž…λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μƒν’ˆ 이미지 μ—…λ‘œλ“œ
  • κ³ ν™”μ§ˆ/μ€‘ν™”μ§ˆ/μ €ν™”μ§ˆ 3λ‹¨κ³„λ‘œ λ‚˜λˆ μ„œ μ €μž₯

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ±„νŒ… 톡신

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

κ΅¬λ§€μžμ™€ νŒλ§€μžκ°€ μ–Έμ œλ“  λ‹€μ‹œ 찾아와 λŒ€ν™”λ₯Ό μ΄μ–΄κ°ˆ 수 μžˆλŠ” μ‹€μ‹œκ°„ μ±„νŒ… μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€ .

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

Issue #77

μ›κ²©μ—μ„œ κ΅¬λ§€μžμ™€ νŒλ§€μžκ°€ λŒ€ν™”λ₯Ό ν•˜κΈ° μœ„ν•΄ 톡신이 ν•„μš” ν•©λ‹ˆλ‹€.
λ˜ν•œ, λŒ€ν™” λ‚΄μš©μ„ κΈ°λ‘ν•˜κ³  좔후에 λ‹€μ‹œ μ œκ³΅ν•˜κΈ° μœ„ν•΄ μ €μž₯ν•˜λŠ” 방법이 ν•„μš”ν•©λ‹ˆλ‹€.
λ§ˆμ§€λ§‰μœΌλ‘œ μ΄λŸ¬ν•œ ν†΅μ‹ κ³Όμ •μ—μ„œμ˜ 메세지λ₯Ό 화면에 λ…ΈμΆœμ‹œν‚¬ 방법이 ν•„μš”ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μ„œλ²„μ™€μ˜ μ†ŒμΌ“ μ—°κ²°
  • κ³Όκ±° 메세지 뢈러였기
  • μ΅œμ‹  메세지λ₯Ό 화면에 μ—…λ°μ΄νŠΈ
  • μ±„νŒ…λ°© 생성
  • μ±„νŒ…λ°© 메세지 μ €μž₯

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

넀이버 OAuthλ₯Ό ν†΅ν•œ νšŒμ› κ°€μž…

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

넀이버 OAuthλ₯Ό ν†΅ν•œ νšŒμ› κ°€μž…

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

μ‚¬μš©μžλ‘œμ¨ ν•΄λ‹Ή μ‚¬μ΄νŠΈ μ΄μš©μ„ μœ„ν•΄μ„œ νšŒμ›κ°€μž… ν•  수 μžˆλ‹€.

λ³Έ μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜λŠ”λ° μžˆμ–΄ μƒν’ˆ 등둝 μˆ˜μ • μ‚­μ œ 및 μ±„νŒ…μ„ μœ„ν•΄μ„œλŠ” 인증과정이 ν•„μš”ν•©λ‹ˆλ‹€.
이에 μš°λ¦¬λŠ” μ‚¬μš©μžμ—κ²Œ μ§μ ‘μ μœΌλ‘œ ID νŒ¨μŠ€μ›Œλ“œ 등을 μš”κ΅¬ν•˜μ§€ μ•Šκ³  λ„€μ΄λ²„μ˜ resource server둜 λΆ€ν„° ν•„μš”ν•œ ν•„μˆ˜ μ •λ³΄λ§Œ λ°›μ•„ μ˜€λŠ” OAuthλ₯Ό λ„μž…ν•˜κΈ°λ‘œ κ²°μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • passport-naver을 μ΄μš©ν•œ 넀이버 둜그인 ν”„λ‘œμ„ΈμŠ€ κ΅¬ν˜„
  • 기쑴의 UserDB에 μ—†λŠ” μ‚¬μš©μžμΌλ•Œ νšŒμ›κ°€μž… ν”„λ‘œμ„ΈμŠ€ 진행
  • λ„€μ΄λ²„λ‘œλΆ€ν„° ν•„μš”ν•œ 정보λ₯Ό 받은 ν›„ 좔가적인 정보(κΆŒν•œ, zipcode) μš”κ΅¬
    • κΆŒν•œμ€ νŠΉλ³„ν•œ μ½”λ“œλ₯Ό μž…λ ₯ν•˜λ©΄ κ΄€λ¦¬μžλ‘œ νšŒμ›κ°€μž…μ΄ κ°€λŠ₯ν•œ 쑰건을 μΆ”κ°€
  • ν•„μˆ˜ 정보가 λͺ¨λ‘ μž…λ ₯λ˜μ—ˆμ„λ•Œ UserDB에 정보가 μ €μž₯

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

github Issue & PR template 생성

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

μ—¬λŸ¬ κ°œλ°œμžλ“€κ°„μ˜ ν˜‘μ—…μ„ μ›ν™œν•˜κ²Œ ν•˜κΈ° μœ„ν•΄μ„œ κ³΅ν†΅μ˜ Issue, PR ν…œν”Œλ¦Ώμ„ μ œμ•ˆν•©λ‹ˆλ‹€.

κΈ°λŠ₯ λ°°κ²½

ν˜„ ν”„λ‘œμ νŠΈλŠ” Issueλ₯Ό ν†΅ν•œ Feature List κ΄€λ¦¬ν•˜λ©° Projectλ₯Ό λ°±λ‘œκ·Έλ‘œμ„œ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
github flowλ₯Ό 염두에 두고, λͺ¨λ“  μž‘μ—…μ—λŠ” Issueλ₯Ό μš°μ„  λ“±λ‘ν•œ λ’€ PR을 톡해 리뷰λ₯Ό λ°›κ³  merge되게 λ©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ κ³Όμ •μ—μ„œ κ³΅ν†΅μ˜ 약속없이 Issue ν˜Ήμ€ PR을 μ§„ν–‰ν•˜κ²Œ 되면, λ‹€μ–‘ν•œ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • λ°œν–‰μ „ μ΅œμ†Œν•œμ˜ μš”κ΅¬μ‚¬ν•­μ„ μΆ©μ‘±ν•˜μ§€ μ•ŠλŠ” 경우(ν…ŒμŠ€νŠΈ, λ¬Έμ„œν™”, λ“±λ“±)
  • λ‚΄μš©μ— 무엇을 μž‘μ„±ν•΄μ•Ό 할지 λͺ°λΌ Issue/PR μž‘μ„±μ— 어렀움
  • 무엇을 μœ„ν•œ Issue/PR 인지 μ§κ΄€μ μœΌλ‘œ νŒŒμ•…ν•˜κΈ° 어렀움

μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ κ³΅ν†΅μ˜ ν…œν”Œλ¦Ώμ„ μ œμ•ˆν•©λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

image

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ(ν•„μˆ˜!!)

ν…œν”Œλ¦Ώμ€ GIthubμ—μ„œ 기본적으둜 μ œκ³΅ν•˜λŠ” κΈ°λŠ₯μœΌλ‘œμ„œ Markdown ν˜•νƒœλ‘œ μž‘μ„±ν•˜λ©΄, μ†μ‰½κ²Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
ν”„λ‘œμ νŠΈμ˜ root dir에 .github의 폴더λ₯Ό 생성 λ’€ 정해진 κ·œμΉ™μ— 따라 md νŒŒμΌμ„ μž‘μ„±ν•©λ‹ˆλ‹€.

μΆ”κ°€ 정보 (선택)

곡식 λ¬Έμ„œ

μΆ”μ²œ ν…œν”Œλ¦Ώ

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ”κ²ƒμ„ 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ Labels λ₯Ό μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

넀이버 OAuthλ₯Ό ν†΅ν•œ 둜그인

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

넀이버 OAuthλ₯Ό ν†΅ν•œ 둜그인

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

μ‚¬μš©μžλ‘œμ¨ ν•΄λ‹Ή μ‚¬μ΄νŠΈ μ΄μš©μ„ μœ„ν•΄μ„œ νšŒμ›κ°€μž… ν•  수 μžˆλ‹€.
OAuthλ₯Ό 톡해 둜그인 ν•˜λŠ”λ° 기쑴에 νšŒμ›κ°€μž…μ΄ 된 μ‚¬μš©μžλΌλ©΄ νšŒμ›κ°€μž… ν”„λ‘œμ„ΈμŠ€λ₯Ό λ¬΄μ‹œν•˜κ³  κ³§λ°”λ‘œ 둜그인이 λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • OAuth 둜그인 μ‹œ μœ μ €μ •λ³΄λ₯Ό DBμ—μ„œ 읽은 ν›„ JWT둜 μ €μž₯
  • 둜그인 ν›„ super user, admin일 경우 이름 μ˜†μ— νƒœκ·Έ 달기

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ‚¬μš©μžλ‘œμ„œ κ²€μƒ‰μ—”μ§„μ˜ 도움을 λ°›μ•„μ„œ 검색어 μž…λ ₯에 도움을 받을 수 μžˆλ‹€.

μœ μ € μŠ€ν† λ¦¬ μΆ”κ°€ (Add User Story)

μœ μ € μŠ€ν† λ¦¬

μ‚¬μš©μžλ‘œμ„œ κ²€μƒ‰μ—”μ§„μ˜ 도움을 λ°›μ•„μ„œ 검색어 μž…λ ₯에 도움을 받을 수 μžˆλ‹€.

μƒμ„Έν•œ μ„€λͺ…

μ€‘κ³ λ‚˜λΌ, λ‹Ήκ·Όλ§ˆμΌ€μ—μ„œ μ€‘κ³ μƒν’ˆμ„ 검색할 λ•Œ μ‚¬μš©μžμ˜ μ‹€μˆ˜λ‘œ 인 ν•œ μ˜€νƒ€, μœ μ‚¬μ–΄λ‘œ μΈν•œ 동일 μƒν’ˆμ΄μ§€λ§Œ λ§Žμ€ λͺ©λ‘μ„ 보기 νž˜λ“  κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ΄λŸ¬ν•œ λΆˆνŽΈν•¨μ„ ν•΄μ†Œν•˜κ³ μž μ—˜λΌμŠ€ν‹± 엔진을 μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μž μž…λ ₯에 λŒ€ν•œ μ˜€νƒ€λ₯Ό λ³΄μ •ν•˜κ±°λ‚˜ κ΄€λ ¨λœ μƒν’ˆμ„ μ œμ•ˆλ°›μ„ 수 있게 ν•©λ‹ˆλ‹€.

μ„ ν–‰ 이슈 (선택)

μ™„λ£Œ 쑰건

  • λ™μ˜μ–΄/연관검색어 μ œμ‹œ
  • 검색기λŠ₯
  • μ˜€νƒˆμžμ²΄ν¬
  • Elastic Search ν™˜κ²½μ„€μ •
  • MongoDB Transaction μ œμ–΄

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • EPIC을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€ (선택)
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό μœ„ν•œ μΆ©λΆ„ν•œ μ™„λ£Œ 쑰건이 μ œμ‹œ λ˜μ—ˆλŠ”κ°€
  • Assignees λ₯Ό μΆ”κ°€ ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Labels λ₯Ό μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ‚¬μš©μžλ‘œμ„œ μ›ν•˜λŠ” μ œμ•½μ‘°κ±΄μœΌλ‘œ ν•„ν„°λ§ν•˜μ—¬ μ›ν•˜λŠ” 쑰건의 μƒν’ˆλ“€λ§Œ λ³Ό 수 μžˆλ‹€.

μœ μ € μŠ€ν† λ¦¬ μΆ”κ°€ (Add User Story)

μœ μ € μŠ€ν† λ¦¬

  • μ‚¬μš©μžλ‘œμ„œ μ›ν•˜λŠ” μ œμ•½μ‘°κ±΄μœΌλ‘œ ν•„ν„°λ§ν•˜μ—¬ μ›ν•˜λŠ” 쑰건의 μƒν’ˆλ“€λ§Œ λ³Ό 수 μžˆλ‹€.

μƒμ„Έν•œ μ„€λͺ…

  • μ‚¬μš©μžλŠ” ν‚€μ›Œλ“œ κ²€μƒ‰λΏλ§Œ μ•„λ‹ˆλΌ λ‚΄κ°€ μžˆλŠ” 지역, κ°€κ²©λ²”μœ„, μΉ΄ν…Œκ³ λ¦¬, ν˜„μž¬ μΈκΈ°μƒν’ˆλ“±μ˜ 쑰건으둜 필터링 된 κ²°κ³Όλ₯Ό μ œκ³΅λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ‚΄κ°€ μ›ν•˜λŠ” μƒν’ˆμ„ λ”μš± μƒμ„Έν•œ 쑰건을 톡해 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ„ ν–‰ 이슈 (선택)

μ™„λ£Œ 쑰건

  • μ§€μ—­κΈ°λ°˜ 필터링
  • κ°€κ²©λ²”μœ„ 필터링
  • μΉ΄ν…Œκ³ λ¦¬ 필터링
  • μΈκΈ°μƒν’ˆ 필터링

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • EPIC을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€ (선택)
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό μœ„ν•œ μΆ©λΆ„ν•œ μ™„λ£Œ 쑰건이 μ œμ‹œ λ˜μ—ˆλŠ”κ°€
  • Assignees λ₯Ό μΆ”κ°€ ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Labels λ₯Ό μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

git λͺ…λ Ήμ–΄ μ‚¬μš© 이전에 κ·œμΉ™μ„ κ°•μ œλ‘œ μ μš©ν•˜κΈ°

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

git의 λͺ…λ Ήμ–΄ μ‚¬μš© 이전에 우리의 κ·œμΉ™μ— λŒ€ν•œ μΆ©μ‘± μ—¬λΆ€λ₯Ό ν™•μΈν•œλ‹€.

κΈ°λŠ₯ λ°°κ²½

Git은 상황에 따라 λ‹€μ–‘ν•œ Hooksλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. Hooksλ₯Ό ν™œμš©ν•˜λ©΄, git을 μ‚¬μš©ν•˜λ©° 쀑간 κ³Όμ •λ§ˆλ‹€ 우리의 μš”κ΅¬μ‚¬ν•­μ„ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ κ·œμΉ™μ€ ν˜‘μ—…μ„ ν•  λ•Œ μ‹€μˆ˜λ₯Ό 사전에 λ°©μ§€ν•˜κ³ , λΆˆν•„μš”ν•œ μ»΄ν“¨νŒ… μžμ›μ˜ λ‚­λΉ„λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, Linterλ‚˜ Formatter의 κ²½μš°λŠ” code의 buildμ™€λŠ” λ³„κ°œμ˜ λ¬Έμ œμž…λ‹ˆλ‹€. build 이전에 확인이 κ°€λŠ₯ν•˜μ§€λ§Œ, 이λ₯Ό ν™•μΈν•˜μ§€ μ•Šκ³  μ„œλ²„μ— 배포 (ν˜Ήμ€ PR)μ‹œμ— λ‹€μŒκ³Ό 같은 μž‘μ—…λ“€μ„ 거치게 λ©λ‹ˆλ‹€. (λ³΄ν†΅μ˜ CIμ—μ„œ...)

  1. μ„œλ²„λ₯Ό μ˜¬λ¦°λ‹€
  2. μ„œλ²„μ— μ†ŒμŠ€ μ½”λ“œλ₯Ό μ „λ‹¬ν•œλ‹€
  3. μ†ŒμŠ€μ½”λ“œμ— 따라 dependencies듀을 μ„€μΉ˜ν•œλ‹€
  4. buildλ₯Ό ν•œλ‹€(ν˜Ήμ€ 이 전에 linting 체크 κ°€λŠ₯)
  5. linter와 formatterλ₯Ό ν™•μΈν•œλ‹€.

μœ„μ™€ 같은 μƒν™©μ—μ„œ μ΅œμ•…μ˜ κ²½μš°μ—λŠ” λΆˆν•„μš”ν•œ λΉŒλ“œλ₯Ό ν•˜λŠ” μ‹œκ°„μ„ κΈ°λ‹€λ¦° λ’€ (μˆ˜λΆ„ μ†Œμš”λ  수 μžˆλ‹€) 맨 μ²˜μŒμ— ν•  수 μžˆμ—ˆλ˜ linter와 formatterλ₯Ό ν™•μΈν•˜κ²Œ λ©λ‹ˆλ‹€. 그렇지 μ•Šλ”λΌλ„, μ΅œμ†Œν•œμ˜ linter와 formatterλ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄μ„œλŠ” 3λ²ˆκΉŒμ§€μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜λ―€λ‘œ 이 λ˜ν•œ μ‹œκ°„κ³Ό μ»΄ν“¨νŒ… μžμ›μ„ λ‚­λΉ„ν•˜λŠ” μΌμž…λ‹ˆλ‹€.

μ• μ΄ˆμ— 변경사항을 commit ν•˜κ³  pushν•˜κΈ° 이전에 확인할 수 μžˆλ‹€λ©΄, 미연에 μœ„μ™€κ°™μ€ λ‚­λΉ„λ₯Ό 방지할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

λ‹€μŒκ³Ό 같은 μƒν™©μ—μ„œ 우리의 μ½”λ“œλ₯Ό κ²€μ¦ν•©λ‹ˆλ‹€.

[μ½”λ“œλ₯Ό μ»€λ°‹ν•˜κΈ° 이전에]

  1. Linter, Formatter 의 κ·œμΉ™μ„ λ”°λžλŠ”κ°€
  2. master, λ‚˜ 기타 push ν•˜λ©΄ μ•ˆλ˜λŠ” λΈŒλžœμΉ˜μ—μ„œ commit을 ν•˜κ³  μžˆμ§€λŠ” μ•Šμ€κ°€
  3. testλ₯Ό λͺ¨λ‘ 성곡 ν•˜μ˜€λŠ”κ°€

[컀밋 메세지λ₯Ό μž‘μ„± ν•  λ•Œ]

  1. commit logλ₯Ό κ·œμΉ™μ— 맞좰 μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

μ „λ°˜μ μœΌλ‘œ git hooks에 λŒ€ν•œ μ•‘μ…˜μ„ μ·¨ν•˜κΈ° μœ„ν•΄μ„œ μš°λ¦¬λŠ” huskyλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΄€λ¦¬ν•©λ‹ˆλ‹€. λ³„λ„μ˜ script 폴더λ₯Ό μƒμ„±ν•˜μ—¬ 각 stageλ§ˆλ‹€ λ°œμƒν•΄μ•Ό ν•˜λŠ” μ•‘μ…˜μ„ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

μœ„ μ›ν•˜λŠ” κ²°κ³Όμ—μ„œ, 2번 pushν•˜λ©΄ μ•ˆλ˜λŠ” λΈŒλžœμΉ˜μ— λŒ€ν•΄μ„œλŠ” issue #3 μ—μ„œ μ–ΈκΈ‰ν•˜κ³  μžˆλŠ” λ‚΄μš©μ„ μ°Έκ³ ν•˜μ‹œκΈΈ λ°”λžλ‹ˆλ‹€.

4번의 컀밋 메세지 μž‘μ„±μ‹œμ—λŠ” 우리의 경우 λ‹€μŒ 자료λ₯Ό 기반으둜 μž‘μ„±ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•˜μ—¬ commitlint와 lint-stagedλ₯Ό μ‚¬μš©ν•˜μ—¬ 검증할 수 μžˆμŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” λ‹€μŒκ³Ό 같은 컀밋 둜그 μž‘μ„± κ·œμΉ™μ„ ν™œμš©ν•˜μ—¬ κ²€μ¦ν•©λ‹ˆλ‹€.

type(scope?): subject  #scope is optional

chore: run tests on travis ci # example

λ§ˆμ§€λ§‰μœΌλ‘œ, μœ„ 1 ~ 4번의 λ‚΄μš©μ€‘ ν•˜λ‚˜λΌλ„ μΆ©μ‘±ν•˜μ§€ λͺ»ν•œκ²½μš°, commit은 이루어지지 μ•ŠμŠ΅λ‹ˆλ‹€.

κ³ λ €ν• λ§Œν•œ λŒ€μ•ˆ (선택)

  • git hooksλ₯Ό 직접 κ΄€λ¦¬ν•œλ‹€.

μΆ”κ°€ 정보 (선택)

commit 단계가 μ•„λ‹ˆλΌ push λ‹¨κ³„μ—μ„œ ν•œλ²ˆμ— linter와 formatterλ₯Ό 확인할 수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 κ²½μš°μ— 수개의 commit이 μŒ“μ΄λ©΄, μ΄μ—λŒ€ν•œ 뢀채가 μŒ“μ—¬κ°€μ„œ ν•œλ²ˆμ— μˆ˜μ •ν•˜κΈ° λ²„κ±°μš΄ 상황이 λ°œμƒν•˜κ²Œ λ©λ‹ˆλ‹€. 쑰금 더 짧은 주기둜 ν”Όλ“œλ°±μ„ μ§„ν–‰ν•˜κΈ° μœ„ν•΄ commit 이전에 hooksλ₯Ό μ—°κ²°ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μƒν’ˆ μ§€μ—­κΈ°λ°˜ 검색

지역 기반 검색

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

지역 기반 검색을 μ΄μš©ν•˜μ—¬ μ‚¬μš©μžκ°€ μ›ν•˜λŠ” μ§€μ—­μ—μ„œμ˜ κ±°λž˜κΈ€μ„ 탐색할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©μžλŠ” ν•œμ •λœ 지역 λ²”μœ„λ‚΄μ—μ„œμ˜ μƒν’ˆμ— λŒ€ν•œ 정보λ₯Ό μ œκ³΅λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

μ€‘κ³ κ±°λž˜μ˜ νŠΉμ„±μƒ, μ‹ λ’°μ˜ 문제둜 인해 직거래λ₯Ό μ„ ν˜Έν•˜λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€. 이런 μƒν™©μ—μ„œ νŒλ§€μžλŠ” μžμ‹ μ˜ 직거래 판맀 λ²”μœ„λ₯Ό ν•œμ •ν•˜κ³ , κ΅¬λ§€μžλŠ” μžμ‹ μ΄ 직거래λ₯Ό μœ„ν•˜μ—¬ μ°Ύμ•„κ°ˆ 수 μžˆλŠ” λ²”μœ„λ₯Ό μ§€μ •ν•¨μœΌλ‘œμ„œ 보닀 더 λ§žμΆ€ν™”λœ 검색결과λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μΌλΌμŠ€ν‹±μ„œμΉ˜ ν˜Ήμ€ λͺ½κ³  DB선택
  • μœ„μ—μ„œ μ •ν•œ DBμ—°κ²°
  • κΈ°λŠ₯ κ΅¬ν˜„
  • API 제곡

μΆ”κ°€ μ„€λͺ… (선택)

μΌλΌμŠ€ν‹± μ„œμΉ˜μ˜ Geo queriesλ₯Ό μ‚¬μš©ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

또, mongooseμ—μ„œ μ œκ³΅λ˜λŠ” μ’Œν‘œ 기반 검색을 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. mongoose geojson

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ˜€νƒˆμž 보정

μ˜€νƒˆμž 보정

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • μ‚¬μš©μžκ°€ '가럯7'와 같이 νŠΉμ • 단어λ₯Ό λΉΌλ¨Ήκ±°λ‚˜ 'λͺ¨μ§€'와 같이 'ㅏ'λ₯Ό 'γ…£'둜 잘λͺ» μž…λ ₯ν•˜λŠ” 경우 검색어가 없을 경우 검색어λ₯Ό λ‹€μ‹œ μˆ˜μ •ν•˜λŠ” 과정을 μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•΄ νŠΉμ •ν•œ 경우 μ˜€νƒˆμžλ₯Ό λ³΄μ •ν•˜μ—¬ 검색결과λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μ–΄λ–€ κ²½μš°μ— μ˜€νƒˆμžλ₯Ό λ³΄μ •ν•˜λŠ”κ°€μ— λŒ€ν•œ κ²°μ •
  • μ‚¬μš©μžκ°€ 자주 μž…λ ₯ν•˜λŠ” μ˜€νƒˆμžμ™€ μ •μ • 단어 데이터 μˆ˜μ§‘

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

DB μ—°κ²° μ‹€νŒ¨μ‹œ ν•΄κ²° λ°©μ•ˆ

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

  • ν˜„μž¬ product-apiμ—μ„œ MongoDB μ—°κ²° μ‹€νŒ¨μ‹œ μ„œλ²„κ°€ μ’…λ£Œλ˜λŠ” κ²ƒμœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • ν˜„μž¬λ‘œμ¨λŠ” λ§ˆλ•…ν•œ 쒋은 방법이 μƒκ°λ‚˜μ§€ μ•Šκ³  μ‹œκ°„μ΄ 많이 μ†Œμš”λ  κ²ƒμœΌλ‘œ μ˜ˆμƒλΌμ„œ μ΄λ ‡κ²Œ μ²˜λ¦¬ν–ˆλŠ”λ° 좔후에 쒋은 방법이 μƒκ°λ‚˜λ©΄ λ°˜λ“œμ‹œ μˆ˜μ •λ˜μ–΄μ•Ό ν•˜λŠ” 상황이라고 μƒκ°ν•©λ‹ˆλ‹€.
  • μΆ”κ°€μ μœΌλ‘œ ν˜„μž¬ mongoose의 timeout이 μ „ν˜€ λ™μž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이에 λŒ€ν•œ ν•΄κ²°λ°©μ•ˆλ„ ν•„μš”ν•©λ‹ˆλ‹€.

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

  • DB μ—°κ²° μ‹€νŒ¨μ‹œ 3번 λ‚΄μ™Έ μž¬μ‹œλ„ ν›„ κ·Έλž˜λ„ μ‹€νŒ¨ν•˜λ©΄ νŠΉμ •ν•œ λ°©λ²•μœΌλ‘œ μ—λŸ¬ 처리

버그 μž¬ν˜„ 방법

  1. κ·Έλƒ₯ DB 끄고 μ„œλ²„ μ‹€ν–‰ν•˜λ©΄ μ„œλ²„ κΊΌμ§‘λ‹ˆλ‹€.

ꡬ동 ν™˜κ²½

  • μ½”λ“œ 자체의 문제둜 κ΅¬λ™ν™˜κ²½κ³Ό λ¬΄κ΄€ν•©λ‹ˆλ‹€.

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μƒν’ˆ λ“±λ‘μ‹œ μ‚¬μš©μžκ°€ μ‰½κ²Œ μ•Œ 수 μžˆλ„λ‘ λͺ¨λ‹¬μ„ 생성 및 리슀트 등둝[enhancement]

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

ν˜„μž¬ μƒν’ˆ 등둝 κΈ°λŠ₯이 μ™„μ „ν•˜μ§€ μ•Šμ•„ μƒν’ˆ λͺ©λ‘μ— 반영 λ˜μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€. 등둝을 ν•˜λ©΄ λ¦¬μŠ€νŠΈμ— 보이면 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

κΈ°λŠ₯ λ°°κ²½

μƒν’ˆμ˜ 이름 가격 사진 μ„€λͺ…을 μž…λ ₯ν•œ 후에 등둝을 λˆ„λ₯΄λ©΄ μ–΄λ–€ μΈν„°λ ‰μ…˜λ„ μ—†μ–΄μ„œ 등둝을 ν–ˆλŠ”μ§€ μ•Œ 수 μ—†μ—ˆκ³  μ‹€μ œ λ¦¬μŠ€νŠΈμ— 반영된 것 같지 μ•ŠμŠ΅λ‹ˆλ‹€. κΈ°λŠ₯ 등둝이 되면 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

등둝을 λˆ„λ₯΄λ©΄ νŒμ—… ν˜Ήμ€ λͺ¨λ‹¬λ‘œ 등둝이 μ™„λ£Œ λ˜μ—ˆλ‹€λŠ” μ°½μ΄λ‚˜μ˜€κ³  일정 μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ (μΆ©λΆ„νžˆ 짧은) μƒν’ˆ 리슀트둜 κ°€λ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

const [on, setOn] = useState(false)

function uploadHandler (event){
// νŒŒμΌμ„ μ—…λ‘œλ“œν•˜λŠ” 페치 μš”μ²­
    setOn(true)
    setTimeout(()=>{
        window.location.href("μƒν’ˆ 리슀트")
    }, 1000)

}

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

λ°μ΄ν„°λ² μ΄μŠ€ 섀계 및 μ œμ–΄

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • μƒν’ˆμ˜ λͺ©λ‘μ„ DBμ—μ„œ κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ 섀계, μ„€μ • 및 초기 데이터 μΆ”κ°€μž‘μ—…μž…λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μƒν’ˆ ν…Œμ΄λΈ” 섀계
  • mongoose μ„€μ • 및 migration

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ±„νŒ…κ΄€λ ¨ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

μ±„νŒ…λ°©μ— μ—¬λŸ¬λͺ…이 μ‘΄μž¬ν•  경우, μ±„νŒ…μ΄ μ€‘λ³΅λ˜μ„œ λ‚˜μ˜€λŠ” 였λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.
μžμ‹ μ˜ λΈŒλΌμš°μ €μ—μ„œλ§Œ μ±„νŒ…μ΄ μ€‘λ³΅λ˜μ„œ λ‚˜νƒ€λ‚˜λŠ” 였λ₯˜λ„ μ‘΄μž¬ν•©λ‹ˆλ‹€.

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

ν•œλ²ˆμ˜ μ±„νŒ…μ„ 치면 ν•˜λ‚˜μ˜ λ©”μ‹œμ§€λ§Œ λ‚˜μ˜€κΈ°λ₯Ό κΈ°λŒ€ν•©λ‹ˆλ‹€.

버그 μž¬ν˜„ 방법

  1. μ±„νŒ…λ°©μ— μž…μž₯ (1, 2)
  2. λ‹€λ₯Έμ‚¬λžŒλ„ μ±„νŒ…λ°©μ— μž…μž₯. (λ™μΌν•œ 1, 2)
  3. μ±„νŒ…

λˆ„κ΅°κ°€λŠ” μ€‘λ³΅λ˜μ„œ μ±„νŒ…μ΄ 보이고, λˆ„κ΅°κ°€λŠ” μ±„νŒ…μ΄ μ€‘λ³΅λ˜μ„œ 보이지 μ•ŠμŠ΅λ‹ˆλ‹€

ꡬ동 ν™˜κ²½

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μƒν’ˆ 등둝과정 쀑 500μ—λŸ¬κ°€ λ‚œκ²ƒ κ°™μŠ΅λ‹ˆλ‹€.

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

image

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

μƒν’ˆμ΄ 등둝될 쀄 μ•Œμ•˜μ–΄μš”.

버그 μž¬ν˜„ 방법

  1. κΈ€μ“°κΈ° 클릭, μ„œλ²„ μž₯μ• κ°€ μžˆλ‹€λŠ” νŒμ—… λ¬΄μ‹œ
  2. μƒν’ˆ 등둝
  3. 확인 λˆ„λ₯΄λ©΄ λ‚˜μ˜΅λ‹ˆλ‹€.

ꡬ동 ν™˜κ²½

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • OS: [e.g. iOS] λ§₯
  • Browser [e.g. chrome, safari] chrome
  • Version [e.g. 22] 22

Smartphone (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ‚¬μš©μžλ‘œμ¨ ν•΄λ‹Ή μ‚¬μ΄νŠΈ μ΄μš©μ„ μœ„ν•΄μ„œ νšŒμ›κ°€μž… ν•  수 μžˆλ‹€.

μœ μ € μŠ€ν† λ¦¬ μΆ”κ°€ (Add User Story)

μœ μ € μŠ€ν† λ¦¬

μ‚¬μš©μžλ‘œμ¨ ν•΄λ‹Ή μ‚¬μ΄νŠΈ μ΄μš©μ„ μœ„ν•΄μ„œ νšŒμ›κ°€μž… ν•  수 μžˆλ‹€.

μƒμ„Έν•œ μ„€λͺ…

μ‚¬μ΄νŠΈ μ΄μš©μ„ μœ„ν•œ νšŒμ›κ°€μž… 및 둜그인 인증 ν”„λ‘œμ„ΈμŠ€ μž…λ‹ˆλ‹€.
νŒ€ 회의λ₯Ό 톡해 인증은 Naver OAuthλ§Œμ„ μ΄μš©ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.
λ„€μ΄λ²„μ˜ Resource Server둜 λΆ€ν„° ν•„μš”ν•œ μ •λ³΄λ§Œμ„ 전달받아 UserDB에 μ €μž₯ν•©λ‹ˆλ‹€.

μ„ ν–‰ 이슈 (선택)

μ‚¬μ΄νŠΈλ₯Ό μ΄μš©ν•˜κΈ° μœ„ν•œ μ΅œμš°μ„  μ‘°κ±΄μ΄λ―€λ‘œ μ„ ν–‰μ΄μŠˆλŠ” μ—†μŠ΅λ‹ˆλ‹€.

μ™„λ£Œ 쑰건

  • 넀이버 OAuthλ₯Ό ν†΅ν•œ νšŒμ› κ°€μž…
  • 넀이버 OAuthλ₯Ό ν†΅ν•œ 둜그인

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • EPIC을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€ (선택)
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό μœ„ν•œ μΆ©λΆ„ν•œ μ™„λ£Œ 쑰건이 μ œμ‹œ λ˜μ—ˆλŠ”κ°€
  • Assignees λ₯Ό μΆ”κ°€ ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Labels λ₯Ό μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

Object Storage μ„€μ • 및 ꡬ좕

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

Object Storageλ₯Ό 각각의 μ„œλ²„μ—μ„œ λ™μž‘ν•  수 μžˆλŠ” λ©”μ†Œλ“œ κ΅¬ν˜„

κΈ°λŠ₯ λ°°κ²½

μ€‘κ³ κ±°λž˜μ— μžˆμ–΄μ„œ μ œν’ˆμ˜ μƒνƒœλ₯Ό 확인할 수 μžˆλŠ” 이미지, λ™μ˜μƒ 정보가 ν•„μš”ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 데이터듀은 λΉ„μ •ν˜• λ°μ΄ν„°λ‘œμ¨ μ •ν˜•λ°μ΄ν„°λ₯Ό μ €μž₯ν•˜λŠ” 방식보닀 ν΄λΌμš°λ“œ μ„œλΉ„μŠ€μ—μ„œ μ œκ³΅ν•˜λŠ” Object Stroageλ₯Ό μ΄μš©ν•˜μ—¬ λΉ„μ •ν˜• 데이터λ₯Ό κ΄€λ¦¬ν•˜λŠ” 것이 μ’‹λ‹€κ³  μƒκ°λ˜μ–΄ μ œμ•ˆν•©λ‹ˆλ‹€.

Object Storageλ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ¨ 데이터가 '어디에-μ–΄λ–»κ²Œ-μ €μž₯λ˜λŠ”μ§€' κ΄€λ¦¬λ‚˜ ν†΅μ œν•  ν•„μš” 없이 μ €μž₯이 κ°€λŠ₯ν•˜λ‹€λŠ” μž₯점이 있고, μ €μž₯된 데이터λ₯Ό μ‚¬μš©ν• λ•Œμ—λ„ 고유 μ‹λ³„λ²ˆν˜Έλ₯Ό 톡해 λ°”λ‘œ 접근이 κ°€λŠ₯ν•˜λ‹€λŠ” 이점이 μžˆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

  • Object Storage λ₯Ό κ΅¬μΆ•ν•˜κ³  이 storage에 μ €μž₯, μˆ˜μ •, μ‚­μ œ, μ‘°νšŒκ°€ κ°€λŠ₯ν•œ λͺ¨λ“ˆ ꡬ좕(ν˜Ήμ€ μ‚¬μš©)ν•˜μ—¬ λ‹€λ₯Έ μ„œλ²„μ—μ„œ μ¦‰μ‹œ μ‚¬μš©κ°€λŠ₯ν•œ λ©”μ†Œλ“œ(객체, 클래슀 λ“±) ꡬ좕
  • Object Stroage에 μ €μž₯된 파일의 고유 μ‹λ³„λ²ˆν˜Έλ₯Ό 담을 λ°μ΄ν„°λ² μ΄μŠ€(ν•„μš”μ‹œ)

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

  • nCloud Object Storage API μ„€λͺ…μ„œ λ₯Ό μ°Έμ‘°ν•˜μ—¬ μ„œλΉ„μŠ€λ³„λ‘œ bucketλ₯Ό μƒμ„±ν•˜κ³ (ν˜Ήμ€ 생성할 수 μžˆλŠ” λ©”μ†Œλ“œλ₯Ό λ§Œλ“€μ–΄λ„ λ©λ‹ˆλ‹€.) bucket 에 μ—…λ‘œλ“œ, μ‚­μ œ, 쑰회λ₯Ό ν• μˆ˜ μžˆλŠ” λ©”μ†Œλ“œλ₯Ό λ§Œλ“€λ©΄ λ©λ‹ˆλ‹€.

κ³ λ €ν• λ§Œν•œ λŒ€μ•ˆ (선택)

  • AWS S3

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

CI/CD 도ꡬ μ„ μ •ν•˜κΈ°

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

  • 지속 톡합 배포λ₯Ό μœ„ν•œ CI/CD 툴 μ„ μ • 및 μ„€μ •ν•  것을 μ œμ•ˆν•©λ‹ˆλ‹€.

κΈ°λŠ₯ λ°°κ²½

  • μ• μžμΌκ³Ό 슀크럼의 철학을 μ‹€ν˜„ν•˜κΈ° μœ„ν•΄μ„œλŠ” 일일 배포 및 ν…ŒμŠ€νŒ… μž‘μ—…μ΄ ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. 그러기 μœ„ν•΄ μžλ™ν™”λœ νˆ΄μ„ κ³΅λΆ€ν•˜κ³  μ‚¬μš©ν•¨μœΌλ‘œμ¨ ν”„λ‘œμ νŠΈλ₯Ό 톡합 κ΄€λ¦¬ν•˜κ³ μž ν•©λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

  • μžλ™ λΉŒλ“œ 및 ν…ŒμŠ€νŒ… 배포 ν™˜κ²½ μ„€μ •

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

  • μžλ™ν™”λœ 도ꡬλ₯Ό 이용, ν˜Ήμ€ 직접 λ§Œλ“€μ–΄μ„œ 일일 배포 및 ν…ŒμŠ€νŒ…μ„ ν•  수 μžˆλ‹€λ©΄ μ–΄λ–€ 방법이라도 λ¬΄κ΄€ν•©λ‹ˆλ‹€.

κ³ λ €ν• λ§Œν•œ λŒ€μ•ˆ (선택)

후보 툴

  1. Github Actions
  2. Jenkins
  3. NCloud SourceDeploy

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μΆ”μ²œκ²€μƒ‰μ–΄ 제곡

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • ν‚€μ›Œλ“œλ‘œ κ²€μƒ‰μ‹œ λ™μ˜μ–΄ λͺ©λ‘ 및 연관검색어λ₯Ό μΆ”μ²œκ²€μƒ‰μ–΄λ‘œ μ œμ‹œν•΄ μ€λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • 넀이버 ν˜Ήμ€ ꡬ글 크둀링을 톡해 λ™μ˜μ–΄ 및 연관검색어 정보 κ°€μ Έμ˜€κΈ°
  • ν‚€μ›Œλ“œλ‘œ κ²€μƒ‰μ‹œ μΆ”μ²œκ²€μƒ‰μ–΄ 제곡

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

Git branch 이름 κ·œμΉ™ μ •ν•˜κΈ°

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

Gitμ—μ„œ μ‚¬μš©λ  branch의 이름에 λŒ€ν•œ κ·œμΉ™μ„ μ •ν•©λ‹ˆλ‹€

κΈ°λŠ₯ λ°°κ²½

우리의 ν”„λ‘œμ νŠΈλŠ” Gitλ₯Ό μ€‘μ‹¬μœΌλ‘œ Source code의 version을 κ΄€λ¦¬ν•©λ‹ˆλ‹€. λ˜ν•œ, Git의 νŠΉμ • branchλ₯Ό μ€‘μ‹¬μœΌλ‘œ CIλ₯Ό κ΅¬ν˜„ ν•˜λŠ” 상황을 κΈ°νšν•˜μ˜€μŠ΅λ‹ˆλ‹€.

CIλ₯Ό 트리거 ν•˜λŠ” νŠΉμ • λΈŒλžœμΉ˜λ“€κ³Ό(트리거 브랜치), 각각의 트리거 λΈŒλžœμΉ˜μ— λŒ€ν•œ μΆ”κ°€ 브랜치(κΈ°λŠ₯ 개발 브랜치)듀이 κ³„μ†ν•˜μ—¬ μƒμ„±λ˜κ²Œ λ©λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ λ„˜μΉ˜λŠ” λΈŒλžœμΉ˜λ“€μ˜ ν˜Όλž€μ„ 정리할 μˆ˜λ‹¨μ΄ ν•„μš”ν•˜μ—¬ μ œμ•ˆν•˜μ˜€μŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

  • pushν•˜μ§€ 말아야 ν•  branch prefixλ₯Ό μ •ν•œλ‹€
  • κΈ°λŠ₯ κ΅¬ν˜„μ„ μœ„ν•œ branch prefixλ₯Ό μ •ν•œλ‹€

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

push ν•˜μ§€ 말아야 ν•  branchλ‘œλŠ” λ‹€μŒκ³Ό 같은 λΈŒλžœμΉ˜λ“€μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • master 브랜치
  • 각각의 λ…λ¦½λœ κΈ°λŠ₯에 λŒ€ν•œ 브랜치 (주둜 ν•˜λ‚˜μ˜ μ„œλ²„μ΄λ©°, ν•˜λ‚˜μ˜ ν΄λ”λ‘œ 관리)

이 λΈŒλžœμΉ˜λ“€μ€ PRμ΄λ‚˜ μžλ™ν™”λœ 방법을 ν†΅ν•΄μ„œλ§Œ μ½”λ“œμ˜ 변경사항이 λ°˜μ˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

κΈ°λŠ₯ κ΅¬ν˜„μ„ μœ„ν•œ λΈŒλžœμΉ˜λŠ” μœ„ pushν•˜μ§€ 말아야 ν•  λΈŒλžœμΉ˜μ—μ„œ νŒŒμƒλœ 브랜치 μž…λ‹ˆλ‹€.
이 λΈŒλžœμΉ˜μ—μ„œ μž‘μ—…λ˜λŠ” μ½”λ“œλ“€μ€ μž‘μ—…μ€‘μ— μžˆμŒμ„ μ•Œ 수 있으며, mergeμ‹œμ— μ‚­μ œλ©λ‹ˆλ‹€.

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ½”λ“œ μŠ€νƒ€μΌ ν†΅μΌν•˜κΈ° (Linter & Formatter)

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

κ°œλ°œμ€‘μ— κ³΅ν†΅μ˜ μ½”λ“œ μŠ€νƒ€μΌμ„ μ μš©ν•˜κ³ μž Linter 와 Formatter에 λŒ€ν•œ 섀정을 μΆ”κ°€ & 적용 ν•©λ‹ˆλ‹€.

κΈ°λŠ₯ λ°°κ²½

ν˜‘μ—…μ‹œμ— μ½”λ“œλ¦¬λ·°, ν˜Ήμ€ μ½”λ“œ μœ μ§€λ³΄μˆ˜λ₯Ό μœ„ν•˜μ—¬ λ‹€λ₯Έ 이듀이 μž‘μ„±ν•œ μ½”λ“œλ₯Ό 보게 λ˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. μ΄λ•Œ μƒλŒ€λ°©μ˜ μ½”λ“œμ— λŒ€ν•œ μ˜λ„λ₯Ό λΉ λ₯΄κ²Œ νŒŒμ•…ν•˜κΈ° μœ„ν•΄μ„œ κ³΅ν†΅μ˜ μ½”λ“œ μŠ€νƒ€μΌμ— λŒ€ν•œ 약속이 ν•„μš”ν•©λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ”λ° μžˆμ–΄ κ³΅ν†΅μ˜ μŠ€νƒ€μΌ κ·œμΉ™(Linter), μ½”λ”© κ·œμΉ™(Linter), 그리고 ν¬λ§·νŒ…(Formatter에) λ“± 을 지원해야 ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 검증 과정은 μžλ™μœΌλ‘œ 이루어 지며, λ§Œμ‘±λ˜μ§€ μ•Šμ„μ‹œμ— μžλ™μœΌλ‘œ μˆ˜μ •μ΄ λ©λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

Linterλ₯Ό μœ„ν•˜μ—¬ ESLintλ₯Ό μ‚¬μš©ν•˜κ³ , Formatterλ₯Ό μœ„ν•˜μ—¬ Prettierλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

각각의 νŒ€μ›μ΄ μ‚¬μš©μ€‘μΈ IDEμ—μ„œ Formatting을 μžλ™μ μœΌλ‘œ μ μš©ν•˜λ„λ‘ ν•˜κ³ , Linter에 λŒ€ν•œ μ•ˆλ‚΄λ¬Έκ΅¬λ₯Ό IDE λ‚΄λΆ€μ—μ„œ λ³΄μ—¬μ£Όκ²Œ ν•©λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, commitν•˜κΈ° μ „κ³Ό λ°°ν¬ν•œ λ’€ Linter와 Formatter에 λŒ€ν•œ 검증을 μ§„ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€.

ESLint의 μŠ€νƒ€μΌμ€ 유λͺ…ν•œ Airbnb λ₯Ό μ μš©ν•©λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, Express 와 React μ•±μ—μ„œ μ„œλ‘œ λ‹€λ₯Έ linter κ·œμΉ™μ„ μ μš©ν•  수 μžˆλ„λ‘ ν™˜κ²½ 섀정이 ν•„μš”ν•©λ‹ˆλ‹€.

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

http://10.180.170.175:3000/write μ£Όμ†Œκ°€ λ‚˜μ˜€μ§€ μ•Šμ•„μš”

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

http://10.180.170.175:3000/write 둜 듀어갔을 λ–„ 아무것도 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

κΈ€μ“°λŠ” 화면이 λ‚˜μ˜¬μ€„ μ•Œμ•˜μ–΄μš” γ… 

버그 μž¬ν˜„ 방법

  1. λ©”μΈμ—μ„œ ν•˜λ‹¨μ— 펜 λͺ¨μ–‘μ•„μ΄μ½˜μ„ λˆ„λ₯Έλ‹€.
  2. http://10.180.170.175:3000/write 둜 μ ‘μ†ν•œλ‹€.
  3. 아무것도 μ•ˆλ³΄μΈλ‹€.

ꡬ동 ν™˜κ²½

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • OS: [MAC]
  • Browser [Chrome
  • Version [e.g. 22]

Smartphone (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

λ™μž‘ν•˜μ§€ μ•ŠλŠ” κ°€λ‘œ 슀크둀(?)이 λ³΄μ—¬μš”

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

image

가격 μ•„λž˜μ— λ™μž‘ν•˜μ§€ μ•ŠλŠ” κ°€λ‘œμŠ€ν¬λ‘€μ΄ μžˆμŠ΅λ‹ˆλ‹€!
μ˜†μ— μ œμ•ˆ λ°›κΈ° κΈ€μžλ„ 깨지고 μžˆμ–΄μš”

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

κ°€λ‘œ 슀크둀이 μ—†κ±°λ‚˜ κ°€λ‘œμŠ€ν¬λ‘€μ΄ λ™μž‘ν•΄ μ œμ•ˆ λ°›κΈ°κ°€ 지리지 μ•ŠλŠ”λ‹€.

버그 μž¬ν˜„ 방법

  1. λ“€μ–΄κ°”λ”λ‹ˆ λ‚˜μ™”μŠ΅λ‹ˆλ‹€.

ꡬ동 ν™˜κ²½

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”): Whale Browser

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μΈκΈ°μƒν’ˆ 검색/쑰회

μΈκΈ°μƒν’ˆ

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • 처음 μ‚¬μ΄νŠΈμ— μ ‘μ†ν–ˆμ„ λ•Œ μ‚¬μš©μžκ°€ μ–΄λ–€ μƒν’ˆμ΄ 인기가 λ§Žμ€μ§€ 확인할 수 μžˆλ„λ‘ μΈκΈ°μƒν’ˆ λͺ©λ‘μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μΈκΈ°μƒν’ˆ 판결 κΈ°μ€€ μ„€μ •( 예 : 찜횟수 + 쑰회수)
  • μΈκΈ°μƒν’ˆ λͺ©λ‘μ„ λΉ λ₯΄κ²Œ 뢈러올 수 μžˆλ„λ‘ 캐싱

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μΌλž˜μŠ€ν‹± μ„œμΉ˜ 검색

검색

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • κ΅¬λ§€μžκ°€ μ›ν•˜λŠ” μƒν’ˆμ„ ν‚€μ›Œλ“œλ₯Ό 톡해 검색 μ‹œ ν•΄λ‹Ήν•˜λŠ” κ²°κ³Όλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • Elastic Searchλ₯Ό μ΄μš©ν•˜μ—¬ ν•΄λ‹Ή 인덱슀의 값을 좜λ ₯
  • GUIλ₯Ό ν†΅ν•œ μ‚¬μš©μžλ‘œλΆ€ν„° 검색어λ₯Ό μž…λ ₯λ°›κ³  μ‹€μ œ 검색결과 좜λ ₯

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

docker image λ§Œλ“€κΈ°/μ„€μ •

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

λ™μΌν•œ ν™˜κ²½μ—μ„œ κ΅¬λ™ν•˜κΈ° μœ„ν•œ dockerfile을 μ„€μ •ν•˜κ³  base imageλ₯Ό μ„€μ • 및 μƒμ„±ν•©λ‹ˆλ‹€.

κΈ°λŠ₯ λ°°κ²½

μƒˆλ‘œμš΄ μ„œλ²„λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ λ‹€μ‹œ μƒˆλ‘­κ²Œ λ§Œλ“€κ²Œ 될 λ•Œ ν˜„μž¬ μš°λ¦¬κ°€ κ°œλ°œν•˜κ³  μžˆλŠ” ν™˜κ²½μ— λ§žλŠ” μ„€μ •ν•˜λŠ” 과정이 λ°˜λ³΅λ©λ‹ˆλ‹€. 이 과정을 μ΅œμ†Œν™” ν•˜κΈ° μœ„ν•΄ dockerλ₯Ό μ‚¬μš©ν•˜κ³ , μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•œ κΈ°λ³Έ ν…œν”Œλ¦Ώμ΄ ν•„μš”ν•˜λ‹€ μƒκ°λ˜μ–΄ μ œμ•ˆν•©λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

  • dockerfile
    • dockerλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•œ κΈ°λ³Έ OS(From μΈμŠ€νŠΈλŸ­μ…˜)
    • RUNμΈμŠ€νŠΈλŸ­μ…˜
    • CMDμΈμŠ€νŠΈλŸ­μ…˜(μ»¨ν…Œμ΄λ„ˆκ°€ μ‹œμž‘ν•  λ•Œ ν•œλ²ˆ μ‹€ν–‰λ˜λŠ” 것)

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

  • dockerfile κ΄€λ ¨ μ„€μ •

κ³ λ €ν• λ§Œν•œ λŒ€μ•ˆ (선택)

OS μž₯점 단점
CoreOS 도컀 사전 μ„€μΉ˜, κ²½λŸ‰ν™”λœ OS, 쒋은 λ¬Έμ„œν™” Package Managerκ°€ μ—†μŒ
Fedora μ‚°μ—…ν‘œμ€€, κ°œλ°œμΉœν™”μ , λ°©λŒ€ν•œ package μ—…λ°μ΄νŠΈμ‹œ 문제 λ°œμƒν•  수 있음
CentOS docker μ„€μ • 용이, μ•ˆμ •μ„± μ–ΈκΈ‰X
Ubuntu LTS μœ μ € μΉœν™”μ , κΈ΄ 지원기간 높은 μ‹œμŠ€ν…œ μš”κ΅¬μ‚¬ν•­
SamrtOS λ›°μ–΄λ‚œ μ»¨ν…Œμ΄λ„ˆ 격리(?) μ†”λΌλ¦¬μŠ€μ—μ„œ νŒŒμƒ
busybox Docker κ΄€λ ¨ μ„œμ  처음 μ‚¬μš©

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

κ΅¬λ§€μžλ‘œμ„œ 판맀자의 쀑고 μƒν’ˆμ„ κ΅¬λ§€ν•˜κΈ° μœ„ν•΄ λŒ€ν™”λ₯Ό μ‹œμž‘ν•  수 μžˆλ‹€

μœ μ € μŠ€ν† λ¦¬ μΆ”κ°€ (Add User Story)

μœ μ € μŠ€ν† λ¦¬

κ΅¬λ§€μžλ‘œμ„œ 판맀자의 쀑고 μƒν’ˆμ„ κ΅¬λ§€ν•˜κΈ° μœ„ν•΄ λŒ€ν™”λ₯Ό μ‹œμž‘ν•  수 μžˆλ‹€

μƒμ„Έν•œ μ„€λͺ…

ꡬ맀자의 μž…μž₯μ—μ„œ νŒλ§€μžκ°€ 올린 μƒν’ˆμ— λŒ€ν•΄ 문의/ν₯μ • 등을 μ§„ν–‰ν•˜κΈ° μœ„ν•΄ 개인적인 μ†Œν†΅μ΄ ν•„μš”ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€. λŒ“κΈ€κ³Ό 같이 λ‹€λ₯Έ μ΄μ—κ²Œλ„ λ…ΈμΆœλ  수 μžˆλŠ” μ†Œν†΅ 채널 λ³΄λ‹€λŠ” 1:1둜 privateν•˜κΈ° μœ„ν•œ μ†Œν†΅ 곡간이 ν•„μš”ν•©λ‹ˆλ‹€.

μ™„λ£Œ 쑰건

톡신

  • μ„œλ²„μ™€μ˜ μ†ŒμΌ“ μ—°κ²°
  • κ³Όκ±° 메세지 뢈러였기
  • μ΅œμ‹  메세지λ₯Ό 화면에 μ—…λ°μ΄νŠΈ
  • μ±„νŒ…λ°© 생성
  • μ±„νŒ…λ°© 메세지 μ €μž₯

μ±„νŒ… UI/UX

  • μ‚¬μš©μžμ˜ μ΅œμ‹  메세지λ₯Ό 확인할 수 μžˆλ„λ‘ 슀크둀 쑰절
  • λ¬΄ν•œ 슀크둀
  • 메세지 쒌우 정렬을 톡해 식별
  • 메세지 μž‘μ„± μ‹œκ°„ λ…ΈμΆœ
  • 같은 날에 μž‘μ„±λœ 메세지 λΆ„λ₯˜ (section)

인증/κΆŒν•œ

  • ν—ˆκ°€λœ μ‚¬μš©μžλ§Œ μž…μž₯ν•  수 μžˆλŠ” 둜직

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • EPIC을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€ (선택)
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό μœ„ν•œ μΆ©λΆ„ν•œ μ™„λ£Œ 쑰건이 μ œμ‹œ λ˜μ—ˆλŠ”κ°€
  • Assignees λ₯Ό μΆ”κ°€ ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Labels λ₯Ό μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

ν΄λΌμš°λ“œ μ‚¬μš©μ„ μœ„ν•œ 기초 μ„€μ •

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

ν΄λΌμš°λ“œ μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜μ—¬ μ„œλΉ„μŠ€λ₯Ό 배포할 수 μžˆλ„λ‘ 기본적인 섀정을 ν•©λ‹ˆλ‹€

κΈ°λŠ₯ λ°°κ²½

μš°λ¦¬λŠ” 이번 ν”„λ‘œμ νŠΈμ—μ„œ NCloudλ₯Ό μ‚¬μš©ν•˜μ—¬ ν΄λΌμš°λ“œ ν™˜κ²½μ„ κ΅¬μΆ•ν•˜κ²Œ λ©λ‹ˆλ‹€.

NCloudλ₯Ό 각각의 Local ν™˜κ²½μ—μ„œ μ½”λ“œλ‘œμ„œ(CLI) ꡬ좕, 생성 ν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•΄μ„œ κΆŒν•œκ³Ό κ΄€λ ¨λœ 섀정이 ν•„μš”ν•©λ‹ˆλ‹€. λ˜ν•œ, μ΄λŸ¬ν•œ κΆŒν•œμ€ CI ν˜Ήμ€ CD의 μƒν™©μ—μ„œ κΆŒν•œμ„ 전달할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. (λΉŒλ“œλ“±μ„ μ§„ν–‰ν•˜κΈ° μœ„ν•΄μ„œ) 이 밖에도 κΆŒν•œμ„ μ„€μ •ν•˜μ—¬ λ‹€μ–‘ν•œ μƒν™©μ—μ„œ ν™œμš© κ°€λŠ₯ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

ν΄λΌμš°λ“œ ν™˜κ²½μ„ μ‚¬μš©ν•˜μ—¬ 도메인을 κ΅¬μž… & 연결을 ν•˜λŠ” μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€. 기본적으둜 μ œκ³΅ν•˜λŠ” urlμ—μ„œ λ²—μ–΄λ‚˜ 우리의 도메인을 μ‚¬μš©ν•˜κ²Œ λœλ‹€λ©΄, 일일 λ°°ν¬μ‹œ ν•˜λ‚˜μ˜ κ³ μ •λœ μ£Όμ†Œλ₯Ό ν”„λ‘œμ νŠΈ λ™μ•ˆ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ HTTPS 에 λŒ€ν•œ 인증을 μΆ”κ°€ν•˜λŠ” 방법도 κ³ λ €ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, μš°λ¦¬κ°€ μ‚¬μš©ν•˜κ²Œ 될 쀑심 μ»΄ν“¨νŒ… μ„œλΉ„μŠ€ (Ncloud: Server, AWS: EC2)에 λŒ€ν•œ 섀정이 ν•„μš”ν•©λ‹ˆλ‹€. 졜초 μƒμ„±ν•œ μ„œλ²„λŠ” 빈 깑톡과 같은 μƒν™©μœΌλ‘œμ„œ μ™ΈλΆ€λ‘œμ˜ μ—°κ²°λ“±μ˜ μž‘μ—…μ΄ μ„ ν–‰λ˜μ–΄μ•Ό μ„œλ²„λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

κΈ°λŠ₯ κ°œλ°œμ‹œμ—, 뢀가적인 ν΄λΌμš°λ“œ μ„€μ • 없이 λ°”λ‘œ μ„œλ²„λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
κΈ°λŠ₯ 개발 이후에, 일일 배포λ₯Ό μˆ˜ν–‰ν•˜λ©° ν†΅μΌλœ μ£Όμ†Œλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

Ncloud의 곡식 λ¬Έμ„œμ— μžμ„Έν•œ ν™œμš© 방법이 μ•ˆλ‚΄λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

μž‘μ—…ν•΄μ•Ό ν•  μ€‘μš”ν•œ μ²΄ν¬λ¦¬μŠ€νŠΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
(μΆ”κ°€μ μœΌλ‘œ ν•„μš”ν•œ λ‚΄μš©μ€ λŒ“κΈ€λ‘œ λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.)

  • 도메인 κ΅¬μž…
  • HTTPSλ₯Ό μœ„ν•œ SSL μΈμ¦μ„œ
  • Server κ΅¬μž…
  • Server 포트 ν¬μ›Œλ”©
  • Server 포트 μ‚¬μš© ν—ˆμš© (http, sshλ“±)
  • κΆŒν•œμ„ κ°–λŠ” μœ μ € 생성
  • μ„œλΉ„μŠ€ λ‹¨μœ„λ‘œ ν—ˆμš©λ˜λŠ” κΆŒν•œ μ„€μ •
  • 초기 μ‰˜ 슀크립트 μž‘μ„±(ν•„μˆ˜ νŒ¨ν‚€μ§€ μ„€μΉ˜, μžλ™ 배포 슀크립트 λ“±)

κ³ λ €ν• λ§Œν•œ λŒ€μ•ˆ (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

[Design Issue] κ°€λ‘œν™”λ©΄μœΌλ‘œ λŒλ Έμ„ λ•Œ 등둝 λ²„νŠΌ μ•„λž˜μ— TextAreaκ°€ κΉ”λ €μžˆμŠ΅λ‹ˆλ‹€.

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

image

λͺ¨λ°”일 κ°€λ‘œν™”λ©΄μΌ λ•Œ λ“±λ‘λ²„νŠΌ μ•„λž˜μ— TextAreaκ°€ μ΄λ―Έμ§€μ²˜λŸΌ κΉ”λ €μžˆμ–΄μš”.

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

등둝이 화면에 맞게 맨 μ•„λž˜μ— 있고, κ·Έ μœ„μ— TextAreaκ°€ μžˆλ‹€.

버그 μž¬ν˜„ 방법

  1. λͺ¨λ°”일 κ°€λ‘œν™”λ©΄μœΌλ‘œ ν•΄λ‹Ή νŽ˜μ΄μ§€μ— μ ‘κ·Όν•œλ‹€.

ꡬ동 ν™˜κ²½

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”): Whale Browser

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” νŽ˜μ΄μ§€ (μ“°κΈ° κΈ°λŠ₯이 μžˆλŠ” 것 같은데 λΌμš°ν„°μ— 등둝이 μ•ˆλ˜μ–΄μžˆμŒ)

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

μ‘΄μž¬ν•˜μ§€μ•ŠλŠ” νŽ˜μ΄μ§€κ°€ 있음 (chat, info, write)

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

νŽ˜μ΄μ§€κ°€ λ‚˜νƒ€λ‚  것 같은데 μ—†μ—ˆλ‹€.

버그 μž¬ν˜„ 방법

  1. main => λ°”ν…€ λ„€λΉ„κ²Œμ΄μ…˜ 버큰 클릭

ꡬ동 ν™˜κ²½

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • OS: OS X
  • Browser 크둬

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μƒν’ˆ κ²€μƒ‰μ‹œ 가격 λ²”μœ„ μ œν•œ κΈ°λŠ₯ 제곡

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

κ΅¬λ§€μžμ—κ²Œ ꡬ맀 μ˜μ‚¬κ°€ μžˆλŠ” λ²”μœ„λ₯Ό ν•œμ •ν•˜μ—¬ 검색 κ²°κ³Όλ₯Ό λ°›μ•„λ³Ό 수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

μ€‘κ³ κ±°λž˜μ˜ νŠΉμ„±μƒ 물건의 νŒλ§€κ°€λŠ” λ‹€μ–‘ν•œ λ²”μœ„λ₯Ό κ°–μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μƒν™©μ—μ„œ κ΅¬λ§€μžλŠ” μ μ ˆν•œ νŒλ§€κ°€λ₯Ό μ°ΎκΈ°μœ„ν•΄ μ—¬λŸ¬ μƒν’ˆμ„ λ‘˜λŸ¬λ³΄λ©° ꡬ맀 κ°€λŠ₯성이 ν¬λ°•ν•œ μƒν’ˆλ“€μ΄ 결과에 ν¬ν•¨λ˜κ³€ ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λΆˆν•„μš”ν•œ 검색결과λ₯Ό μ œκ±°ν•˜κ³ , μ‚¬μš©μžμ—κ²Œ 맞좀된 정보λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•˜μ—¬ ν•„μš”ν•©λ‹ˆλ‹€.

참고 이슈 : #47

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μ›ν•˜λŠ” κ°€κ²©λ²”μœ„ 검색
  • μ΅œμ†Œ 비ꡐ 가격 λ‹¨μœ„ 선택(10원, 100원, 1000원 λ“±)
  • 비정상적인 κ°€κ²©λ²”μœ„ 탐지 (ex: -1000원 ~ 1000원 λ˜λŠ” 1000원 ~ 500원)

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μƒν’ˆ 이미지 μ—…λ‘œλ“œ μ„€μ •

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • μƒν’ˆμ˜ 이미지λ₯Ό 전달받아 Object storage에 μ €μž₯ν•˜κ³  μ‚¬μš©μžμ˜ ν™˜κ²½μ— μ΅œμ ν™”λœ 이미지λ₯Ό μ œκ³΅ν•΄μ£ΌκΈ° μœ„ν•œ μž‘μ—…μž…λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μƒν’ˆ 이미지 μ—…λ‘œλ“œ
  • κ³ ν™”μ§ˆ/μ€‘ν™”μ§ˆ/μ €ν™”μ§ˆ 3λ‹¨κ³„λ‘œ λ‚˜λˆ μ„œ μ €μž₯

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

메인화면 μ—μ„œ 리슀트λ₯Ό 화면을 μ•„λž˜λ‘œ μŠ€ν¬λ‘€ν•˜λ©΄ ν”„λ‘œκ·Έλ ˆμŠ€λ°”κ°€ λ‚˜μ˜€λ©΄μ„œ λ ‰μ΄μžˆμŒ

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

μ•„λž˜λ‘œ λ‹ΉκΈ°λ©΄ μƒˆλ‘œμš΄ 데이터가 λ‘œλ“œλ  쀄 μ•Œμ•˜μ–΄μš”

버그 μž¬ν˜„ 방법

  1. 메인화면 접속
  2. 화면을 μ•„λž˜λ‘œ λ‹ΉκΉ€
  3. ν”„λ‘œκ·Έλ ˆμŠ€λ°”κ°€ κΉœλ°•μ΄λ©° λ‚˜νƒ€λ‚¨

ꡬ동 ν™˜κ²½

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • OS: [mac os]
  • Browser [chrome]
  • Version []

Smartphone (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • Device: [아이폰 xs]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

같은 μœ μ €κ°€ μ ‘μ†μ„ν–ˆμ„λ•Œ μ±„νŒ…μ΄ μ—¬λŸ¬λ²ˆ ν‘œν˜„λ©λ‹ˆλ‹€.

버그 μ‹ κ³  (Bug Report)

μ–΄λ–€ 버그가 μ‘΄μž¬ν•˜λ‚˜μš”?

같은 μœ μ €κ°€ μ ‘μ†μ„ν–ˆμ„λ•Œ μ±„νŒ…μ΄ μ—¬λŸ¬λ²ˆ ν‘œν˜„λ©λ‹ˆλ‹€.
λ¬Όλ‘  ν…ŒμŠ€νŠΈμš© 계정이라 κ·Έλž¬κ² μ§€λ§Œ
μ•„κΉŒ ν™•μΈν•˜μ‹  κ²ƒμ²˜λŸΌ DB, socket λ“±λ“±μ˜ μ΄μŠˆκ°€ 겹쳐 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

μΆ”κ°€μ μœΌλ‘œ, 제 μ»΄ν“¨ν„°μ—μ„œλŠ” 4λ²ˆμ”© λ‚˜μ˜€κ³  λ‹€λ₯Έ μ‚¬λžŒ μ»΄ν“¨ν„°μ—μ„œλŠ” 2λ²ˆμ”© λ‚˜μ˜€λŠ”λ“± λžœλ€ν•˜κ²Œ λ°œμƒν•˜λŠ” μ΄μŠˆλ„ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

κΈ°λŒ€ν–ˆλ˜ κ²°κ³Ό

λ§€λ„λŸ¬μš΄ μ±„νŒ…μ΄ ν•˜κ³  μ‹Άμ—ˆμ–΄μš” γ… 

버그 μž¬ν˜„ 방법

  1. μ±„νŒ…λ°©μ— μ ‘μ†ν•œλ‹€. (아이디 1,2)
  2. μ±„νŒ…μ„ ν•œλ‹€.

ꡬ동 ν™˜κ²½

Desktop (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • OS: [Mac]
  • Browser [Chrome]
  • Version [e.g. 22]

Smartphone (μ•„λž˜ 정보λ₯Ό κΈ°μž¬ν•΄ μ£Όμ„Έμš”):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν•œ 번 더 μž¬ν˜„ 방법을 μ‹€ν–‰ ν•΄ λ΄€λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

React JS κΈ°λ³Έ 폴더 ꡬ쑰 톡일 ν•˜κΈ°

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

React JSλ₯Ό μ‚¬μš©ν•˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œ 폴더ꡬ쑰λ₯Ό ν†΅μΌν•˜μ—¬ ν˜‘μ—…μ„ μš©μ΄ν•˜κ²Œ ν•œλ‹€.

κΈ°λŠ₯ λ°°κ²½

λ¦¬μ•‘νŠΈμ˜ κ²½μš°μ— νŒ€μ› 전체가 ν•˜λ‚˜μ˜ μ†ŒμŠ€μ½”λ“œλ₯Ό κ³΅μœ ν•©λ‹ˆλ‹€. 각각 λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ λ¦¬μ•‘νŠΈ ν”„λ‘œμ νŠΈ μƒμ„±μ‹œμ— 폴더 ꡬ쑰의 차이둜 μΈν•˜μ—¬ λ³΅μž‘ν•¨μ΄ 증가할 수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Όλ“€μ–΄ μ»΄ν¬λ„ŒνŠΈλ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ λˆ„κ΅°κ°€λŠ” container, components λΌλŠ” λ‘κ°œμ˜ ν΄λ”λ‘œ λΆ„λ¦¬ν•˜λŠ” 반면, λˆ„κ΅°κ°€λŠ” components λΌλŠ” ν•˜λ‚˜μ˜ ν΄λ”λ§Œμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Reactμ—μ„œ 폴더 ꡬ쑰에 λŒ€ν•΄μ„œ κ°•μ œν•˜λŠ” ν•˜λ‚˜μ˜ 방법이 μ—†κ³ , 이λ₯Ό 톡일할 ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

μ„Έλͺ…이 ν•˜λ‚˜μ˜ μ†ŒμŠ€μ½”λ“œλ₯Ό κ³΅μœ ν•˜κ³ , κ°œλ°œμ‹œ μ•½μ†λœ μ μ ˆν•œ μœ„μΉ˜μ—μ„œ μž‘μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

React JSλ₯Ό μ‚¬μš©ν•œ λ‹€μ–‘ν•œ ν”„λ‘œμ νŠΈλ₯Ό μ°Έκ³ ν•˜μ—¬ 폴더 ꡬ쑰λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
μΆ”κ°€ 정보에 μ°Έκ³ ν•  λ§Œν•œ μžλ£Œλ“€μ„ μΆ”κ°€ ν•˜μ˜€μœΌλ©°, λŒ“κΈ€μ„ ν†΅ν•˜μ—¬ 뢀가적인 자료λ₯Ό μ˜¬λ €μ£Όμ…”λ„ λ©λ‹ˆλ‹€.

μΆ”κ°€ 정보 (선택)

λ²¨λ‘œνΌνŠΈλ‹˜μ˜ velog ν”„λ‘œμ νŠΈμ˜ github λ ˆν¬μž…λ‹ˆλ‹€

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ±„νŒ… UI/UX

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

κ΅¬λ§€μžμ™€ νŒλ§€μžκ°„μ˜ μ±„νŒ…μ„ μ›ν™œν•˜κ²Œ μ œκ³΅ν•˜κΈ° μœ„ν•œ UI/UX 에 λŒ€ν•œ λ‚΄μš©μ„ ν¬ν•¨ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

Issue #77

μ μ ˆν•œ UI/UXλ₯Ό ν†΅ν•˜μ—¬ κ΅¬λ§€μžμ™€ νŒλ§€μžκ°€ μ§κ΄€μ μœΌλ‘œ λŒ€ν™”λ₯Ό λ‚˜λˆ„κ³ , κ·Έ κ³Όμ •μ—μ„œ 거래λ₯Ό ν™œλ°œν•˜κ²Œ 진행할 수 μžˆλ„λ‘ μž₯λ €ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μ‚¬μš©μžμ˜ μ΅œμ‹  메세지λ₯Ό 확인할 수 μžˆλ„λ‘ 슀크둀 쑰절
  • λ¬΄ν•œ 슀크둀
  • 메세지 쒌우 정렬을 톡해 식별
  • 메세지 μž‘μ„± μ‹œκ°„ λ…ΈμΆœ
  • 같은 날에 μž‘μ„±λœ 메세지 λΆ„λ₯˜ (section)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μœ μ €λ‘œμ„œ λ¬Όν’ˆμ˜ ꡬ맀λ₯Ό μœ„ν•˜μ—¬ μƒν’ˆμ‘°νšŒκ°€ κ°€λŠ₯ν•˜κ³ , 판맀λ₯Ό μœ„ν•˜μ—¬ μ œν’ˆμ˜ 등둝 μˆ˜μ • μ‚­μ œν•  수 μžˆλ‹€.

μœ μ € μŠ€ν† λ¦¬ μΆ”κ°€ (Add User Story)

μœ μ € μŠ€ν† λ¦¬

μœ μ €λ‘œμ„œ λ¬Όν’ˆμ˜ ꡬ맀λ₯Ό μœ„ν•˜μ—¬ μƒν’ˆμ‘°νšŒκ°€ κ°€λŠ₯ν•˜κ³ , 판맀λ₯Ό μœ„ν•˜μ—¬ μ œν’ˆμ˜ 등둝 μˆ˜μ • μ‚­μ œν•  수 μžˆλ‹€.

μƒμ„Έν•œ μ„€λͺ…

  • μ€‘κ³ κ±°λž˜μ— μžˆμ–΄μ„œ κ°€μž₯ 핡심적인 κΈ°λŠ₯으둜써, μƒν’ˆλͺ©λ‘μ„ 확인할 수 μžˆλŠ” μˆ˜λ‹¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€. 이에 일반적인 κ²Œμ‹œνŒ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λ˜, κ΅¬λ§€μžμ—κ²Œ μƒν’ˆμ˜ 좔가적인 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. λ”°λΌμ„œ, μƒν’ˆ μƒνƒœκ°€ 확인 κ°€λŠ₯ν•œ 이미지 μ €μž₯μ†Œλ₯Ό 관리할 수 μžˆλŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κ³ , λΆ€κ°€μ μœΌλ‘œ μƒν’ˆ 거래 μƒνƒœ, μ œν’ˆμ˜ μƒνƒœ, 가격정보등 물건 κ±°λž˜μ— ν•„μš”ν•œ 정보λ₯Ό 확인할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • λ°μ΄ν„°λ² μ΄μŠ€λŠ” 마이크둜 μ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜λ₯Ό λ”°λ₯΄κΈ° μœ„ν•΄ ν…Œμ΄λΈ”μ„ λ³„λ„λ‘œ λΆ„λ₯˜ν•˜μ—¬ κ΅¬ν˜„ν•©λ‹ˆλ‹€. (ex: μƒν’ˆν…Œμ΄λΈ”μ€ μƒν’ˆκ΄€λ¦¬ μ„œλΉ„μŠ€μ—λ§Œ 쑴재, μœ μ € μ •λ³΄λŠ” μœ μ €κ΄€λ¦¬ μ„œλΉ„μŠ€μ—λ§Œ 쑴재, μΆ”ν›„ 각각의 μ •λ³΄λŠ” apiλ₯Ό 톡해 연동)

μ„ ν–‰ 이슈 (선택)

  • 인증
    • μƒν’ˆ μˆ˜μ •, μ‚­μ œ, 등둝기λŠ₯은 νšŒμ›μΈ 경우만 λ™μž‘ν•©λ‹ˆλ‹€. μš°μ„ μˆœμœ„μ— 따라 ν•΄λ‹Ή κΈ°λŠ₯은 λͺ©μ—…μœΌλ‘œ κ΅¬ν˜„ν•˜κ³  μΆ”ν›„ 인증기λŠ₯ κ΅¬ν˜„μ‹œ μ—°λ™ν•©λ‹ˆλ‹€.

μ™„λ£Œ 쑰건

  • μƒν’ˆ ν…Œμ΄λΈ” 섀계
  • Sequelize μ„€μ •
  • μƒν’ˆ 이미지 μ—…λ‘œλ“œ
  • μƒν’ˆ 상세 쑰회
  • μƒν’ˆ 등둝
  • μƒν’ˆ μ‚­μ œ
  • μƒν’ˆ μˆ˜μ •
  • μƒν’ˆ λͺ©λ‘ 쑰회
  • λŒμ–΄μ˜¬λ¦¬κΈ° κΈ°λŠ₯ κ΅¬ν˜„

μΆ”κ°€ 정보 (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • EPIC을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€ (선택)
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μœ μ € μŠ€ν† λ¦¬λ₯Ό μœ„ν•œ μΆ©λΆ„ν•œ μ™„λ£Œ 쑰건이 μ œμ‹œ λ˜μ—ˆλŠ”κ°€
  • Assignees λ₯Ό μΆ”κ°€ ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Labels λ₯Ό μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

Express JS μ—λŸ¬ 좔적 μž₯치 μ‚½μž…

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

Express JSμ—μ„œ μ›κ²©μ—μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬λ₯Ό μΆ”μ ν•˜κΈ° μœ„ν•œ 도ꡬ μ‚½μž…

κΈ°λŠ₯ λ°°κ²½

μš°λ¦¬λŠ” Express JSλ₯Ό API μ„œλ²„λ‘œμ„œ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. Express JSλŠ” localμ—μ„œ κ°œλ°œλ˜μ–΄ μ™ΈλΆ€ ν΄λΌμš°λ“œ μ„œλ²„λ‘œ 배포 되며, 배포 μ΄ν›„μ—λŠ” λ‘œμ»¬μ—μ„œ μ œκ³΅λ°›λ˜ μ—λŸ¬ μˆ˜μ§‘κ³Ό 같은 ν˜•νƒœμ˜ 지원을 μ œκ³΅λ°›κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€. (디버깅 도ꡬ) λ§Œμ•½ μ—λŸ¬ μˆ˜μ§‘μ„ 기본적으둜 μ œκ³΅ν•˜λ”λΌλ„ 이λ₯Ό μ‘°νšŒν•˜κΈ° μœ„ν•˜μ—¬ 원격에 μžˆλŠ” μ„œλ²„μ— 주기적으둜 μ ‘κ·Ό ν•˜μ—¬ (SSH λ“±) ν™•μΈν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.

ν΄λΌμš°λ“œ μ„Έμƒμ—μ„œ μ„œλ²„λŠ” ν•„μš”μ— 따라 Scale out을 ν•˜κΈ°λ„ ν•˜κ³ , 이 κ³Όμ •μ†μ—μ„œ μ„œλ²„κ°€ μƒμ„±λ˜κ³  μ‚­μ œλ˜κΈ°λ₯Ό λ°˜λ³΅ν•©λ‹ˆλ‹€. 주둜 Imageλ₯Ό ν†΅ν•˜μ—¬ container의 ν˜•νƒœλ‘œ μ„œλ²„λ₯Ό κ΅¬μ„±ν•˜κ³ , μ΄λ ‡κ²Œ 단λͺ…ν•˜λŠ”(ephemeral) μ„œλ²„μ˜ νŠΉμ„±μƒ 내뢀에 μ‘΄μž¬ν•˜λŠ” λ‘œκ·Έλ“€λ„ 같이 μ‚­μ œλ˜κ³€ ν•©λ‹ˆλ‹€. 즉, 운영되고 μžˆλŠ” μ„œλ²„μ—μ„œ μˆ˜μ§‘ν•œ 둜그λ₯Ό μ€‘μ•™μœΌλ‘œ λͺ¨μœΌλŠ” μž‘μ—…μ„ ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, μ„œλ²„μ™€ ν•¨κ»˜ μ†Œλ©Έλ  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ λ²ˆκ±°λ‘œμ›€μ„ λ°©μ§€ν•˜κΈ° μœ„ν•˜μ—¬ μ€‘μ•™μ—μ„œ λͺ¨λ“  Express JSμ—μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬λ₯Ό μˆ˜μ§‘ν•˜κ³  좔적할 수 μžˆλŠ” 도ꡬλ₯Ό μ ‘λͺ©ν•˜κ³ μž ν•©λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

μ—¬λŸ¬λŒ€μ˜ Express Serverμ—μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬μ™€ 기타 λ‘œκ·Έλ“€μ„ ν•œκ³³μœΌλ‘œ μˆ˜μ§‘ν•˜μ—¬ κ΄€λ¦¬ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

Issue #7 와 λ™μΌν•œ 라이브러리인 Sentryλ₯Ό μ‚¬μš©ν•˜κ³ μž ν•©λ‹ˆλ‹€.

μ—λŸ¬ 좔적에 μ‚¬μš©λ˜λŠ” 도ꡬλ₯Ό ν†΅μΌν•¨μœΌλ‘œμ„œ 개발의 생산성을 μ˜¬λ¦¬λ„, 관리λ₯Ό μš©μ΄ν•˜κ²Œ ν•©λ‹ˆλ‹€

이 κ³Όμ •μ—μ„œ, React JSμ—μ„œλŠ” Error Boundaries λ₯Ό ν†΅ν•˜μ—¬ μ—λŸ¬λ₯Ό μˆ˜μ§‘ν•˜μ˜€λ‹€λ©΄, Express JSμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 νλ¦„μœΌλ‘œ μ—λŸ¬λ₯Ό μˆ˜μ§‘ & 처리 ν•˜κ³ μž ν•©λ‹ˆλ‹€.

Some module throws an error 
-> API router catches the error 
-> it propagates the error to the middleware

κ³ λ €ν•  λ§Œν•œ λŒ€μ•ˆ (선택)

μΆ”κ°€ 정보 (선택)

  • node best practices
    • node μ—μ„œ μ‚¬μš©λ˜λŠ” 베슀트 ν”„λ ‰ν‹±μŠ€λ“€μ„ λͺ¨μ•„λ‘” λ ˆν¬μž…λ‹ˆλ‹€.

μΆ”κ°€μ μœΌλ‘œ κ³ λ €ν•  λ§Œν•œ λŒ€μ•ˆμ΄λ‚˜, Sentry μ΄μ™Έμ˜ 라이브러리 μ‚¬μš©μ„ μ›ν•œλ‹€λ©΄ comment λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μƒν’ˆμ˜ CRUD

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • κ²Œμ‹œνŒμœΌλ‘œμ„œ κΈ°λ³Έ κΈ°λŠ₯인 μƒν’ˆμ˜ CRUDλ₯Ό μœ„ν•œ μž‘μ—…μž…λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μƒν’ˆ 상세 쑰회
  • μƒν’ˆ 등둝
  • μƒν’ˆ μ‚­μ œ
  • μƒν’ˆ μˆ˜μ •
  • μƒν’ˆ λͺ©λ‘ 쑰회

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μ±„νŒ… 인증/κΆŒν•œ

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

λŒ€ν™”μ— μ°Έμ—¬ν•˜λŠ” κ΅¬λ§€μžμ™€ 판맀자만이 μž…μž₯ν•  수 μžˆλ„λ‘ λ‘œμ§μ„ μž‘μ„±ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

Issue #77

κ΅¬λ§€μžμ™€ νŒλ§€μžκ°„μ˜ 1:1 μ±„νŒ…μ΄λ―€λ‘œ, 이λ₯Ό μœ„ν•΄ ν—ˆκ°€λœ μ‚¬μš©μžλ§Œ μ ‘κ·Όν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄μ„œ μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ λͺ¨λ‘ 방어적인 둜직이 ν•„μš”ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • ν—ˆκ°€λœ μ‚¬μš©μžλ§Œ μž…μž₯ν•  수 μžˆλŠ” 둜직

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μƒν’ˆ μΉ΄ν…Œκ³ λ¦¬ 필터링

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • μ‚¬μš©μžκ°€ μ›ν•˜λŠ” μΉ΄ν…Œκ³ λ¦¬μ˜ μƒν’ˆλ“€λ§Œ μ œκ³΅ν•΄ μ€λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μΉ΄ν…Œκ³ λ¦¬μ— 따라 ν•„ν„°λ§λœ λͺ©λ‘μ„ 제곡

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

ReactJS μ—λŸ¬ 좔적 μž₯치 μ‚½μž…

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

React JSμ—μ„œ μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €μ—μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬λ₯Ό μΆ”μ ν•˜κΈ° μœ„ν•œ 도ꡬ μ‚½μž…

κΈ°λŠ₯ λ°°κ²½

μš°λ¦¬λŠ” ν”„λ‘œμ νŠΈμ—μ„œ React JS λ₯Ό λ°”νƒ•μœΌλ‘œ μƒμ„±λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‚¬μš©μžμ—κ²Œ FEλ‘œμ„œ μ œκ³΅ν•©λ‹ˆλ‹€. React JSλŠ” Single Page Application(SPA)λ‘œμ„œ, μ‚¬μš©μžμ—κ²Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ동을 μœ„ν•˜μ—¬ ν•„μš”ν•œ λͺ¨λ“  νŒŒμΌμ„ μ „λ‹¬ν•œλ‹€λŠ” νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ μ „λ‹¬λœ νŒŒμΌμ—λŠ” HTML, JS, CSSλ“± μ›Ή λΈŒλΌμš°μ €μ—μ„œ 화면을 λžœλ”λ§ν•˜κΈ° μœ„ν•˜μ—¬ ν•„μš”ν•œ 도ꡬ듀을 ν¬ν•¨ν•˜κ³  있으며, 좔가적인 μ •λ³΄λŠ” μ™ΈλΆ€ APIλ₯Ό ν†΅ν•˜μ—¬ μš”μ²­ & ν‘œν˜„ ν•˜κ²Œ λ©λ‹ˆλ‹€.

SPA의 νŠΉμ„±μƒ μ‹€ν–‰λ˜λŠ” μ½”λ“œ(JS, React)와 이에 λŒ€ν•œ κ²°κ³Ό λͺ¨λ‘ μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €μ—μ„œ μ‘΄μž¬ν•˜κ²Œ λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ SPAκ°€ ν•œλ²ˆ λ°°ν¬λ˜μ–΄ μ‚¬μš©μžμ—κ²Œ μ „λ‹¬λ˜λ©΄, 이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ μ œμ–΄κΆŒμ€ 저희(개발자)의 손을 λ²—μ–΄λ‚˜κ²Œ λ©λ‹ˆλ‹€.

μ΄λŠ” μ„œλΉ„μŠ€ μ΄μš©μ— μ „ν˜€ λ¬Έμ œκ°€ μ—†λŠ” ν˜•νƒœμ΄λ©°, μ΄μƒν•œ 점도 μ—†μ§€λ§Œ μ—λŸ¬ λ°œμƒμ‹œμ— κ·Έ 좔적이 μ–΄λ ΅κ²Œ λ©λ‹ˆλ‹€.

개발자 λͺ¨λ“œμ—μ„œ React JSλ₯Ό κ°œλ°œν•˜κ²Œ 되면, λ‹€μ–‘ν•œ debugging 도ꡬλ₯Ό ν†΅ν•˜μ—¬ 였λ₯˜λ₯Ό κ²€μΆœν•˜κ³  κ°œμ„ ν•˜κ²Œ λ©λ‹ˆλ‹€. λ˜ν•œ, ν…ŒμŠ€νŠΈλ₯Ό ν†΅ν•˜μ—¬ μ–΄λŠμ •λ„ ν’ˆμ§ˆμ— λŒ€ν•œ μžμ‹ κ°μ„ λΆ€μ—¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ, 아무리 잘 μž‘μ„±λœ ν…ŒμŠ€νŠΈλΌ ν•˜μ—¬λ„ μ‚¬μš©μžμ˜ λͺ¨λ“  μ‚¬μš© νŒ¨ν„΄μ„ 포함할 수 μ—†κ³ , μ˜ˆμƒμΉ˜ λͺ»ν•œ μ—λŸ¬λŠ” 항상 μ‘΄μž¬ν•˜λŠ” 문제 μž…λ‹ˆλ‹€.

μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 배포된 Reactμ•±μ˜ 경우, μ‚¬μš©μžμ—κ²Œ μ „λ‹¬λœ μ‹œμ μ—μ„œ μ„œμˆ ν•˜μ˜€λ“―μ΄ λ‹€μ–‘ν•œ μ—λŸ¬κ°€ λ°œμƒ ν•  수 μžˆμ§€λ§Œ, 이λ₯Ό 개발자의 μž…μž₯μ—μ„œλŠ” μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€. μ΅œμ•…μ˜ κ²½μš°μ—λŠ” μ‚¬μš©μž λΈŒλΌμš°μ €μ—μ„œ 앱이 μ™„μ „νžˆ 정지(crashλ˜μ–΄) λ˜μ–΄λ„ κ°œλ°œμžλŠ” μ „ν˜€ μ•Œ 수 μ—†μœΌλ©°, 이 상황에 λŒ€ν•œ 자발적인 μ‚¬μš©μžμ˜ "였λ₯˜ μ‹ κ³ "κ°€ 제곡될 λ•Œ κΉŒμ§€ 였랜 μ‹œκ°„μ΄ μ†Œμš”λ  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©μžμ—μ„œ λ°œμƒν•˜λŠ” μ£Όμš”ν•˜κ³  κΈ΄κΈ‰ν•œ μ—λŸ¬μ™€ μ—¬λŸ¬ 크고 μž‘μ€ μ—λŸ¬λ“€μ„ μˆ˜μ§‘ν•˜κ³ , 이λ₯Ό 관리 & 뢄석 ν•˜μ—¬ μ„œλΉ„μŠ€λ₯Ό κ°œμ„  μ‹œν‚¬ 수 μžˆλŠ” 방법이 ν•„μš”ν•©λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

μ‚¬μš©μžμ—κ²Œ μ „λ‹¬λœ React JS μ—μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬λ“€μ„ μ‹€μ‹œκ°„μ— κ°€κΉκ²Œ 톡보받을 수 있고, λ‹€μ–‘ν•œ 뢄석 도ꡬλ₯Ό ν¬ν•¨ν•˜μ—¬ λΉ λ₯Έ μ„œλΉ„μŠ€ κ°œμ„ μ„ κ°€λŠ₯토둝 ν•©λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

Sentry

μƒμš©ν™”λœ λ„κ΅¬μ΄μž, μ˜€ν”ˆμ†ŒμŠ€ 도ꡬ인 Sentryλ₯Ό μ‚¬μš©ν•˜λŠ” 방법을 μ œμ•ˆν•©λ‹ˆλ‹€.

Sentry provides open-source and hosted error monitoring that helps all software
teams discover, triage, and prioritize errors in real-time.

이 λ„κ΅¬λŠ” ReactJS에 μ†μ‰½κ²Œ μ‚½μž…ν•  수 μžˆλŠ” ꡬ체적인 곡식 λ¬Έμ„œλ₯Ό μ œκ³΅ν•˜μ—¬ λΉ λ₯Έ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ²Œ ν•΄μ€λ‹ˆλ‹€.
λ˜ν•œ, 디버깅을 μœ„ν•œ λ‹€μ–‘ν•œ 도ꡬ듀과 μ‹œκ°ν™” 도ꡬλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

κ³ λ €ν• λ§Œν•œ λŒ€μ•ˆ (선택)

React 16 Error Boundaries

React JS의 v16 λΆ€ν„°λŠ” Error BoundariesλΌλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이 κΈ°λŠ₯을 ν†΅ν•˜μ—¬ μš°λ¦¬λŠ” μ€‘μ•™μ—μ„œ ReactJSμ—μ„œ λ°œμƒλœ λ‹€μ–‘ν•œ μ—λŸ¬λ“€μ„ μ€‘μ•™μ—μ„œ μˆ˜μ§‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μˆ˜μ§‘λœ μ—λŸ¬λ₯Ό 우리의 μ—λŸ¬ μˆ˜μ§‘ κ³΅κ°„μœΌλ‘œ 보내어 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€λ§Œ, 이 방식을 μ‚¬μš©ν•˜λ©΄ λ³„λ„μ˜ 뢄석 & μ‹œκ°ν™” 도ꡬ가 ν•„μš”ν•©λ‹ˆλ‹€.

Try / Catch

React JS의 κ³΅μ‹λ¬Έμ„œμ— μ–ΈκΈ‰λ˜μ–΄ μžˆλ“―μ΄, try/catchλŠ” imperative μŠ€νƒ€μΌμ˜ μ½”λ“œμ—μ„œ μ‚¬μš© λ©λ‹ˆλ‹€. 반면, React JSλŠ” declarative ν•œ μŠ€νƒ€μΌμ„ μ œκ³΅ν•˜μ—¬ try/catch의 μ—λŸ¬ 처리 방식이 μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‹€λ§Œ, μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œ μ™ΈλΆ€ 톡신등과 같은 상황은 try/catch 둜 μ—λŸ¬λ₯Ό μˆ˜μ§‘ν•˜μ—¬ μ™ΈλΆ€λ‘œ μ „μ†‘ν•˜λŠ” 방법을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

큰 μœ μ €μŠ€ν† λ¦¬λ₯Ό, μ„ΈλΆ€ ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 이슈둜 μͺΌκ°œμ–΄ 관리

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

μœ μ € μŠ€ν† λ¦¬μ— ν¬ν•¨λ˜λŠ” μ„ΈλΆ€ 체크리슀트(ν…ŒμŠ€ν¬)λ₯Ό λ³„λ„μ˜ 이슈둜 κ΄€λ¦¬ν•©λ‹ˆλ‹€.

κΈ°λŠ₯ λ°°κ²½

μš°λ¦¬κ°€ μœ μ € μŠ€ν† λ¦¬λ‘œ 이슈λ₯Ό λ§Œλ“œλ‹ˆ,
ν”„λ‘œμ νŠΈ(백둜그)에 ν•˜λ‚˜μ˜ 큰 μœ μ € μŠ€ν† λ¦¬κ°€ λ©μ–΄λ¦¬λ‘œ λ“€μ–΄κ°€μ„œ μ‹œκ°„κ³Ό μš°μ„ μˆœμœ„ 츑정이 μ–΄λ €μš΄κ²ƒ κ°™μŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

  • μž‘μ—…λ³„ μš°μ„ μˆœμœ„λ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€
  • μž‘μ—…λ‹Ή μž‘μ—…μ„ ν•˜λŠ”μž(Assignees)λ₯Ό μ§€μ •ν•˜κΈ° μˆ˜μ›”ν•©λ‹ˆλ‹€.
  • 이슈λ₯Ό λ‹€λŠ”λ° μΆ”κ°€ μ‹œκ°„μ΄ μ†Œμš”λ©λ‹ˆλ‹€

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

ν•˜λ‚˜μ˜ 큰 μœ μ €μŠ€ν† λ¦¬λ₯Ό, μ„ΈλΆ€ ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 이슈둜 μͺΌκ°œμ–΄ κ΄€λ¦¬ν•©λ‹ˆλ‹€.

κ³ λ €ν• λ§Œν•œ λŒ€μ•ˆ (선택)

ν”„λ‘œμ νŠΈμ˜ λ…ΈνŠΈ λ₯Ό μΆ”κ°€ν•˜λŠ” κΈ°λŠ₯으둜 ν…ŒμŠ€ν¬λ₯Ό λΆ„λ₯˜ν•˜λŠ” 방법.

  • μž‘μ—…λ³„ μš°μ„ μˆœμœ„λ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€
  • μž‘μ—…λ‹Ή μž‘μ—…μ„ ν•˜λŠ”μž(Assignees)λ₯Ό μ§€μ •ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
  • λΉ λ₯Έ μ‹œκ°„λ‚΄μ— μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μΆ”κ°€ μ„€λͺ…

λ‹€μŒ λŒ“κΈ€μ—μ„œ λ¬Έμ œκ°€ 제기 λ˜μ–΄ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

μœ μ €μ •λ³΄ 쑰회

ν…ŒμŠ€ν¬ μΆ”κ°€

ν…ŒμŠ€ν¬ μš”μ•½

  • μ‚¬μš©μžμ˜ μœ μ €μ •λ³΄λ₯Ό μ‘°νšŒν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬κ°€ μ™œ ν•„μš”ν•œκ°€μš”

  • μ‚¬μš©μžκ°€ μƒν’ˆ μ°œν•˜κΈ°, 판맀, ꡬ맀 내역을 확인할 수 μžˆμ–΄μ•Ό ν•˜κ³ 
  • μœ„μΉ˜μ •λ³΄λ₯Ό μˆ˜μ •ν•  수 μžˆμ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— ν•„μš”ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…ŒμŠ€ν¬λ₯Ό μœ„ν•΄ 무엇을 μ–΄λ–»κ²Œ ν• κ±΄κ°€μš”

  • μƒν’ˆ μ‘°νšŒν•  수 μžˆλŠ” νŽ˜μ΄μ§€
  • μœ„μΉ˜ 정보λ₯Ό μ‘°μ •ν•  수 μžˆλŠ” νŽ˜μ΄μ§€

μΆ”κ°€ μ„€λͺ… (선택)

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • ν…ŒμŠ€ν¬λ₯Ό ν˜•μ‹μ— 맞게 μž‘μ„± ν•˜μ˜€λŠ”κ°€
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • ν•΄λ‹Ήν•˜λŠ” μœ μ €μŠ€ν† λ¦¬λ₯Ό μ°Έμ‘° ν•˜μ˜€λŠ”κ°€
  • ν…ŒμŠ€ν¬μ— ν•΄λ‹Ήν•˜λŠ” 에픽과, ν…ŒμŠ€ν¬ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • μ μ ˆν•œ Projects에 μΆ”κ°€ λ˜μ—ˆλŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

swagger μ„€μ •ν•˜κΈ°

κΈ°λŠ₯ μ œμ•ˆ (Feature Request)

κΈ°λŠ₯ μš”μ•½

RESTful APIλ₯Ό μ‚¬μš©ν•¨μ— μžˆμ–΄, api λͺ…μ„Έμ„œλ₯Ό μž‘μ„± ν•  λ•Œ μžλ™ν™”λœ 도ꡬλ₯Ό μ΄μš©ν•΄ μ™„μ„±λœ μΈν„°λ ‰ν‹°λΈŒν•œ λ¬Έμ„œλ₯Ό 생성할 수 μžˆλ„λ‘ swagger을 μ‚¬μš©ν•  것을 μ œμ•ˆν•©λ‹ˆλ‹€.

κΈ°λŠ₯ λ°°κ²½

  • RESTful API의 ν•„μˆ˜ μš”κ±΄μΈ self-descriptive messagesλ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ documentation이 ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ λͺ¨λ“  api에 λŒ€ν•΄ μ •ν˜•ν™”λœ λ¬Έμ„œλ₯Ό λ§Œλ“€κ³  κ΄€λ¦¬ν•˜κ³  ν…ŒμŠ€νŠΈν•˜λŠ” 것은 맀우 νž˜λ“€κ³  번거둜운 μ‚¬ν•­μž…λ‹ˆλ‹€.
  • 이에 보기 μ’‹κ³  μΈν„°λ ‰ν‹°λΈŒν•˜λ©° 자체 ν…ŒμŠ€νŒ…κΉŒμ§€ κ°€λŠ₯ν•œ swagger을 μ‚¬μš©ν•¨μœΌλ‘œμ¨ 보닀 쉽고 μ‚¬μš©μž μΉœν™”μ μΈ api λ¬Έμ„œλ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” κ²°κ³Ό

Screenshot from 2019-11-12 15-50-05

μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μœ„ν•œ 방법 μ œμ‹œ

  • api μ„œλ²„μ˜ /api-docs ν˜•νƒœμ˜ λΌμš°ν„°λ‘œ swagger-uiλ₯Ό 연동할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μžμ„Έν•œ μ‚¬μš©λ²•μ„ μœ„ν•΄ ν•˜λ‹¨ κ³΅μ‹λ¬Έμ„œμ˜ μ‚¬μš©λ²• 링크λ₯Ό μ²¨λΆ€ν•©λ‹ˆλ‹€.

κ³ λ €ν• λ§Œν•œ λŒ€μ•ˆ (선택)

apidoc :

  • demo
  • 곡식 λ¬Έμ„œ
  • μ‚¬μš©λ²•μ€ 거의 λΉ„μŠ·ν•˜κ³  μ•½κ°„μ˜ 차이만 μžˆμœΌλ―€λ‘œ uiκ°€ 더 예쁘고 nodejs ν™˜κ²½μ˜ κ΄€λ ¨ μžλ£Œκ°€ λ§Žμ€ swaggerκ°€ 더 쒋을 것이라 νŒλ‹¨λ©λ‹ˆλ‹€.

μΆ”κ°€ 정보 (선택)

swagger κ³΅μ‹λ¬Έμ„œ
swagger-ui NPM module

체크리슀트

  • ν•΄λ‹Ή μ΄μŠˆμ™€ μœ μ‚¬ν•œ μ„ ν–‰ μ΄μŠˆκ°€ μ—†λŠ” 것을 확인 ν•˜μ˜€λŠ”κ°€
  • ν•΄λ‹Ή μ΄μŠˆκ°€ ν”„λ‘œμ νŠΈμ˜ λͺ©μ κ³Ό λΆ€ν•©λ˜λŠ”κ°€
  • 이슈 제λͺ©μ€ 직관적인가
  • 제 3μžκ°€ 봀을 λ•Œ 좔가적인 질문 없이 이슈λ₯Ό 이해할 수 μžˆλŠ”κ°€
  • μ μ ˆν•œ 라벨을 μΆ”κ°€ν•˜μ˜€λŠ”κ°€
  • λͺ¨λ“  ν•„μˆ˜ ν•­λͺ©μ„ μž‘μ„±ν•˜μ˜€λŠ”κ°€

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.