π YouTube λ°ν μμ
GitHub: https://github.com/codestates/sagaksagak-client
Wiki: https://github.com/codestates/sagaksagak-client/wiki
λ°νμλ£: https://drive.google.com/file/d/1bcdIMkNRRMhKfTnFa8Q-156mqki6uf8V/view
μΈμ€GitHub: https://github.com/ksyksy815
μ΄λ² ν¬μ€νΈμμ μ΄μ λ§ λ§λ¬΄λ¦¬μ§κ² λ μ€μκ° λ©ν°μ μ νμμ±ν
κΈ°λ₯μ ꡬνν νμ΄λ νλ‘μ νΈμ λν΄μ μκ°νκ³ μ νλ€.
π κ°μ
μ¬λλ€λ§λ€ κ³΅λΆ μ€νμΌμ λͺ¨λ λ€λ₯΄λ€. μ΄λ€ μ¬λλ€μ μμ£Ό μ‘°μ©ν κ³³μμ νΌμ μμ λ μμ² μ§μ€μ μνκ³ , μ΄λ€ μ¬λλ€μ μΉ΄νλ λμκ΄κ°μ 곡곡μ₯μμμ μ λΉν μμκ³Ό ν¨κ» ν λ μ§μ€μ λ μνλ€.
λ κ°μ κ²½μ°μ μμμ λ―Όκ°ν νΈμ΄λΌμ 곡곡μ₯μμμ 곡λΆλ₯Ό ν λ μΈμ λ μ΄μ΄νλ¬κ·Έ λλ μμ΄ν(λ
Έμ΄μ¦ μΊμ¬λ§)μ λΌκ³ νλ€. λμμ, νκ²½μ΄ μ κΎΈλ©°μ§ κ±Έ κ΅μ₯ν μ’μνλλ°(βοΈμ€μβοΈ) κ·Έ μ€μμλ μμ νκ²½μ΄ λ³΄μ΄λ μ°½λ¬Έ μμ λμΈ μ±
μμμ 곡λΆνλ κ±Έ μ’μνλ€. λ΄ νν°λ μ€νΈ 보λλ€ μ€μ 곡λΆλ₯Ό νκ³ μΆμ μκ΅¬κ° λΏμ΄μ§λΌκ³ κ·Έλ¬ν κ³΅λΆ μ리 μ¬μ§λ§ λͺ¨μλμ 보λκ° μμ μ λμ΄λ€.
νΉμ κ°μ μ·¨ν₯μ λΆλ€μ΄ κΆκΈνμ€κΉλ΄... π
https://www.pinterest.co.kr/FEDevSeo/on-studying/
μ무νΌ, κ·Έ μ λλ‘ λκ΅°κ°μκ² κ³΅λΆ νκ²½μ΄ κ³΅λΆ ν¨μ¨μ μμ²λ μν₯μ λΌμΉλ€. κ·Έλ°λ°, μκΈμ μ½λ‘λ μ¬ν λλ¬Έμ μμ μκ² μ λ§λ κ³΅λΆ νκ²½μ μ΄μ© μ μμ΄ ν¬κΈ°ν΄μΌνλ μ¬λλ€μ΄ λ§μ΄ λμ΄λκ² λμλ€.
μ΄λ² νλ‘μ νΈ 'μ¬κ°μ¬κ°'μ μ΄λ¬ν λΆλ€μ μκ°νλ©° κ³ μνκ² λ μλΉμ€μ΄λ€. ν¬μ€νΈ μ½λ‘λ μΈννΈ(Untact) μλ, μ΄μ© μ μμ΄ νΌμ 곡λΆλ₯Ό νκ² λμμ§λ§ μ¬μ€ μ£Όλ³μ 곡λΆνλ λ€λ₯Έ μ¬λλ€μ΄ μμ λ λ λ₯λ₯ μ΄ μ€λ₯΄λ μ¬λλ€μ μν΄ λ§λ 'μ¨λΌμΈ μ€ν°λ μΉ΄ν' μλΉμ€ λ§μ΄λ€.
μ νλΈμ 'study with me'λ‘ κ²μν΄λ³΄λ©΄ μ°λ¦¬λλΌ, ν΄μΈ ν κ² μμ΄ λ§μ μμλ€μ΄ μ¬λΌμμλ κ²μ λ³Ό μ μκ³ , μ΄λ₯Ό ν΅ν΄ κ·Έ λ§νΌ μ¨λΌμΈ μμμ λκ΅°κ°μ μ‘΄μ¬λ₯Ό λλΌλ©° 곡λΆνλ νμμ λν μμκ° μ μ§ μλ€λ κ²μ μ§μν μ μλ€. (μ΄ νμλ μ무λλ ZμΈλλ₯Ό μ€μ¬μΌλ‘ μμ£Ό μ΅κ·Όμ noticeλ λ¬Έν νλμ΄κΈ° λλ¬Έμ λ±ν μ ν΄μ§ λͺ
μΉμ΄ μλ€. κ·Έλμ λλ κ·Έλ₯ 'study with me'λΌκ³ μΉνλ€. μ΄κ±Έ λ€λ£¬ μμ£Ό μμμ νκ΅ κΈ°μ¬λ€μμλ κ·Έλ κ² λΆλ₯΄λ κ² κ°λ€.) μ μΈκ³κ° μ½λ‘λ μ¬νλ₯Ό κ²ͺμΌλ©° λͺ¨λ νκ΅ μμ
λ€μ΄ μ격μΌλ‘ λ°λμκΈ° λλ¬Έμ, μ격 νμμ±ν
μ μΌλκ³ κ³΅λΆνλ€λ κ²μ λν΄ μμ μ μλ κ±°λΆκ°μ΄ κ·Έ μ΄μ λ³΄λ€ ν¬λ―Έν΄μ§ κ²λ μ¬μ€μ΄κ³ λ§μ΄λ€.
μ¬κ°μ¬κ°μ μ΄λ¬ν Study With Me μμλ€κ³Ό λ§μ°¬κ°μ§λ‘, λͺ©νλ₯Ό μν΄ κ³΅λΆλ₯Ό νλ μ¬μ μ΄ μΈλ‘μ§ μκ² λ§λ€μ΄μ£Όλ λ°μ κ·Έ λͺ©μ μ λκ³ μλ€. μ¬κ°μ¬κ°μ λ΄ λ°©μμλ λ§μΉ μΉ΄νμ²λΌ, λ§μΉ λμκ΄μ²λΌ μ λΉν κΈ΄μ₯κ°μ μ μ§νλ©° 곡λΆν μ μλλ‘ λμμ£Όλ νλ«νΌμ μ§ν₯νλ€.
β κΈ°μ μ€ν
μ΄λ² νλ‘μ νΈμμ μ¬μ©ν μ¬λ¬ κΈ°μ λ€ μ€ UI λλλ§μ μν΄ μ¬μ©ν React, μν κ΄λ¦¬λ₯Ό μν΄ μ¬μ©ν Redux, κ·Έλ¦¬κ³ μ’ λ νΈλ¦¬νκ² CSSλ₯Ό μ μ©ν μ μλ Styled-Componentsλ₯Ό μ νκ³ κ°μ₯ μ€μνλ κ²μ μ무λλ ν΅μ¬ ν₯ κΈ°λ₯μΈ νμ μ±ν
μ ꡬννκΈ° μν΄ λμ
ν Socket.IOμ Peer.jsκ° μλκ° μΆλ€.
Socket.IOμ Peer.jsλ κ°κ° WebSocketκ³Ό WebRTC APIλ₯Ό μ½κ² μ¬μ©νκ² ν΄μ£Όλ λΌμ΄λΈλ¬λ¦¬λ€μ΄λ€. μ΄ λμ μ¬μ©νλλ° μμ΄μ κ°μ₯ μ€μνλ κ²μ μλ²μ ν΄λΌκ°(socket), κ·Έλ¦¬κ³ ν΄λΌμ ν΄λΌκ°(peer)μ ν°ν€νμΉ΄λ₯Ό μ λ§μΆμ΄μΌ νλ€λ μ μ΄μλλ°, μ΄μ κ΄ν μμΈν μ€λͺ
μ μλ κΈ°μ λ°νλ‘ λμ νλ€(!!).
π Socket.ioμ Peer.jsλ₯Ό νμ©ν ν°ν€νμΉ΄ νμμ±ν
* Socket.IOλ?
* WebSocket vs. HTTP
* Peer.jsλ?
* 'μ΄λ²€νΈ κΈ°λ°'
* ν°ν€νμΉ΄
* μ£Όμ: 7λΆμ νμμ΄ν(?!)μ΄ μμ΄μ λ§μ΄ μμ² λΉ λ¦
λλ€
λν, μ΄λ² νλ‘μ νΈμμ μ£Όλͺ©ν λ§ν λ λ€λ₯Έ κΈ°μ μ μ§λ³΄(?!)λ λ°λ‘ λ°°ν¬ μλνμλ€. μ°λ¦¬ ν DevPullμ λ°±μλ λ° DevOpsλ₯Ό 맑μμ£Όμ Mr. Hwang (λλ¦ νλΌμ΄λ²μλ₯Ό μν΄ μ΅λͺ
(?)μΌλ‘ μ²λ¦¬λ₯Ό...)μ΄ νλ‘μ νΈ μ΄λ°λΆν° AWS λ°°ν¬ μλνκ° κ°λ₯νλλ‘ μμ
νκ²½ μ€μ μ λͺ¨λ μ§νν΄μ£ΌμκΈ° λλ¬Έμ΄λ€. AWSμμμ λ°°ν¬ μλνκ° κΆκΈνμ λΆλ€μ μλ Mr. Hwangμ λΈλ‘κ·Έλ₯Ό μ°Έκ³ ν΄μ£Όμλ©΄ λλ€.
π‘ Mr. Hwangμ AWS CI/CDμ κ΄ν κΈ
λ§ν¬: https://velog.io/@catalyst88/Final-Project-CICD-with-AWS
βοΈ First Project ν DevPull μκ°
π¨π¨π§π¦ μλΉμ€
β λλ©νμ΄μ§
μ΄λ² μλΉμ€λ μ¨λΌμΈμμμ μ¬λλ€μ΄ λ§λλ€λ 컨μ
μ΄ μ μ©λμ΄ μκΈ° λλ¬Έμ 무μΈκ° βοΈ κ΅¬λ¦ μμ λ₯μ€λ₯μ€ λ λ€λλ λ―ν λλ βοΈμ΄ μ μ΄μΈλ¦΄ κ² κ°μλ€. 물리μ μΌλ‘ μ§μ λ§λλ 건 μ μ§ λ λ€λ¦¬κ° λ
μ μ²!νκ³ λμ¬μμ κ² κ°μ§λ§ "μ¨λΌμΈ μμμμ ν¨κ»ν¨"μ κ·Έμλ λ€λ₯΄κ² 곡μ€μ λ₯λ₯ λ μλ κ² κ°μ λλμ μ€λ€κ³ μκ°νκΈ° λλ¬Έμ΄λ€.
κ·Έλμ λ§μ°μ€ μ€ν¬λ‘€λ§κ³Ό ν¨κ» μ±
μ΄λ λ§μ°μ€, κ³μ°κΈ°μ κ°μ μ¬λ¬ λ°°κ²½ μμ΄ν
λ€κ³Ό λ©μΈ μ΄λ―Έμ§λ€, κ·Έλ¦¬κ³ μ€λͺ
문ꡬλ€μ΄ κ°μ λ°λ‘ μμ§μ΄λ Parallax μ€νμΌλ‘ λλ© νμ΄μ§λ₯Ό ꡬννλ€.
νμ΄μ§ νλ¨μ μ¬κ°μ¬κ° μλΉμ€λ₯Ό μ¬μ©ν μ μ λ€μ νκΈ°λ₯Ό carousel ννλ‘ κ΅¬ννλ€. νΈλ² μ΄ννΈ λν μ¬λΏ μΆκ°νμ¬ λΈλΌμ°μ§νλ μ μ κ° μ§λ£¨νμ§ μλλ‘ κ³ λ €νλ€.
κ·Έ μλ Footerλ μ°λ¦¬ ν κ°λ°μλ€μκ² μ»¨νν μ μλ μλ¦¬λ‘ μ¬μ©νμλ€. κ°μμ μ΄λ©μΌμ νΈλ²λ₯Ό νλ©΄ "Click to copy!" λ¬Έκ΅¬κ° λ¨κ³ , μ΄λ©μΌμ ν΄λ¦νλ©΄ ν΄λ¦½λ³΄λμ μ΄λ©μΌμ΄ 볡μ¬λλλ‘ μ€μ ν΄λμλ€. κ·Έ μλμ μλ GitHub μμ΄λλ ν΄λ¦ μ ν΄λΉ κ°λ°μμ GitHub νλ‘ν νμ΄μ§λ‘ μ΄λλλ€.
β Room List
μλ¨ λ©λ΄λ°μ "μ€ν°λλ£Έ"μ ν΄λ¦νλ©΄ κ° μ μλ νμμ±ν
λ°© λ£Έ 리μ€νΈ νμ΄μ§μ΄λ€. λ£Έ 리μ€νΈ νμ΄μ§μ λμμΈ λ° κΈ°λ₯ ꡬνμ μ°λ¦¬ νμ νμ₯μ΄μ λμ ν¨κ» νλ‘ νΈμλλ₯Ό 맑μμ€ Mr. Kimμ λ
Έκ³ κ° μ§μ½λμ΄ μλ€. μλ¨ Carouselμ μΆμ² λ°© λͺ©λ‘μ μλ λκΉμΌλ‘ 보μ¬μ£Όλ©°, νλ¨μ 리μ€νΈμμ νμ¬ μ€νλ νμ μ±ν
λ°© λͺ©λ‘μ λ³Ό μ μλ€.
λ°© λͺ©λ‘μ Infinite scrollingμΌλ‘ ꡬνλμ΄ νμ΄μ§μ λ§μ§λ§μ λλ¬ν λλ§λ€ μλ²μ μλ‘μ΄ μμ²μ 보λ΄κ³ κ·Έμ λ°λ₯Έ μλ΅μ λλλ§νλ κ²μ λ³Ό μ μλ€.
μ μ λ λͺ©λ‘μ μλ μ΄λ―Έ λ§λ€μ΄μ§ λ°©μ μ΄μ©ν μλ μκ³ , μλ‘μ΄ λ°©μ μμ±ν μλ μλ€. μλ‘μ΄ λ°©μ μ νν λ, λ°© μ λͺ©κ³Ό ν¨κ» 미리 μ ν΄μ§ 10κ°μ μΉ΄ν
κ³ λ¦¬ μ€ νλλ₯Ό μ νν΄μΌ νλ€.
λ§μ½ μ μν μ μ κ° λ‘κ·ΈμΈ μνλΌλ©΄, ν΄λΉ μ μ μ κ΄μ¬μ¬ μΉ΄ν
κ³ λ¦¬ λ° μ΄μ νμ μ±ν
λ°© κΈ°λ‘μ λ°νμΌλ‘ νμμ±ν
λ°©μ μΆμ²ν΄μ€λ€.π λ°© μΆμ² λ‘μ§μ λ°±μ€λμ λ λΆμ΄ κ°λ°μ ν΄μ£Όμ
¨λλ°, λ‘μ§μ λν΄ λ κΆκΈν μ μ΄ μμ κ²½μ° λ λΆκ» μ°λ½μ μ·¨νλ©΄ ννν λ΅ν΄μ£Όμ€ μμ μ΄λΌκ³ νλ€.
π David
π€© Mr. Hwang
β νμ μ±ν λ°©
νμμ±ν
λ°©μ λͺ¨μ΅μ΄λ€. μ΅λ 6λͺ
μ μ μ κ° λ€μ΄μ¬ μ μλ€. μ¬μ€ λ λ§μ μΈμμ λ°λ κ²μ΄ κΈ°μ μ μΌλ‘ λ¬Έμ κ° λμ§ μμμΌλ, 곡λΆλ₯Ό νλ¬ λͺ¨μ¬μλ λͺ¨μ΅μμ 6λͺ
μ΄ λμ΄κ°λ μΈμμ νλ©΄μ΄ λ³΄μΌ κ²½μ° λ무 μ°λ§ν λλμ μ£Όλ κ² κ°μμ μ νμ λκΈ°λ‘ νλ€.
λ§μ°μ€λ₯Ό λΈλΌμ°μ μλ¨μΌλ‘ κ°μ Έκ°λ©΄ νμ μ±ν
λ°© λ΄λΆ μ μ© λ€λΉκ²μ΄μ
λ°κ° λμ€κ² λλ©°, μ΄λ₯Ό ν΅ν΄ μ¬λ¬ κΈ°λ₯λ€μ μ¬μ©ν μ μλ€.
λͺ¨μ¬μ κ°μ 곡λΆλ₯Ό ν΄μΌ νκΈ° λλ¬Έμ μ€λμ€λ μλμΌλ‘ mute μνμ΄λ©°, zoom fatigueμ κ°μ νμμ μ΅μννκΈ° μν΄ μΉ΄λ©λΌ on/off κΈ°λ₯λ μΆκ°λμ΄ μλ€. λν, νμ μ±ν
λ°© λ΄μμ To-do 리μ€νΈλ₯Ό μ¬μ©ν μ μλλ‘ μ°λμ΄ λμ΄ μλ€.
νμ μ±ν
κΈ°λ₯μ λ‘κ·ΈμΈμ΄ μμ΄λ μ¬μ©ν μ μκΈ° λλ¬Έμ μ΄λ»κ² ꡬλλλμ§ κΆκΈνμ λΆλ€μ μ§μ λ€μ΄κ°μ λͺ©λ‘μ μλ μ무 λ°©μ΄λ μ
μ₯ν΄λ³΄μλ©΄ λλ€!
=> https://sagaksagak.site
β μ€ν°λλ‘κ·Έ
μ€ν°λλ‘κ·Έ νμ΄μ§μμ λ κ°μ§ κΈ°λ₯μ μ¬μ©ν μ μλ€. 첫λ²μ§Έλ λ°λ‘ To-Do 리μ€νΈμ΄λ€. 곡λΆν΄μΌν λ΄μ©λ€μ 미리 μ κ±°λ, λ€ μ’
λ£ν κ²λ€μ μλ£μ²λ¦¬ν μ μλ€. μλ²μ ν΅μ νλ©° CRUD κΈ°λ₯μ΄ λͺ¨λ ꡬνλμ΄ μλ€.
μ€ν°λλ‘κ·Έ νμ΄μ§μμ μμ±ν To-Doλ νμ μ±ν
λ°©μ μ
μ₯νμμ λ, νμμ±ν
λ°© μ μ© λ€λΉκ²μ΄μ
λ°μ λ©λ΄λ₯Ό ν΅ν΄ λμΌνκ² μ¬μ©ν μ μλ€.
To-Do 리μ€νΈλ λΉνμλ μ¬μ© κ°λ₯νμ§λ§, κ³΅λΆ κΈ°λ‘ νμ΄μ§ κ°μ κ²½μ°μ νμ κ°μ
μ ν΄μΌ μ¬μ©ν μ μλ€. κ³΅λΆ κΈ°λ‘ νμ΄μ§μμ νμμ±ν
λ°© μ°Έμ¬ μκ°μ μ μ μ μ΄ κ³΅λΆ μκ°μΌλ‘ μ 곡νλ©°, μ°Έμ¬νλ λ°©μ μΉ΄ν
κ³ λ¦¬λ³λ‘ λΆλ¦¬νμ¬ νμ΄ μ°¨νΈλ‘ λ°μ΄ν°λ₯Ό μκ°ννλ€. νμ΄ μ°¨νΈλ 리μνΈμ κ°μ’
μ°¨νΈ λλλ§μ λμμ£Όλ λΌμ΄λΈλ¬λ¦¬ Rechartsλ₯Ό μ¬μ©νλ€.
κ·Έ μλ μ°Έμ¬κΈ°λ‘μ μ΄μ κ» μ°Έμ¬νλ νμμ±ν
λ°©λ€μ λͺ©λ‘μ νμΈν μ μλ€.
β κΈ°ν κΈ°λ₯
μ΄ μΈμ, νμ κ°μ
κ³Ό κ΄λ ¨λ κΈ°λ³Έ κΈ°λ₯λ€λ λͺ¨λ μΆκ°λμ΄ μλ€. μ²μ κ°μ
μ ν λ μλΉμ€ μ체 κ°μ
λλ Google κ³μ μ°λμΌλ‘ κ°μ
μ΄ κ°λ₯νλ€. λλ€μμ΄λ κ΄μ¬ μΉ΄ν
κ³ λ¦¬ μ€μ λ° λ³κ²½ λν λ§μ΄νμ΄μ§μμ λͺ¨λ μ§νν μ μλ€.
πΈ νμ΄λ νλ‘μ νΈλ₯Ό λ§μΉλ©°...
μ΄λ² μ°λ¦¬ νμ νλ‘μ νΈμ μ²μκ³Ό λμ κ΄ν΅νλ 곡ν΅λ ν
λ§λ 'μκΈ°μ£Όλμ νμ΅'μ΄ μλκ° μΆλ€. Socket.IO λ° WebRTCλ₯Ό μ¬μ©ν νμ μ±ν
κΈ°λ₯μ κ΄ν μ¬νμ΄λ©°, λ°°ν¬ μλνλ©°, Infinite scrollingμ΄λ carouselκ³Ό κ°μ κ²°μ½ λ¨μνμ§ μμ UI ꡬνκ³Ό κ°μ κ²λ€μ λͺ κ°μκ°μ λΆνΈμΊ ν κ³Όμ μ λ¨ νλ²λ ν¬ν¨λ μ μ΄ μλ€. μ°λ¦¬ νμ μ°λ¦¬κ° λΆνΈμΊ ν κ³Όμ μ ν΅ν΄ 짧μ μκ° λ΄μ μ΅μ μ λ€ν΄ λ°°μ΄ κΈ°μ΄μ μΈ κ²λ€ - μλ°μ€ν¬λ¦½νΈ μΈμ΄ κ·Έ μ체μ μ¬μ©λ²μ΄λΌλκ°, Reactμ κΈ°μ΄μ μΈ μ¬μ©λ², μ΄λ μ λμ AWSμμμ λ°°ν¬ λ°©λ²λ±κ³Ό κ°μ λ΄μ©λ€ - μ κΈ°λ³ΈμΌλ‘ μκ°νλ©΄μ κ·Έ μ΄μμ κ²λ€μ μ€μ€λ‘ λ°°μ μμ©ν λ€ νλ‘μ νΈμ μ μ©νκΈ° μν΄ λ
Έλ ₯νκ³ , κ·Έ 곡λΆμ κ²°κ³Όλ‘ μ¬κ°μ¬κ°μ΄λΌλ νλ‘μ νΈλ₯Ό λ§λ€μ΄ λΌ μ μμλ€.
μ΄λ μ¦, μ§κΈ μ°λ¦¬μ μ€ν
μ μ€λ²νλ‘μ°λ 컀λ
μΉ κ°λ°μλΌκ³ ν μ μλ μ΅μνμ νμ쑰건μ κ°μ ν μ±μ λ€κ³ ν μ μμΌλ, μ€μ€λ‘ νμ΅νλ €λ μμ§μ μ€ν λ₯λ ₯μ΄ μκΈ° λλ¬Έμ μμΌλ‘ λ λ§μ κΈ°μ μ λ°°μ°κ³ , μμ©νκ³ , μ°½μ‘°ν΄λκ° λ¬΄κΆλ¬΄μ§ν κ°λ₯μ± λν κ·Έ μμ μ΄ν¬μ ν¨μ νκ³ μλ€κ³ μκ°νλ€.
μ΄μ κ» λ€λ₯Έ λΆμΌμ μμκΈ°μ κ°λ°μλ‘μ¨μ 컀리μ΄λ μ΄μ λ§ λ°κ±Έμμ λ΄λλ κ²κ³Ό λ€λ₯Ό λ°κ° μλ€. κ·Έλμ μ§κΈ μ΄λ μ λμ κΈ΄μ₯κ°κ³Ό λλ €μμ λλΌλ κ²μ λΉμ°νλ€κ³ μκ°νλ€. κ·Έλ¬λ©΄μ λμμ, μ΄λ² νμ΄λ νλ‘μ νΈμ κ°λ° κ²½νμ λ°κ±°λ¦μΌμ, μμΌλ‘λ μλ‘μ΄ κΈ°μ μ λν ν¬μ©λ ₯κ³Ό λ°°μ°λ €λ μμ§λ₯Ό μ μ§νλ€λ©΄, μκ°νμ§ λͺ»νλ μ¬μ΄ κ·Έλ κ² λκ³ μΆμλ μ’ νλ κ°λ°μμ λ°μ΄μ λ€μ΄κ°μμ§ μμκΉνλ μ₯λ―ΈλΉ κΏμ μ΄μ§ λ μ¬λ¦¬λ κ²λ 무리λ μλμ§ μμκΉ μΆλ€.
λκΈ