λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ’» DEV94

[CS] OOP (객체지ν–₯) & Functional (ν•¨μˆ˜ν˜•) ν”„λ‘œκ·Έλž˜λ° 기초 OOP, μ ˆμ°¨μ§€ν–₯, ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° .. 많이 μ‚¬μš©ν–ˆμ§€λ§Œ μ •ν™•ν•œ κΈ°λ³Έ κ°œλ…μ„ μ•Œκ³  μžˆμ§€ μ•Šλ‹€λŠ” 생각이 λ“€μ–΄, κ΄€λ ¨ λ‚΄μš©μ„ λ‹΄μ•„ μ •λ¦¬ν•œ 글을 써 λ³Έλ‹€. πŸ“Œ Introdction μ ˆμ°¨μ§€ν–₯ν˜• ν”„λ‘œκ·Έλž˜λ°, 객체지ν–₯ν˜• ν”„λ‘œκ·Έλž˜λ°, ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° λ“±μ˜ μš©μ–΄λ₯Ό μ•„μšΈλŸ¬ 'ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„'이라 μΉ­ν•œλ‹€. μΌμ’…μ˜ ν”„λ‘œκ·Έλž˜λ° 세계관이라고 ν•  수 μžˆλŠ”λ°, νŠΉμ • κΈ°λ²•μ΄λ‚˜ 이둠을 λͺ¨μ•„ ν•˜λ‚˜μ˜ μ²΄κ³„λ‘œ λ§Œλ“€μ—ˆλ‹€κ³  λ³Ό 수 μžˆλ‹€. ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ€ μœ ν˜•μ— 따라 λͺ…λ Ήν˜•/μ„ μ–Έν˜•μœΌλ‘œ λΆ„λ₯˜ν•  수 μžˆλ‹€. πŸ’‘ λͺ…λ Ήν˜• ν”„λ‘œκ·Έλž˜λ°: μ–΄λ–»κ²Œ(How) ν•  건지λ₯Ό μ„€λͺ…ν•˜λŠ” 방식 - μ ˆμ°¨μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° - 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° πŸ’‘ μ„ μ–Έν˜• ν”„λ‘œκ·Έλž˜λ°: 무엇(What)을 ν•  건지λ₯Ό μ„€λͺ…ν•˜λŠ” 방식 - ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° ✨ μ ˆμ°¨μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° μ΅œκ·ΌκΉŒμ§€λ„ .. 2021. 9. 15.
[Network] IP μ£Όμ†Œ μ²΄κ³„μ˜ 과거와 ν˜„μž¬ 이전에 λ‹€λ€˜λ˜ TCP/IP ν”„λ‘œν† μ½œ μŠ€νƒ κ΄€λ ¨ κΈ€μ—μ„œ IP μ£Όμ†Œμ— λŒ€ν•΄ λ‹€μŒκ³Ό 같은 νŠΉμ§•μ΄ μžˆλ‹€κ³  ν–ˆμ—ˆλ‹€. TCP/IP 의 Network Layer (OSI 3계측) μ—μ„œλŠ” 데이터 Segment 에 λ°œμ‹ μ§€μ™€ λͺ©μ μ§€μ˜ IP μ£Όμ†Œλ₯Ό μΆ”κ°€ν•˜μ—¬ νŒ¨ν‚·μ„ κ΅¬μ„±ν•œλ‹€. IP λŠ” μ»΄ν“¨ν„°λ§ˆλ‹€ κ°–λŠ” κ³ μœ ν•œ μ£Όμ†Œκ°’μ΄λ©°, "논리적인 μ£Όμ†Œ" 둜 λΆˆλ¦¬κΈ°λ„ ν•œλ‹€. IP μ£Όμ†ŒλŠ” λ„€νŠΈμ›Œν¬μ˜ μ£Όμ†Œμ™€ 호슀트의 μ£Όμ†Œλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. 이번 κΈ€μ—μ„œλŠ” IP μ£Όμ†Œμ˜ ꡬ체적인 체계와 λ³€ν™”λ₯Ό μ•Œμ•„λ³΄κ³ μž ν•œλ‹€. ✨ IP μ£Όμ†Œ, 과거의 체계 ν”νžˆ μ‚¬μš©λ˜λŠ” IP μ£Όμ†ŒλŠ” 32λΉ„νŠΈμΈ IPv4 μ£Όμ†Œμ΄λ‹€. IPμ—λŠ” v4, v6 두 개의 체계가 μ‘΄μž¬ν•˜λŠ”λ° IPv6κ°€ 쑰금 더 μ΅œκ·Όμ— λ‚˜μ˜¨ κ°œλ…μœΌλ‘œ, IPv4 μ²΄κ³„μ˜ ν•œκ³„λ₯Ό 보완해쀀닀. (IPv6λŠ” 128λΉ„νŠΈμ΄λ‹€) πŸ“Œ.. 2021. 9. 13.
[NodeJS] Node 의 this λž€? (+ ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ this) ✨ console.log(this) 의 κ²°κ³Ό 이전에 μ •λ¦¬ν•΄λ‘μ—ˆλ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ(μ΄ν•˜ JS)의 this μ—μ„œ μ£Όμ˜μ‚¬ν•­μœΌλ‘œ μ–ΈκΈ‰ν–ˆλ“―, λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λŠ” JS 의 this 와 node μ—μ„œ μ‹€ν–‰λ˜λŠ” JS 의 this λŠ” λ‹€λ₯΄λ‹€. [Javascript] Javascript 의 this λž€? ❗ 주의: Node μ—μ„œμ˜ this λŠ” 쑰금 λ‹€λ¦…λ‹ˆλ‹€. 이 κΈ€μ—μ„œ λ‹€λ£¨λŠ” λ‚΄μš©μ€ λΈŒλΌμš°μ €μ—μ„œ μž‘λ™ν•˜λŠ” JS μ—μ„œμ˜ this μž…λ‹ˆλ‹€. Javascript 의 this λŠ” 자주 λ“±μž₯ν•˜μ§€λ§Œ, μ •ν™•νžˆ μ•ŒκΈ° νž˜λ“  κ°œλ…μ΄λ‹€. 이번 κΈ€μ—μ„œ haeunyah.tistory.com λΈŒλΌμš°μ €μ˜ μ „μ—­κ°μ²΄λŠ” window 이닀. λ”°λΌμ„œ μ „μ—­ scope μ—μ„œ console.log(this) λ₯Ό μž…λ ₯ν•  경우 window κ°€ λœ¨λŠ” 것이 λ§žλ‹€. conso.. 2021. 9. 10.
[Network] TCP/IP ν”„λ‘œν† μ½œ μŠ€νƒ (근데 이제 OSI 7계측을 곁듀인) πŸ“Œ Introduction λ„€νŠΈμ›Œν¬, 즉 μΈν„°λ„·μœΌλ‘œ μ΄λ£¨μ–΄μ§€λŠ” λͺ¨λ“  톡신은 정보λ₯Ό 담은 'νŒ¨ν‚·'을 κ΅ν™˜μ„ 톡해 이루어진닀. 이 νŒ¨ν‚·μ€ λ…ΈνŠΈλΆμ΄λ‚˜ λΌμš°ν„°μ™€ 같은 물리적인 μž₯μΉ˜μ—μ„œ 또 λ‹€λ₯Έ μž₯치둜 μ΄λ™ν•˜λŠ”λ°, 곡기 쀑에 떠닀닐 수 μžˆλŠ” μ „κΈ° μ‹ ν˜Έλ‘œ λ³€ν™˜λ˜κΈ° λ•Œλ¬Έμ— κ°€λŠ₯ν•œ 일이닀. μž₯치끼리 톡신할 λ•Œ μ‚¬μš©ν•˜κΈ°λ‘œ ν•œ ν‘œμ€€ 'ν”„λ‘œν† μ½œ' (κ·œμ•½) μ΄λΌλŠ” 것이 μ‘΄μž¬ν•œλ‹€. 인터넷이 21μ„ΈκΈ°λ§ŒνΌ λ³΄νŽΈν™” λ˜μ–΄ μžˆμ§€ μ•Šλ˜ 1900λ…„λŒ€μ—λŠ” κ·œμ•½μ΄ λ”°λ‘œ μ—†μ—ˆλ˜ λ•Œλ„ μžˆμ—ˆμ§€λ§Œ, 갈수둝 μ „λ‹¬λ˜λŠ” payload (λ‚΄μš©) 이 컀짐으둜써 정보 ν†΅μ‹ μ˜ λ‹¨μœ„μ™€ 단계λ₯Ό μΉ˜λ°€ν•˜κ²Œ μ„€κ³„ν•˜μ—¬ νš¨μœ¨μ„± μ¦μ§„μ˜ ν•„μš”μ„±μ΄ μ»€μ‘Œλ‹€. 이에 따라 λ“±μž₯ν•œ 것이 λ„€νŠΈμ›Œν‚Ή 과정을 ν‘œμ€€ν™”ν•œ TCP/IP ν”„λ‘œν† μ½œ μŠ€νƒμ΄λ‹€. ✨ TCP 와 IP, 그리고 TCP/IP ν”„.. 2021. 9. 9.
[Javascript] Javascript 의 this λž€? ❗ 주의: Node μ—μ„œμ˜ this λŠ” 쑰금 λ‹€λ¦…λ‹ˆλ‹€. 이 κΈ€μ—μ„œ λ‹€λ£¨λŠ” λ‚΄μš©μ€ λΈŒλΌμš°μ €μ—μ„œ μž‘λ™ν•˜λŠ” JS μ—μ„œμ˜ this μž…λ‹ˆλ‹€. Javascript 의 this λŠ” 자주 λ“±μž₯ν•˜μ§€λ§Œ, μ •ν™•νžˆ μ•ŒκΈ° νž˜λ“  κ°œλ…μ΄λ‹€. 이번 κΈ€μ—μ„œλŠ” this 의 기초 μž‘λ™ 방식과 바인딩에 λŒ€ν•΄ μ„€λͺ…ν•˜κ³ μž ν•œλ‹€. this 의 κ°œλ…μ— μ ‘κ·Όν•˜κΈ° μ „, λ¨Όμ € μ•Œμ•„λ‘μ–΄μ•Ό ν•˜λŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ™€ ν”„λ‘œνΌν‹° & λ©”μ„œλ“œλΆ€ν„° μ‚΄νŽ΄λ³΄μž. ✨ Javascript μ—μ„œμ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ 이전 κΈ€μ—μ„œ 잠깐 μ–ΈκΈ‰ν–ˆμ§€λ§Œ, Javascript λŠ” 컴파일 μ–Έμ–΄κ°€ μ•„λ‹Œ 인터프리터 언어이닀. 인터프리터 μ–Έμ–΄λ‘œ μž‘μ„±λœ μ½”λ“œλŠ” μ‹€ν–‰ μ¦‰μ‹œ 인터프리터가 μ½”λ“œλ₯Ό ν•œμ€„μ”© 읽어내렀가며 μ‹€ν–‰ν•œλ‹€. 이 λ•Œ μΈν„°ν”„λ¦¬ν„°λŠ” μ½”λ“œ 해석을 μ‘°κΈˆμ΄λΌλ„ νŽΈν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ μ½”λ“œλ₯Ό μž‘μ€ 쑰각으둜 .. 2021. 9. 7.
[Javascript] 이벀트 루프 (Event Loop) λž€? ✨ JS, Event Loop, Single Thread NodeJs 의 single/multi thread μ—¬λΆ€λ₯Ό μ •λ¦¬ν•˜λ‹€λ³΄λ‹ˆ Js 의 Event Loop κ°œλ…μ„ 쑰금 더 ν™•μ‹€νžˆ μ•Œμ•„λ‘μ–΄μ•Όκ² λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. [NodeJS] NodeJS λŠ” Single Thread 일까? Multi Thread 일까? ✨ 고민이 μ‹œμž‘λœ 계기 JS 기초λ₯Ό ν•™μŠ΅ν•˜λ˜ λ‹Ήμ‹œμ—λŠ” μŠ€λ ˆλ“œμ™€ ν”„λ‘œμ„ΈμŠ€μ˜ κΈ°λ³Έ κ°œλ…μ„ ν•™μŠ΅ν•΄λ‘κΈ°λ§Œ ν•˜κ³ , ꡬ체적으둜 μ‚΄νŽ΄λ³΄μ§€ λͺ»ν–ˆμ—ˆλ‹€. μ›Ήκ°œλ°œ κ΅μœ‘κ³Όμ •μ΄ λλ‚˜κ°ˆ 무렡, μ‹€μ‹œκ°„ 쀌 κ°•μ˜μ—μ„œ haeunyah.tistory.com μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€μŠ€λ ˆλ“œ 언어이닀. ν•˜μ§€λ§Œ 이전 κΈ€μ—μ„œλ„ λ³Ό 수 μžˆμ—ˆλ“―, λ©€ν‹°μŠ€λ ˆλ“œμ²˜λŸΌ λ™μ‹œμ— μ—¬λŸ¬ νƒœμŠ€ν¬μ˜ μž‘λ™μ΄ κ°€λŠ₯ν•˜λ‹€. 이 νŠΉμ§•μ€ λΈŒλΌμš°μ € λŸ°νƒ€μž„ ν™˜κ²½μ—μ„œλ„ λ™μΌν•˜λ‹€. μ™œμΌ.. 2021. 9. 7.
[NodeJS] NodeJS λŠ” Single Thread 일까? Multi Thread 일까? ✨ 고민이 μ‹œμž‘λœ 계기 JS 기초λ₯Ό ν•™μŠ΅ν•˜λ˜ λ‹Ήμ‹œμ—λŠ” μŠ€λ ˆλ“œμ™€ ν”„λ‘œμ„ΈμŠ€μ˜ κΈ°λ³Έ κ°œλ…μ„ ν•™μŠ΅ν•΄λ‘κΈ°λ§Œ ν•˜κ³ , ꡬ체적으둜 μ‚΄νŽ΄λ³΄μ§€ λͺ»ν–ˆμ—ˆλ‹€. μ›Ήκ°œλ°œ κ΅μœ‘κ³Όμ •μ΄ λλ‚˜κ°ˆ 무렡, μ‹€μ‹œκ°„ 쀌 κ°•μ˜μ—μ„œ ν¬λ£¨λΆ„κ»˜ "JS λŠ” μ‹±κΈ€ μŠ€λ ˆλ“œμΌκΉŒμš”?" λΌλŠ” μ§ˆλ¬Έμ„ λ“€μ—ˆκ³ , λ‚΄ λŒ€λ‹΅μ€ λ‹Ήμ—°νžˆ "yes" μ˜€λŠ”λ°, μ˜μ™Έλ‘œ "No" λΌλŠ” λ°˜μ‘λ„ λ§Žμ•˜λ‹€. λ‹€λ“€ μ‘°κΈˆμ”© λ‹€λ₯΄κ²Œ μ•Œκ³  μžˆλŠ” μ΄μœ κ°€ κΆκΈˆν•΄μ„œ ꡬ글링을 ν•΄ λ³΄λ‹ˆ, ν—·κ°ˆλ¦΄λ§Œν•œ μ΄μœ κ°€ μžˆλ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. 이번 κΈ€μ—μ„œλŠ” JS, 그리고 NodeJS κ°€ κ³Όμ—° Single Threaded 인지 Multi Threaded 인지 훝어보도둝 ν•˜κ² λ‹€. ✨ ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ (Process & Thread) ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œλŠ” 이전 κΈ€μ—μ„œ 이미 ν•œ 번 닀룬 적이 μžˆμœΌλ‹ˆ, κ°„λ‹¨νžˆλ§Œ 짚고 λ„˜μ–΄κ°€κ² λ‹€.. 2021. 9. 6.
[Database] Redis Vs Memcached ✨ Caching Solution 캐싱은 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ„±λŠ₯ ν–₯상에 κ°€μž₯ 많이 κΈ°μ—¬ν•˜λŠ” 단계이닀. μΊμ‹œ μ„œλ²„ λ˜λŠ” in-memory cache λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ λ§Žμ΄λ“€ μ•Œμ•„λ³΄λŠ” 것이 Redis 와 Memcache 인데, 이 두 가지λ₯Ό 비ꡐ해 보며 κ΅¬ν˜„ν•˜κ³ μž ν•˜λŠ” μ„œλΉ„μŠ€μ— 더 μ ν•©ν•œ μΊμ‹œ μ†”λ£¨μ…˜μΈμ§€ μ•Œμ•„λ³΄μž. Memcached λŠ” 2003 년에 λ‚˜μ˜¨ κ³ μ„±λŠ₯ 캐싱 μ†”λ£¨μ…˜μ΄λ‹€. Redis λŠ” 비ꡐ적 μ΅œκ·Όμ— λ‚˜μ™”μœΌλ©° (2009λ…„), μ—¬λŸ¬ κΈ°λŠ₯을 νƒ‘μž¬ν•œ 캐싱 μ†”λ£¨μ…˜μ΄λ‹€. AWS μ—μ„œλŠ” μ΄λ“€μ˜ 곡톡점과 차이점을 λ‹€μŒκ³Ό 같이 μ •λ¦¬ν•˜κ³  μžˆλ‹€. ν‘œλ‘œ λ³΄λ‹ˆ λ­”κ°€ Memcached κ°€ Redis 에 λΉ„ν•΄ ν•  쀄 μ•„λŠ” 것이 μ μ–΄λ³΄μ΄λŠ”λ°, μ‹€μ œλ‘œλ„ κ·Έλ ‡λ‹€. Memcached λŠ” λ‹¨μˆœν•œ μž‘μ—…μ„ μœ„ν•΄ κ³ μ•ˆλœ 반면 Redis λŠ” μ—¬λŸ¬.. 2021. 8. 10.
[Database] Express/NodeJS μ—μ„œ Redis μ‚¬μš©ν•˜κΈ° ✨ Redis λž€? Remote Dictionary Server (DB) 이며, In-memory Data structure Store 둜, λ©”λͺ¨λ¦¬ 상에 데이터λ₯Ό μ €μž₯ν•œλ‹€. λ‹€μ–‘ν•œ 자료 ꡬ쑰λ₯Ό μ €μž₯ν•˜μ§€λ§Œ, 기본적으둜 λͺ¨λ“  λ°μ΄ν„°λŠ” Key-Value μŒμ„ 이루기 λ•Œλ¬Έμ— NoSQL DB 둜 ν™œμš©λœλ‹€. λ””μŠ€ν¬μ— 데이터λ₯Ό μ €μž₯ν•΄ 속도가 느린 RDBMS λ“±μ˜ DBMS 보닀 ν™œμš©λ„κ°€ 높은 μΌ€μ΄μŠ€κ°€ μ’…μ’… μžˆλŠ”λ°, κ·Έ λŒ€ν‘œμ μΈ μ˜ˆκ°€ μΊμ‹œ (Cache) 이닀. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„μ—κ²Œ 데이터λ₯Ό λ‹¬λΌλŠ” μš”μ²­μ„ 보내면 μ„œλ²„λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό μ–»μ–΄μ˜€κ²Œ λ˜λŠ”λ°, λ™μΌν•œ μš”μ²­μ΄ μ—¬λŸ¬ 번 올 경우 계속 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 같은 데이터λ₯Ό μ°ΎλŠ”λ‹€. μ΄λŠ” μƒλ‹Ήνžˆ λΉ„νš¨μœ¨μ μ΄λ©°, λ°μ΄ν„°μ˜ 크기에 따라 응닡 속도가 계속 지연될 수 있기 .. 2021. 7. 18.