관리 메뉴

λͺ©λ‘πŸ“š Language & CS knowledge (167)

Daehyunii's Dev-blog

02 λ°°μ—΄κ³Ό 객체의 μ„±λŠ₯ 평가

이번 κ°•μ˜μ—μ„œλŠ” λΉ…μ˜€μ˜ μ‹œμ μ—μ„œ 객체와 배열이 μ–΄λ–»κ²Œ μž‘λ™λ˜λŠ”μ§€, μ™œ λ°°μ—΄μ˜ μ•žμ— 데이터λ₯Ό μΆ”κ°€ν•˜λŠ”κ²ƒμ΄ μ•ˆμ’‹μ€ 것인지, 또 λ©”μ„œλ“œλ“€μ€ λΉ…μ˜€μ˜ κ΄€μ μ—μ„œ μ–΄λ–»κ²Œ ν‘œν˜„λ˜λŠ”μ§€ ν™•μΈν•΄λ³΄μ•˜λ‹€. 2.1 객체의 λΉ…μ˜€ let instructor = { firstName : "mark", inInstructor : true, favoriteNumbers : [1,2,3,4,5] }; μš°μ„  κ°μ²΄λŠ” 데이터가 μ •λ ¬λ˜μ–΄ μžˆμ„ ν•„μš”κ°€ μ—†μ„λ•Œ, λΉ λ₯Έ μ ‘κ·Ό, μž…λ ₯ 그리고 제거λ₯Ό 원할 λ•Œ μ’‹λ‹€. ν•œλ§ˆλ””λ‘œ μ •λ ¬λ˜μ–΄ μžˆμ§€λŠ” μ•Šμ§€λ§Œ κ·Έ μ™Έμ˜ 것듀은 처리 속도가 맀우 λΉ λ₯΄λ‹€. 이λ₯Ό λΉ…μ˜€ ν‘œκΈ°λ²•μ˜ κ΄€μ μ—μ„œλŠ” μž…λ ₯,제거,접근은 O(1)의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°–λŠ”λ‹€. 즉 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κ°μ²΄λŠ” μ–΄λ–€ 정보든 μƒμˆ˜ μ‹œκ°„μ•ˆμ— μ €μž₯ν•  수 있고, μ›ν•˜λŠ” λ‚΄μš©μ„ 상..

01 λΉ…μ˜€ ν‘œκΈ°λ²•(Big O)

1.1 λΉ…μ˜€ ν‘œκΈ°λ²•μ˜ ν•„μš”μ„± λ™μΌν•œ λ™μž‘μ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ μ½”λ“œλŠ” μˆ˜λ§Žμ€ λ°©λ²•μœΌλ‘œ μž‘μ„±μ΄ κ°€λŠ₯ν•˜λ‹€. κ·Έλ ‡λ‹€λ©΄ 이 λ§Žμ€ μ½”λ“œλ“€ μ€‘μ—μ„œ 상황에 μ•Œλ§žλŠ” μ„±λŠ₯이 κ°€μž₯ 쒋은 μ½”λ“œλŠ” 무엇인지λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•œ 방법이 λΉ…μ˜€ ν‘œκΈ°λ²•μ΄λ‹€. λ™μΌν•œ λ™μž‘μ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ μ—¬λŸ¬ μ½”λ“œ μž‘μ„± 방법은 κ·Έ μž‘μ„± λ°©λ²•λ§ˆλ‹€ μž₯단점을 가지고 μžˆλ‹€. ν•˜μ§€λ§Œ κ°œλ°œμžλŠ” 이λ₯Ό 비ꡐ해보고 ν™•μΈν•˜λŠ”κ²ƒμ΄ μ€‘μš”ν•˜λ‹€. 그리고 λ””λ²„κ·Έμ‹œ μ½”λ“œλ₯Ό 느리게 λ§Œλ“œλŠ” 것이 무엇인지 μ΄ν•΄ν•˜λŠ”κ²ƒλ„ ꡉμž₯히 μ€‘μš”ν•˜λ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λΉ…μ˜€ ν‘œκΈ°λ²•μ΄ ν•„μš”ν•˜λ‹€. 1.2 μ½”λ“œ μ‹œκ°„ 재기 μ½”λ“œλ₯Ό μž‘μ„±ν•¨μ— μžˆμ–΄μ„œ 더 쒋은 μ½”λ“œλ₯Ό νŒλ‹¨ν•˜λŠ” 기쀀은 λ¬΄μ—‡μΌκΉŒ? 처리 속도가 μ–Όλ§ˆλ‚˜ λΉ λ₯Έμ§€? λ©”λͺ¨λ¦¬κ°€ μ–Όλ§ˆλ‚˜ μ‚¬μš©λ˜κ³  μžˆλŠ”μ§€? μ•„λ‹ˆλ©΄ 가독성이 쒋은 쒋은 μ½”λ“œ? 이 처럼 쒋은 μ½”λ“œλ₯Ό ν‰κ°€ν•˜λŠ” 기쀀은..

48μž₯ λͺ¨λ“ˆ

48.1 λͺ¨λ“ˆμ˜ 일반적 의미 λͺ¨λ“ˆμ΄λž€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” κ°œλ³„μ  μš”μ†Œλ‘œμ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ 쑰각을 λ§ν•œλ‹€. 일반적으둜 λͺ¨λ“ˆμ€ κΈ°λŠ₯을 κΈ°μ€€μœΌλ‘œ 파일 λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•œλ‹€. μ΄λ•Œ λͺ¨λ“ˆμ΄ μ„±λ¦½ν•˜λ €λ©΄ λͺ¨λ“ˆμ€ μžμ‹ λ§Œμ˜ 파일 μŠ€μ½”ν”„(λͺ¨λ“ˆ μŠ€μ½”ν”„)λ₯Ό κ°€μ§ˆ 수 μžˆμ–΄μ•Ό ν•œλ‹€. μžμ‹ λ§Œμ˜ 파일 μŠ€μ½”ν”„λ₯Ό κ°–λŠ” λͺ¨λ“ˆμ˜ μžμ‚°μ€ 기본적으둜 λΉ„κ³΅κ°œ μƒνƒœλ‹€. μžμ‹ λ§Œμ˜ 파일 μŠ€μ½”ν”„λ₯Ό κ°–λŠ” λͺ¨λ“ˆμ˜ λͺ¨λ“  μžμ‚°μ€ μΊ‘μŠν™”λ˜μ–΄ λ‹€λ₯Έ λͺ¨λ“ˆμ—μ„œ μ ‘κ·Όν•  수 μ—†λ‹€. 즉, λͺ¨λ“ˆμ€ κ°œλ³„μ  μ‘΄μž¬λ‘œμ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό λΆ„λ¦¬λ˜μ–΄ μ‘΄μž¬ν•œλ‹€. ν•˜μ§€λ§Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μ™„μ „νžˆ λΆ„λ¦¬λ˜μ–΄ κ°œλ³„μ μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” λͺ¨λ“ˆμ€ μž¬μ‚¬μš©μ΄ λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ 쑴재의 μ˜λ―Έκ°€ μ—†λ‹€. λ”°λΌμ„œ λͺ¨λ“ˆμ€ κ³΅κ°œκ°€ ν•„μš”ν•œ μžμ‚°μ— ν•œμ •ν•˜μ—¬ λͺ…μ‹œμ μœΌλ‘œ 선택적 κ³΅κ°œκ°€ κ°€λŠ₯ν•˜λ‹€. 이λ₯Ό export라 ν•œλ‹€. 곡개된 λͺ¨λ“ˆμ˜..

46μž₯ μ œλ„ˆλ ˆμ΄ν„°μ™€ async/await(β€»λ‹¨μˆœ κ°œλ…λ§Œ 정리)

46.1 μ œλ„ˆλ ˆμ΄ν„°λž€? ES6μ—μ„œ λ„μž…λœ μ œλ„ˆλ ˆμ΄ν„°λŠ” μ½”λ“œ λΈ”λ‘μ˜ 싀행을 μΌμ‹œ μ€‘μ§€ν–ˆλ‹€κ°€ ν•„μš”ν•œ μ‹œμ μ— μž¬κ°œν•  수 μžˆλŠ” νŠΉμˆ˜ν•œ ν•¨μˆ˜λ‹€. 일반 ν•¨μˆ˜μ™€μ˜ 차이점 1. μ œλ„ˆλ ˆμ΄ν„° ν•¨μˆ˜λŠ” ν•¨μˆ˜ ν˜ΈμΆœμžμ—κ²Œ ν•¨μˆ˜ μ‹€ν–‰μ˜ μ œμ–΄κΆŒμ„ 양도할 수 μžˆλ‹€. 2. μ œλ„ˆλ ˆμ΄ν„° ν•¨μˆ˜λŠ” ν•¨μˆ˜ ν˜ΈμΆœμžμ™€ ν•¨μˆ˜μ˜ μƒνƒœλ₯Ό 주고받을 수 μžˆλ‹€. 3. μ œλ„ˆλ ˆμ΄ν„° ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ μ œλ„ˆλ ˆμ΄ν„° 객체λ₯Ό λ°˜ν™˜ν•œλ‹€. 46.2 μ œλ„ˆλ ˆμ΄ν„° ν•¨μˆ˜μ˜ μ •μ˜ μ œλ„ˆλ ˆμ΄ν„° ν•¨μˆ˜λŠ” function* ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œλ‹€. 그리고 ν•˜λ‚˜ μ΄μƒμ˜ yield ν‘œν˜„μ‹μ„ ν¬ν•¨ν•œλ‹€. 이것을 μ œμ™Έν•˜λ©΄ 일반 ν•¨μˆ˜ μ •μ˜ν•˜λŠ” 방법과 λ™μΌν•˜λ‹€. μ—μŠ€ν„°λ¦¬μŠ€ν¬(*)의 μœ„μΉ˜λŠ” function ν‚€μ›Œλ“œμ™€ ν•¨μˆ˜ 이름 사이라면 어디든지 상관없닀. // μ œλ„ˆλ ˆμ΄ν„° ν•¨μˆ˜ μ„ μ–Έλ¬Έ function* genDecFu..

45μž₯ ν”„λ‘œλ―ΈμŠ€(β€»λ‹¨μˆœ κ°œλ…λ§Œ 정리)

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 비동기 처리λ₯Ό μœ„ν•œ ν•˜λ‚˜μ˜ νŒ¨ν„΄μœΌλ‘œ 콜백 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€. ν•˜μ§€λ§Œ 전톑적인 콜백 νŒ¨ν„΄μ€ 콜백 ν—¬λ‘œ 인해 가독성이 λ‚˜μ˜κ³  비동기 처리 쀑 λ°œμƒν•œ μ—λŸ¬μ˜ μ²˜λ¦¬κ°€ κ³€λž€ν•˜λ©° μ—¬λŸ¬ 개의 비동기 처리λ₯Ό ν•œλ²ˆμ— μ²˜λ¦¬ν•˜λŠ” 데도 ν•œκ³„κ°€ μžˆλ‹€. ES6μ—μ„œλŠ” 비동기 처리λ₯Ό μœ„ν•œ 또 λ‹€λ₯Έ νŒ¨ν„΄μœΌλ‘œ ν”„λ‘œλ―ΈμŠ€λ₯Ό λ„μž…ν–ˆλ‹€. ν”„λ‘œλ―ΈμŠ€λŠ” 전톡적인 콜백 νŒ¨ν„΄μ΄ 가진 단점을 λ³΄μ™„ν•˜λ©° 비동기 처리 μ‹œμ μ„ λͺ…ν™•ν•˜κ²Œ ν‘œν˜„ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€. 45.2 ν”„λ‘œλ―ΈμŠ€μ˜ 생성 Promise μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚¬μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•˜λ©΄ ν”„λ‘œλ―ΈμŠ€ 객체λ₯Ό μƒμ„±ν•œλ‹€. ES6μ—μ„œ λ„μž…λœ PromiseλŠ” 호슀트 객체가 μ•„λ‹Œ ECMAscript 사양에 μ •μ˜λœ ν‘œμ€€ 빌트인 객체닀. Promise μƒμ„±μž ν•¨μˆ˜λŠ” 비동기 처리λ₯Ό μˆ˜ν–‰ν•  콜백 ν•¨μˆ˜λ₯Ό 인..

44μž₯ REST API(β€»λ‹¨μˆœ κ°œλ…λ§Œ 정리)

RESTλŠ” HTTP/1.0κ³Ό 1.1의 μŠ€νŽ™ μž‘μ„±μ— μ°Έμ—¬ν–ˆκ³  μ•„νŒŒμΉ˜ HTTP μ„œλ²„ ν”„λ‘œμ νŠΈμ˜ 곡동 μ„€μ§‘μžμΈ 둜이 ν•„λ”©μ˜ 2000λ…„ λ…Όλ¬Έμ—μ„œ 처음 μ†Œκ°œλ˜μ—ˆλ‹€. λ°œν‘œ λ‹Ήμ‹œμ˜ 웹이 HTTPλ₯Ό μ œλŒ€λ‘œ μ‚¬μš©ν•˜μ§€ λͺ»ν•˜κ³  μžˆλŠ” 상황을 보고 HTTP의 μž₯점을 μ΅œλŒ€ν•œ ν™œμš©ν•  수 μžˆλŠ” μ•„ν‚€ν…μ²˜λ‘œμ„œ RESTλ₯Ό μ†Œκ°œν–ˆκ³  μ΄λŠ” HTTP ν”„λ‘œν† μ½œμ„ μ˜λ„μ— 맞게 λ””μžμΈν•˜λ„λ‘ μœ λ„ν•˜κ³  μžˆλ‹€. REST의 κΈ°λ³Έ 원칙을 μ„±μ‹€νžˆ 지킨 μ„œλΉ„μŠ€ λ””μžμΈμ„ "RESTful"이라고 ν‘œν˜„ν•œλ‹€. 즉, RESTλŠ” HTTPλ₯Ό 기반으둜 ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•˜λŠ” 방식을 κ·œμ •ν•œ μ•„ν‚€ν…μ²˜κ³ , REST APIλŠ” RESTλ₯Ό 기반으둜 μ„œλΉ„μŠ€ APIλ₯Ό κ΅¬ν˜„ν•œ 것을 μ˜λ―Έν•œλ‹€. 44.1 REST API ꡬ성 REST APIλŠ” μžμ›, ν–‰μœ„, ν‘œν˜„μ˜ 3가지 μš”μ†Œλ‘œ ..

42μž₯ 비동기 ν”„λ‘œκ·Έλž˜λ°

42.1 동기 μ²˜λ¦¬μ™€ 비동기 처리 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ ν•¨μˆ˜ μ½”λ“œκ°€ ν‰κ°€λ˜μ–΄ ν•¨μˆ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μƒμ„±λœλ‹€. μ΄λ•Œ μƒμ„±λœ ν•¨μˆ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒ(콜 μŠ€νƒ)에 ν‘Έμ‹œλ˜κ³  ν•¨μˆ˜μ½”λ“œκ°€ μ‹€ν–‰λœλ‹€. ν•¨μˆ˜ μ½”λ“œμ˜ 싀행이 μ’…λ£Œν•˜λ©΄ ν•¨μˆ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ—μ„œ νŒλ˜μ–΄ μ œκ±°λœλ‹€. 2022.07.20 - [μ–Έμ–΄ 곡뢀 및 정리/μžλ°”μŠ€ν¬λ¦½νŠΈ[λͺ¨λ˜μžλ°”μŠ€ν¬λ¦½νŠΈ]] - 23μž₯ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ 23μž₯ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ™μž‘ 원리λ₯Ό λ‹΄κ³  μžˆλŠ” 핡심 κ°œλ…μ΄λ‹€. 이 κ°œλ…μ„ λͺ…ν™•ν•˜κ²Œ μ΄ν•΄ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μŠ€μ½”ν”„ 기반으둜 μ‹λ³„μžμ™€ μ‹λ³„μžμ— λ°”μΈλ”©λœ 값을 κ΄€λ¦¬ν•˜λŠ” 방식과 호 pinetree93.tistory.com μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 단 ν•˜λ‚˜μ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ„ κ°–λŠ”λ‹€. μ΄λŠ” ν•œ λ²ˆμ— ..