Skip to content

developer-dating/gitssum-BE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 

Repository files navigation

깃썸 - 개발자λ₯Ό μœ„ν•œ μ†Œμ…œ λ°μ΄νŒ… μ›Ήμ•±

1

κ°œλ°œμžλ“€μ„ μœ„ν•œ μ†Œμ…œ λ°μ΄νŒ… μ›Ή

깃썸 ν•˜λŸ¬κ°€κΈ°

Front-End Github β†’

Back-End Github β†’

Untitled

πŸ“šΒ μ•„ν‚€ν…μ³

아킀택쳐깃썸2 PNG

μ•„ν‚€ν…μ²˜ λ„μž… λ°°κ²½

FE

  • React Query

    μ„œλ²„μ˜ 값을 ν΄λΌμ΄μ–ΈνŠΈμ— κ°€μ Έμ˜€κ±°λ‚˜, 캐싱, κ°’ μ—…λ°μ΄νŠΈ, μ—λŸ¬ν•Έλ“€λ§ λ“± 비동기 과정을 쑰금 더 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ¦¬μ•‘νŠΈ 쿼리λ₯Ό λ„μž…ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

  • Recoil

    μ „μ—­ μƒνƒœ 관리 λΌμ΄λΈŒλŸ¬λ¦¬λ‘œλŠ” λ¦¬λ•μŠ€μ— λΉ„ν•΄ μ½”λ“œκ°€ κ°„κ²°ν•˜κ³  직관적인 λ‘œμ§μ„ ꡬ성할 수 있으며, λ¦¬μ•‘νŠΈ 쿼리와도 ν˜Έν™˜μ„± 및 접근성이 λ›°μ–΄λ‚œ 리코일을 μ±„νƒν•˜μ˜€μŠ΅λ‹ˆλ‹€.

  • Tailwind

    λ˜ν•œ 생산적인 λ””μžμΈ μ‹œμŠ€ν…œ ꡬ좕을 μœ„ν•˜μ—¬ μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ— λ›°μ–΄λ‚˜κ³  λ””μžμΈνˆ΄μΈ ν”Όκ·Έλ§ˆμ™€λ„ 잘 λ§žλŠ” ν”„λ ˆμž„μ›Œν¬μΈ ν…ŒμΌμœˆλ“œλ₯Ό λ„μž…ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

BE

  • WebSocket, Stomp

    μ„œλ²„μ˜ 이벀트λ₯Ό ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ³΄λ‚΄λŠ” 방법 쀑에 μ„œλ²„μ— λΆ€ν•˜κ°€ 덜 μ˜€κ²Œλ” μ–‘λ°©ν–₯ 톡신이 κ°€λŠ₯ν•œ websocket을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. μ±„νŒ… κΈ°λŠ₯을 μœ„ν•΄μ„œ 기반으둜 λ™μž‘ν•˜λŠ” stompλ₯Ό μ΄μš©ν•΄ topic을 μƒμ„±ν•˜λ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.

  • Redis

    비동기 톡신을 ν•˜λŠ” μ±„νŒ… κ΅¬ν˜„μ„ μœ„ν•΄ λ©”μ‹œμ§€ λΈŒλ‘œμ»€λ‘œλŠ” λ ˆλ””μŠ€λ₯Ό μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ—¬λŸ¬ κ°€μ§€ λ©”μ‹œμ§€ 브둜컀 쀑에 λ ˆλ””μŠ€λ₯Ό μ„ νƒν•œ μ΄μœ λŠ” Pub-subκ΅¬μ‘°μ—¬μ„œ μΌλŒ€μΌ μΌλŒ€λ‹€ ν˜•νƒœκ°€ λͺ¨λ‘ κ°€λŠ₯ν•˜κ³  Key-Valueλ₯Ό μ‚¬μš©ν•˜λŠ” In-Memory 데이터 μ €μž₯μ†Œμ΄κΈ° λ•Œλ¬Έμ— 단기 λ©”μ‹œμ§€λ₯Ό μ²˜λ¦¬ν•˜κΈ°μ—λŠ” 맀우 λΉ λ₯Ό 것이라고 νŒλ‹¨ν•˜μ˜€κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

  • Oauth2

    λ‘œκ·ΈμΈμ„ κ΅¬ν˜„ν• λ•Œ μΌλ°˜λ‘œκ·ΈμΈμ€ μœ μ €λ“€μ˜ νŽΈμ˜μ„±μ„ λ–¨μ–΄λœ¨λ¦°λ‹€κ³  μƒκ°ν•˜μ—¬ μ†Œμ…œ 둜그인 μ²˜λ¦¬λ°©μ‹μœΌλ‘œ νŽΈμ˜μ„±μ„ ν–₯μƒν•˜κ³ μž ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ†Œμ…œ 둜그인 쀑, κ°€μž₯ 보편적인 카카였, ꡬ글 그리고 개발자 λ°μ΄νŒ…μ•±μ΄κΈ° λ•Œλ¬Έμ— κΉƒν—ˆλΈŒκΉŒμ§€ μ„ νƒν•˜κ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Untitled

πŸ‘‹ μ£Όμš”κΈ°μˆ 

μŠ€νƒκ³Ό μ§€μ—­ λ“± 이용자의 μ·¨ν–₯ 별 개발자 μΆ”μ²œ

λ§˜μ— λ“œλŠ” κ°œλ°œμžμ—κ²Œ μ’‹μ•„μš”

μƒν˜Έ μ’‹μ•„μš” 일 경우 μ±„νŒ… λ°© 생성

μ‹€μ‹œκ°„ μ±„νŒ…μœΌλ‘œ μƒλŒ€μ™€μ˜ λŒ€ν™”

Untitled

πŸ’―νŠΈλŸ¬λΈ”μŠˆνŒ…

  • profile νŽ˜μ΄μ§€ 폼데이터 λ³€ν™˜ κ³Όμ • μ—λŸ¬

    • ν”„λ‘œν•„ μ„€μ • λΆ€λΆ„ 폼데이터 과정쀑 imgκ°€ [object] ν˜•μ‹μœΌλ‘œ κ°€λŠ” μ—λŸ¬
    • ν•΄κ²° headers에 Content-Typeλ₯Ό multipart/form-data둜 μ„€μ • ν›„ μ—λŸ¬λ₯Ό ν•΄κ²° ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • μΆ”μ²œ νŽ˜μ΄μ§€ Internal server error 500μ—λŸ¬

    • QueryCache λŠ” queryKey 만 κ°™λ‹€λ©΄ error response도 μΊμ‹±ν•˜κ³  κ·Έ 이유둜 같은 key둜 queryλ₯Ό μ‹€ν–‰ν•˜λ©΄ μΊμ‹±λ˜μ–΄ 있던 error responseλ₯Ό μ‚¬μš©ν•œλ‹€. 별닀λ₯Έ 섀정을 ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ μΊμ‹œλœ 값을 μ‚¬μš©ν•˜λŠ” λ™μ‹œμ— API requestλ₯Ό 보내기 λ•Œλ¬Έμ— μ•„λž˜ μ½”λ“œλ₯Ό queryClient.clear() μ‚¬μš©ν•΄ μΊμ‹œ μ‚­μ œ ν›„ ν•΄κ²° μ™„λ£Œ
  • μœ μ €ν…Œμ΄λΈ” κ΅¬ν˜„ μ‹œ 문제점

    μ†Œμ…œ 둜그인 μ‹œ λ°›μ•„μ˜€λŠ” 정보와 ν”„λ‘œν•„ 등둝할 λ•Œ λ°›μ•„μ˜€λŠ” 정보λ₯Ό User table ν•˜λ‚˜μ— λ„£λŠ” 방법이 μ•„λ‹ˆλΌ μ–‘λ°©ν–₯ onetoone μ—°κ΄€ 관계λ₯Ό λ§Ίμ–΄μ„œ μ„œλ‘œ λ‹€λ₯Έ ν…Œμ΄λΈ”μ— λ‚˜λˆ μ„œ λ„£μœΌλ €κ³  μ‹œλ„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ–‘λ°©ν–₯ onetoone μ—°κ΄€ 관계λ₯Ό 맺으면 N+1 λ¬Έμ œκ°€ λ°œμƒν•  것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”λ‘œ λ§Œλ“€μ–΄ μ†Œμ…œ 둜그인 μ‹œ 정보듀을 λ°›μ•„μ˜¨ ν›„ ν”„λ‘œν•„ 등둝 μ‹œ λ°›λŠ” 정보듀을 putmappping을 톡해 λ°›μ•„μ˜€λŠ” 방법을 μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€.

  • TimeStamped λ‘œμ»¬μ‹œκ°„ μ„€μ • μ—λŸ¬

    timestamped ν΄λž˜μŠ€μ—μ„œ LocalDateTime을 톡해 λ°›μ•„μ™€μ„œ mySQL db에 μ‹œκ°„λŒ€λ₯Ό μ €μž₯ν•  λ•Œ 9μ‹œκ°„ 차이가 λ‚˜λŠ” 문제점이 μƒκ²¨μ„œ μ‹€μ‹œκ°„ μ±„νŒ… λ©”μ‹œμ§€κ°€ 보내진 μ‹œκ°„ μ—­μ‹œ 잘λͺ» λ˜μ–΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ubuntu μ„œλ²„ 상에 μžˆλŠ” localtime을 ν™•μΈν•΄λ³΄λ‹ˆ λ―Έκ΅­ κΈ°μ€€μ΄μ–΄μ„œ "sudo timedatectl set-timezone Asia/Seoul"λ₯Ό 톡해 ν•œκ΅­ κΈ°μ€€μœΌλ‘œ λ°”κΎΈμ–΄ ν•΄κ²°ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Untitled

πŸ‘©πŸ»β€πŸ’»μ œμž‘μžλ“€πŸ§‘πŸ»β€πŸ’»

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages