Table of Contents
pong 42λ Typescript κΈ°λ°μ React, Nestλ₯Ό μ¬μ©ν΄μ λ§λ μ±ν / νν μ¬μ΄νΈμ΄λ€.
νμ΄μ§ ꡬμ±μΌλ‘λ νμκ°μ , λ©μΈ λ‘λΉ, μ±ν λ°©(μΌλ°, DM), κ²μλ°©μ΄λ©° μ μ μ νμ¬ μν, μ±ν , κ²μλ± νΉμ μμλ₯Ό μ€μκ°μΌλ‘ λ°μνλ€.

- μ΅μ΄ νμκ°μ μ 42APIλ₯Ό ν΅ν΄ 42cadetμΈμ§ νμΈ
- νλ‘ν μμ±μμ λλ€μλ§ νμ μ λ ₯μΌλ‘ λ°μ. λ°λ‘ νλ‘ν λ±λ‘μ νμ§ μμΌλ©΄ κΈ°λ³Έ νλ‘νμ΄ λ±λ‘
- νμ λ±λ‘μ΄ μλ£μ κΈ°μ‘΄ μ 체 μ μ λͺ©λ‘μ 보λ λͺ¨λ μ μ λ€μ λͺ©λ‘μ΄ μλ‘μ΄ μ μ κ° μΆκ°λ¨.

- 42 intraμ λ±λ‘λ μ΄λ©μΌμ΄ μλμ΄λ 2μ°¨ μΈμ¦ μ 보λ₯Ό λ°μ μ΄λ©μΌμ΄λ©΄ 무κ΄
- λ§€λ² λ‘κ·ΈμΈν λλ§λ€ μΈμ¦μ½λλ₯Ό κΈ°μ ν΄μΌνλ©° λ‘λΉμ μλ
λ΄ νλ‘ν
μ 2μ°¨ μΈμ¦ λΉνμ±νλ₯Ό λλ¬μ ν΄μ ν μ μμ
- κΈ°λ³Έ λ‘λΉλ κ²μλ°© λͺ©λ‘μ΄ λ³΄μ΄λ κ²μ λ‘λΉλ‘
42 PONG
λ‘κ³ λ₯Ό μ λ ₯νλ©΄ κΈ°λ³Έ λ‘λΉλ‘ μ΄λνλ€- κ²μ / μ±ν λ‘λΉ λλ€ λμμΈ κ³¨κ²©μ λμΌ(λ°© λͺ©λ‘, μ μ λͺ©λ‘, λ΄ νλ‘ν)νλ κ²μμ
λλ κ²μ μ μ₯
, μ±ν μμ°Έμ¬μ€μΈ μ±ν λ°©
λΌλ κ³ μ κΈ°λ₯μ΄ μ‘΄μ¬

- κ²μ νμ΄μ§λΉΌκ³ λ λͺ¨λ νμ΄μ§μμ λ‘κ·ΈμΈν μ μ μ νλ‘ν λ³κ²½μ΄ κ°λ₯
λ΄ νλ‘ν μμ
μ°½μμ νμΈ λ²νΌμ λλ₯΄μ§ μλ μ΄μ λλ€μ, νλ‘ν μ¬μ§μ΄ κ°±μ λμ§ μλλ€.- λν, λ μ€ νλλΌλ λ³κ²½ μ¬νμ΄ μμΌλ©΄ νλ‘ν κ°±μ μ΄ λλ€.

- μΉκ΅¬ κ΄κ³λ νλ‘μ(Following) κ΄κ³λ‘ νμͺ½μμ μΉκ΅¬ μΆκ°μ ν΄λΉ μ μ μ μΉκ΅¬λͺ©λ‘μλ§ ν΄λΉ μ μ κ° νμΈλλ€.
- μ μ κ° λ‘κ·ΈμΈ, λ‘κ·Έμμ, κ²μμ€μ μνλ₯Ό μ μ λͺ©λ‘μμ μ€μκ°μΌλ‘ νμΈ κ°λ₯

- κ²μ μ΄λλ μ΄λ νμ΄μ§λ μ μ λͺ©λ‘μμ νΉμ μ μ μ νλ‘ν μ°½μ λ³Ό μ μλ€λ©΄ λμ μ μ²μ΄ κ°λ₯νλ€. (λ¨, λ‘κ·ΈμΈ μνμΈ μ μ μκ²λ§ κ°λ₯)
- μΉμΈκ³Ό λμμ κ²μ νλ©΄μΌλ‘ μ΄λνκ³ , μΉ΄μ΄νΈκ° μμλλ€.

- μ±ν λ°© μ μ₯, ν΄μ₯, κ°ν΄ λ± μ 체 μ μ κ° μμμΌν λ΄μ©μ λΈλ‘λμΊμ€ν λ°©μμΌλ‘ μ±ν μ°½ μμ κ³΅μ§ λ©μΈμ§λ‘ νκΈ°λλ€.
- μ±ν λ°©μ μ μ₯ν μ΄νμ μ±ν λ§ λ³Ό μ μλ€.
- μ±ν λ΄μμ DBμ μ μ₯λλ€.
- μ°¨λ¨ν μ μ μ κ²½μ° μ°¨λ¨ν μμ μ΄νμ μ±ν μ 보μ΄μ§ μλλ€. μ°¨λ¨μ ν΄μ νλ©΄ μ΄μ μ λͺ¨λ λ©μΈμ§λ₯Ό λ³Ό μ μλ€.

- μ±ν λ°© λ΄ κΆνμ λ°© μ£ΌμΈ, κ΄λ¦¬μ, μΌλ°μΌλ‘ λλλ©° κ° κΆνμ λ°λΌ μ μ νλ‘νμ λ³Ό λ 보μ¬μ§λ νλ‘ν ꡬμ±μ΄ λ€λ₯΄λ€.
- λ°© κ΄λ¦¬μλΌ ν΄λ λ°© μ£ΌμΈμ κ°ν΄, μμκ±°ν μλ μλ€.
- κ°ν΄, μμκ±°μ 10μ΄κ° ν΄λΉ μ μ λ μ¬μ μ₯, μ±ν μ λ ₯μ΄ κΈμ§λλ€.
- λ°© μ£ΌμΈμ΄ λ°©μ λκ° κ²½μ° ν΄λΉ μ±ν λ°©μ μμ λλ€.

- λ°© μ€μ μ μ€μ§ λ°© μ£ΌμΈλ§ λ³κ²½μ΄ κ°λ₯νλ€.
- λ°© λΉλ°λ²νΈλ₯Ό μ λ ₯νλ©΄ μλμΌλ‘ λΉκ³΅κ°λ°©μΌλ‘ λ³κ²½λλ€.
- 곡κ°λ°©μΌ λ μ μ₯ν μ μ λ λΉκ³΅κ°λ°©μΌλ‘ λ³κ²½λμ΄λ
λ°© λκ°κΈ°
λ₯Ό νμ§ μλ μ΄μ μ μ₯ν λ λΉλ°λ²νΈλ₯Ό μ λ ₯ν νμκ° μλ€.

- μ±ν λ°© μμμλ§μ΄ μλλΌ μ μ νλ‘νμ λ³Ό μ μλ μ΄λμλ νΉμ μ μ μκ² DMμ λ³΄λΌ μ μλ€.
- μ°Έμ¬μ€μΈ μ±ν λ°© λͺ©λ‘μμ νμ±ν λ DMλ°©μ νμΈν μ μλ€.

[ μ κ²μ λ§λ€κΈ° λ° κ²μ μ€μ ]
- λ°© λ§λ€κΈ°λ₯Ό ν΅ν΄ κ²μλ°©μ λ§λ€κ³ μλλ°©μ μ μ₯μ κΈ°λ€λ¦΄ μ μλ€.
- λΉλ°λ²νΈλ₯Ό μ€μ ν΄ λͺ¨λ₯΄λ μ¬λμ μ μ₯μ μ νν μ μλ€.
- κΈ°λ³Έ κ²μ λͺ¨λλ μΌλ° λͺ¨λ, μ€νΌλ λͺ¨λμ μ₯μ λ¬Ό λͺ¨λλ₯Ό μ€μ ν μ μλ€.
- ( λ λμ λμΌ λ§€μΉμμλ μΌλ°λͺ¨λλ‘λ§ νλ μ΄ν μ μλ€ )
[ κ²μ νλ μ΄ ]
- λμ μλκ° μ μ₯νλ©΄, μ¦μ 5μ΄ μΉ΄μ΄νΈλ€μ΄ ν κ²μμ μμνλ€.
- ν€λ³΄λμ μ’μ° λ°©ν₯ν€λ₯Ό μ΄μ©ν΄ ν¨λ€ μμΉλ₯Ό μ‘°μ ν μ μλ€.
- 10μ μ λ¨Όμ λμ νλ μͺ½μ΄ μΉλ¦¬νλ κ·μΉ, μ€κ°μ μ μμ΄ λμ΄μ§λ μͺ½μ λͺ°μν¨ μ²λ¦¬νλ€.
[ κ΄μ κΈ°λ₯ ]
- λͺ¨λ κ²μμ κ΄μ μ΄ κ°λ₯νλ€. κ΄μ νλ λ°©λ²μ,
- κ²μλ°© λͺ©λ‘μμ μμ μΉ΄μ΄νΈ μ€ νΉμ, κ²μ μμν λ°©μ μ μ₯ νκ±°λ,
- κ²μ μ€μΈ μλμ νλ‘νμμ κ΄μ νκΈ° λ²νΌμ μ΄μ©.
- κ΄μ μλ λ¨μ κ΄μ μΈμ μ΄λ€ μ‘°μλ λΆκ°λ₯.

- κ²μ μμ± μ, κ²μ λͺ¨λλ₯Ό λ³κ²½νλ©΄, μμ μ ν΄λΉ λͺ¨λλ‘ κ²μμ΄ μ€νλ¨.
- μ€νΌλ λͺ¨λ: 곡μ μ΄λ μλκ° 2λ°° λΉ λ¦
- μ₯μ λ¬Ό λͺ¨λ: κ³΅μ΄ ν겨λλ μ₯μ λ¬Όμ΄ λ§΅μ λ°°μΉλ¨

[ λλ μ€λͺ ]
- μΌλ°κ²μκ³Ό ꡬλΆνμ¬, μμκ²½μμ μν λλκ²μμ΄ λ°λ‘ μ‘΄μ¬ν¨.
- λλκ²μμ νλ μ΄μ΄κ° μ§μ λμ μλλ₯Ό μ ν μ μκ³ , μλ²μ λ§€μΉ μμ€ν μ λ°λΌμλ§ μλκ° μ ν΄μ§.
- λ λκ²μ κ²°κ³Όλ μΌλ°κ²μκ³Ό ꡬλΆν΄μ μ μ₯ λ¨.
- νλ μ΄μ΄ λ 벨μ λ λ μ μ μΌλ‘λ§ κ³μ°λλ€.
[ λλ λ§€μΉ κ·μΉ ]
- λλ 맀μΉμ λ 벨μ λ°λΌ λ 벨 μ°¨μ΄κ° μ μ νλ μ΄μ΄λ₯Ό μ°μ μΌλ‘ 맀μΉνλλ‘ ν¨.
- λ§€μΉ λ°©μμ,
- μ΅μ΄μλ λ 벨 μ°¨μ΄κ° 5 μ΄λ΄μΈ νλ μ΄μ΄λ₯Ό νμ,
- 쑰건μ λ§λ νλ μ΄μ΄κ° μλ€λ©΄, 맀 μ΄ νμ λ²μλ₯Ό 2λ°°μ© λμ¬κ°.
- 7μ΄λμ 쑰건μ λ§λ νλ μ΄μ΄λ₯Ό μ°Ύμ§ λͺ»νλ©΄, λ§€μΉ κ°λ₯ν κ°μ₯ μ€λ λκΈ°ν νλ μ΄μ΄μ 맀μΉ
- ( μ: 5, 10, 20, 40, 80, 160, INT_MAX)
- λ°λΌμ, μμμ²λΌ λ¨Όμ λλ맀μΉμ μμ²ν κ³ λ 벨 μ μ κ° λ§€μΉλμ§ μκ³ , λμ€μ λλ맀μΉμ μμ²ν μ λ 벨 μ μ μ 맀μΉμ΄ μ±μ¬λ¨.
-
λ³Έ νλ‘μ νΈλ 42 intraλ₯Ό μ΄μ©ν μ μλ 42cadetμ΄μ΄μΌ μ μ μ΄μ©μ΄ κ°λ₯νλ€.
-
42APIλ‘ λ°κΈλ°μ UID, secret key, redirection URLμ μ¬μ©ν΄ κ° μ»¨ν μ΄λλ³ .envμ ν΄λΉ κ°λ€μ μμ±ν΄μ€μΌ νλ€.
-
docker, docker-composeκ° μ€μΉλ νκ²½μ΄μ΄μΌ νλ€.
- clone this project at github
git clone https://github.com/42-Tomodachi/ft_transcendence
- run docker-compose at project root path
cd ft_transcendence && docker-compose up --build
μ΅μ΄ λͺ©νλ‘ μ‘μ κΈ°κ°(about 45days)μμ μμ±νκΈ° μν΄ λμΉκ±°λ κ°κ³Όν μ€κ³, κΈ°λ₯λ€
1. μ΅μ νλ₯Ό κ³ λ €νμ§μκ³ κ΅¬ννκΈ°μ λΆνμν 리λ λλ§μ΄ λ§μ΄ λ°μνλ€.
2. Next.jsκ° μλ CRAλ₯Ό μ¬μ©
3. μ¬μ¬μ© κ°λ₯ν λΆλΆμ΄ λ§μ§λ§ κ³ μ μ»΄ν¬λνΈλ‘ μ μ(νΉν λͺ¨λ¬)
4. λ°°ν¬μ©μΌλ‘ λ컀 νμΌμ΄ μμ±λμ΄ μμ§ μμ
5. λ°°ν¬λ₯Ό ν μ λ°±μλμ μ’
μλμ΄ μμ
6. μ μ μκ² μλ €μ€ λͺ©μ μΌλ‘ antd notificationμ μ μ©νλ € νμΌλ κΈ°μ‘΄ λμμΈ λ³λμ΄ λ°μν΄ μ μ© μ€ν¨
7. μΌλΆ props νμ
μ μμ interface λ―Έμ μ©
8. 2μ°¨ νμ±ν ν 리λ λλ§ λ λλ§λ€ 2μ°¨ μΈμ¦ λ‘κ·ΈμΈ νμ΄μ§λ‘ λμκ°
8-1. μΈμ¦λ²νΈλ₯Ό μ λλ‘ κΈ°μ
ν΄λ μ€μλμ΄ λ°μν λκ° μμ
9. μ μ 리μ€νΈ μ λ ¬μ νλ²μ μ²λ¦¬ κ°λ₯(feedback)
9-1. νΉμ μ μ (ν΄λ¦ν) μ 보λ₯Ό μ μμΌλ‘ κ΄λ¦¬
10. λͺ¨λ νμ΄μ§μμ μμΌμ μΈ κ²μ΄λ©΄ custom hookμ΄λ μ μμμ νλμ μμΌλ§ κ΄λ¦¬νλκ±Έ κΆμ₯(feedback)
11. κΈ°μ‘΄ APIκΈ°λ₯ μ€ μμΌμΌλ‘ λ체λ κ²λ€μ μμ νμ§ μμ
12. jsdocμ¬μ©ν΄ κ° μ»΄ν¬λνΈ, APIλ±μ λͺ
μΈν κ²½μ° μ μ§λ³΄μμ μ©μ΄
1. μ±ν
λ‘κ·Έλ₯Ό μμΌμΌλ‘ νκΊΌλ²μ λ°μμ μ 체 리λ λλ§ ν΄μ£Όκ³ μλ€. (μ΅μ ν νμ)
2. if else λΆλΆμ΄ λ―Έν‘
3. κ°ν΄λΉνμ λ μ μ μκ² λ°λ‘ 보μ¬μ£Όλ notificationμ΄ μμ
1. μλ²μ ν΅μ λΆνλ₯Ό ν¨μ¬ μ€μ¬μ€ μ¬μ§κ° μμΌλ, μ μ©νμ§ μμ.
2. λκΉ
λ° μμν λ²κ·Έμμκ° μλλ°, λ§μ‘±μ€λ¬μ΄ μμ€κΉμ§ κ°μ νμ§ λͺ»ν¨.
3. μ»΄ν¬λνΈ λ΄λΆ μ½λ κΈΈμ΄κ° λ§μ΄ κΈ΄ μν©
4. μ μ¬ν λ³μκ°μ μλ―Έκ° μΌμΉνμ§ μμ(ex. player1,2 - leftPlayer, rightPlayer)
5. κ²μ λ‘μ§μ νΉμ μμμ μλ―Ένμ
μ΄ μ΄λ €μ(λμμ½λ)
1. μ€κ³λΉμ μν€ν
μ³ μ€κ³μ λν΄ κΉμ΄μκ² μμ§ λͺ»νμ¬ NestJsμμ μ 곡νλ μν€ν
μ³λ₯Ό μ΄μ©ν¨
2. κ°λ° κΈ°κ°μ κ³ λ €νμ¬ ν
μ€νΈμ½λλ MVP μ μ μ΄ν, 리ν©ν λ§ μ μ μμ±νλ κ²μΌλ‘ κ²°μ
3. μ΅μ ν λΌμ΄λΈλ¬λ¦¬λ₯Ό κ³ λ €νκ³ μ μ©ν기보λ€λ, λΉμ₯ μ½κ² ꡬνν μ μλ μ΅μλ¨μμ λΌμ΄λΈλ¬λ¦¬ λ° κΈ°λ₯λ§ μ΄μ©ν¨.
4. DBμ€κ³ μμ μ΅μ ν ꡬ쑰보λ€λ, νμν μμλ₯Ό ν¬ν¨μν€λ κ²μλ§ μ§μ€.
5. μμΌμ μ΄μ©ν μ€μκ° ν΅μ μ μλΉμ€ λλΆλΆμ μ μ©ν λ‘ νλ ν©μκ°, κ°λ°μ΄ μ΄λμ λ μ§νλ μμ μ μΆκ°λλ©΄μ, ꡬ쑰μ μΌλ‘ κΉλνμ§ λͺ»ν μμκ° λ€μ λ°μ.
6. μ΄κΈ°μ λΉ λ₯Έ κ°λ°μ μν΄, μ¬μ¬μ©μ±μ΄λ μμ‘΄μ± λ±μ λν κ³ λ € μμ΄ μ§μ¬μ§ μ½λκ° λ§μ, μ€λ³΅ κΈ°λ₯ νΉμ μν μ°Έμ‘° μμκ° λ€μ μ‘΄μ¬ν¨.
1. Aμ μ κ° Bμ μ λ₯Ό μ°¨λ¨ ν μ°¨λ¨ ν΄μ ν κ²½μ° μ°¨λ¨νλ μκ° λμμ Bμ μ μ λ©μΈμ§κ° Aμκ² λ³΄μ. κΈ°ν λ° μ€κ³ λΉμ μκ°νμ§ λͺ»νμ. κΈ°νμ λ°λΌ μμ νμ.
2. μμΌ μ°κ²°μ νμ΄μ§ μ§μ
, μ΄ν κΈ°μ€μΌλ‘ μ°κ²°, ν΄μ νκ³ μμ΄ μ¬μ©μκ° νμ΄μ§λ₯Ό μ΄λν κ²½μ° μ μμ€μΈ μ μ λ₯Ό νμνλ λΆλΆμ΄ κΉλΉ‘μ΄λ νμ λ°μ. λ°±μλμμ λ‘κ·Έμμ μμλ§ μ μ μ μνκ° λ³κ²½λλλ‘ μμ νμ.
3. μ±ν
λ΄μ©μ΄λ, μ€μκ°μΌλ‘ μ μ μν λ³κ²½μ νμν μ μ μκ² μ‘μ νλ λ±μ, λ¨κΈ°κ°μ λ§μ μ€λ³΅λ DBμ κ·Όμ΄ λ°μνλ λΆλΆλ€μ΄ μλλ°, redis λ±μ μ΄μ©ν DBμΊμ±μΌλ‘ ν¨μ¬ κΉλνκ² μ΅μ ν κ°λ₯νλ€.
4. μνμ°Έμ‘°λ₯Ό ν΄κ²°νκΈ° μν΄ ForwardRefν¨μλ₯Ό λ¨μ©νλ©΄μ, μ½λμ ν΄λΉ λͺ¨λμ λ€λ₯Έ λͺ¨λμμ μ¬μ¬μ©νκΈ°κ° λͺΉμ μ΄λ €μμ‘λ€.
1. μ΅μ΄ μ€κ³μ λ€λ₯΄κ² μΆκ°λ λΆλΆλ€μ΄ λ§μ, μ΄λ―Έ μμ±λ κΈ°μ‘΄ λͺ¨λμ μ λλ‘ νμ©νμ§ λͺ»νκ³ , λ§λΆμ¬μ§ μμκ° λ€μ μλ€.
2. κ²μ μ λ°μ νλ‘μ°κ° ννν μ€κ³ 보λ€λ, κ·Έλ κ·Έλ λ°μνλ νμμ μμ‘΄νλ©΄μ κΈμ‘°λ μμκ° λ§κ³ , μΆν κΈ°λ₯μΆκ° λ° λ³κ²½ μ λ§μ μμ μ΄ νμν μ μμ.
dhyeon | junselee | mosong | sgang |
---|---|---|---|
jihokim | kankim | seungyel | |
---|---|---|---|
![]() |
![]() |
ν΄λΉ νλ‘μ νΈλ MIT λΌμ΄μΌμ€λ₯Ό κΈ°λ°μΌλ‘ λκ³ μμ΅λλ€.