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

전체 κΈ€67

Babel μ΄λž€? ν”„λ‘œμ νŠΈ ν•  λ•Œ babel.config.js νŒŒμΌμ„ λ³΄λ©΄μ„œ 이게 뭐지 μ‹Άμ–΄ 검색해본 적이 μžˆλ‹€. 그런데 이게 문법도 μ•„λ‹ˆκ³  언어도 μ•„λ‹ˆλΌ κ·ΈλŸ°μ§€ 계속 κ·Έ 의미λ₯Ό 잊게 λ˜λŠ” λ§ˆμ„±μ˜ babel .... κ·Έλž˜μ„œ μ˜€λžœλ§Œμ— μžλ°”μŠ€ν¬λ¦½νŠΈ 곡뢀λ₯Ό λ‹€μ‹œ ν•˜λ˜ 쀑에 babel ν‚€μ›Œλ“œλ₯Ό λ°œκ²¬ν•΄μ„œ μ •λ¦¬ν•΄λ³΄λ €κ³ ν•œλ‹€. babel μ΄λž€ 무엇인가 ··· μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ³€μˆ˜ νƒ€μž…μ—λŠ” var / let / const κ°€ μžˆλ‹€. var μ‚¬μš©μ„ μ§€μ–‘ν•œλ‹€κ³ λŠ” ν•˜λ‚˜, let / const λ³€μˆ˜μ˜ 경우 IE9, IE10 μ—μ„œ μ‚¬μš©μ΄ λΆˆκ°€ν•˜λ‹€. 그러면 IE9, IE10 ν™˜κ²½μ—μ„œλŠ” var νƒ€μž…μ˜ λ³€μˆ˜λ§Œ μ„ μ–Έν•  수 μžˆλŠ” 걸까? 결둠은 μ•„λ‹ˆλ‹€! μ™œλƒν•˜λ©΄ babel 이 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έ ··· κ΅¬ν˜• λΈŒλΌμš°μ €μ—μ„œλ„ μ½”λ“œκ°€ λŒμ•„κ°ˆ 수 μžˆκ²Œλ” λ„μ™€μ£ΌλŠ” 도ꡬ가 .. 2022. 5. 11.
git pull ν•  λ•Œ 였λ₯˜λ‚˜λŠ” 경우 git stash & git stash pop μ‚¬μš©ν•˜κΈ° ν”„λ‘œμ νŠΈμ— μž‘μ—…μ„ ν•˜λ‹€κ°€ ν”„λ‘œμ νŠΈ μ—…λ°μ΄νŠΈλ₯Ό μœ„ν•΄ git pull 을 μ‹œλ„ν–ˆλŠ”λ° μ•„λž˜μ™€ 같은 였λ₯˜λ₯Ό μ ‘ν–ˆλ‹€. μ–΄λ–»κ²Œ 해야할지 검색해보닀가 찾은 방법인 git stash λͺ…령에 λŒ€ν•΄ μ•Œμ•„λ³΄κ³ μž ν•œλ‹€. git stash λž€? λ§ˆλ¬΄λ¦¬ν•˜μ§€ μ•Šμ€ μž‘μ—…μ„ μŠ€νƒμ— μž μ‹œ μ €μž₯ν•΄λ‘λŠ” λͺ…λ Ήμ–΄ μ»€λ°‹ν•˜μ§€ μ•Šμ€ μž‘μ—…λ“€μ„ git stash λ₯Ό μ΄μš©ν•˜μ—¬ μŠ€νƒμ— μž μ‹œ μ €μž₯해두고 λ‚˜μ€‘μ— pop ν•˜μ—¬ λ‹€μ‹œ κ°€μ Έμ˜¬ 수 μžˆλ‹€. git pull ν•  λ•Œ μ—λŸ¬κ°€ λ‚˜λ©΄ 1. git stash λ₯Ό μ‚¬μš©ν•˜μ—¬ μ§€κΈˆκΉŒμ§€ μž‘μ—…ν–ˆλ˜ 것듀을 μž μ‹œ μŠ€νƒμ— μ €μž₯해두고 2. git pull ν•˜μ—¬ ν”„λ‘œμ νŠΈλ₯Ό μ—…λ°μ΄νŠΈ μ‹œν‚¨ λ‹€μŒ 3. git stash pop 으둜 μž‘μ—…λ¬Όλ“€μ„ λ‹€μ‹œ κ°€μ Έμ™€μ„œ λ‚΄κ°€ ν•˜λ˜ μž‘μ—…μ„ μ΄μ–΄μ„œ ν•  수 μžˆλ‹€. "이 ν¬μŠ€νŒ…μ€ 쿠팑 νŒŒνŠΈλ„ˆμŠ€ ν™œλ™μ˜ μΌν™˜.. 2022. 5. 10.
addEventListener 이벀트 (input & change) μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ input νƒœκ·Έμ— ν…μŠ€νŠΈκ°€ μž…λ ₯이 되면 λ²„νŠΌμ„ ν™œμ„±ν™”ν•˜λ„λ‘ λ§Œλ“œλŠ” μž‘μ—…μ„ ν•˜λ‹€κ°€ Input μ΄λ²€νŠΈμ™€ change 이벀트의 차이점을 μ•Œκ²Œ λ˜μ–΄μ„œ 기둝해둔닀. μž‘λ™ 방식 인풋 λ°•μŠ€ 두 κ°œμ— λͺ¨λ‘ ν…μŠ€νŠΈκ°€ μž…λ ₯되면 "확인" λ²„νŠΌμ˜ λΉ„ν™œμ„±ν™”κ°€ ν™œμ„±ν™”λ‘œ λ°”λ€ŒλŠ” 둜직 1. λ¨Όμ € 두 개의 input μš”μ†Œλ₯Ό 각각 element.getElementById 둜 κ°€μ Έμ˜¨λ‹€. 2. 각 μš”μ†Œμ— λŒ€ν•΄ addEventListener λ₯Ό κ±Έμ–΄μ„œ μ–΄λ–€ μ΄λ²€νŠΈκ°€ λ°œμƒν•  λ•Œλ§ˆλ‹€ μ–΄λ–€ λ™μž‘μ΄ μˆ˜ν–‰λ˜λ„λ‘ λ§Œλ“ λ‹€. μ΄λ•Œ input 에 μž…λ ₯λ˜λŠ” κ°’ λ³€ν™”λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ•ŒκΈ° μœ„ν•΄μ„œ μ²˜μŒμ—λŠ” onChange 즉 , "change" 이벀트λ₯Ό λ„£μ—ˆλ‹€. κ·ΈλŸ¬λ‚˜, change 이벀트λ₯Ό μ‚¬μš©ν•˜λ©΄ input 의 κ°’ λ³€ν™”κ°€ μ»€μ„œλ₯Ό input νƒœκ·Έ .. 2022. 4. 25.
Dev Study #4 (feat. Design Pattern) Guarded Suspension μ“°λ ˆλ“œλ₯Ό κΈ°λ‹€λ¦¬κ²Œ ν•˜μ—¬ μΈμŠ€ν„΄μŠ€μ˜ μ•ˆμ „μ„±μ„ 지킨닀. Request : ν•˜λ‚˜μ˜ λ¦¬ν€˜μŠ€νŠΈλ₯Ό ν‘œν˜„ν•œ 클래슀 RequestQueue : λ¦¬ν€˜μŠ€νŠΈλ₯Ό μˆœμ„œλŒ€λ‘œ λΉ„μΆ•ν•΄λ‘λŠ” 클래슀 ClientThread : λ¦¬ν€˜μŠ€νŠΈλ₯Ό λ‚΄μ£ΌλŠ” 클래슀 ServerThread : λ¦¬ν€˜μŠ€νŠΈλ₯Ό λ°›μ•„ ν•΄μ„ν•˜λŠ” 클래슀 Main : λ™μž‘ ν…ŒμŠ€νŠΈμš© 클래슀 Request 클래슀 ClientThread μ—μ„œ ServerThread 에 건넀진 μΈμŠ€ν„΄μŠ€ name ν•„λ“œλ₯Ό 가진닀. // Request 클래슀 public class Request { private final String name; public Request(String name) { this.name = name; } public String getName() .. 2022. 2. 21.
Dev Study #3 (feat. Design Pattern) [μžλ°” μ–Έμ–΄λ‘œ λ°°μš°λŠ” λ””μžμΈ νŒ¨ν„΄ μž…λ¬Έ] λ„μ„œλ₯Ό 읽고 κ³΅λΆ€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. Single Threaded Execution νŒ¨ν„΄ ν•˜λ‚˜μ˜ μ“°λ ˆλ“œλ§Œμ΄ 처리λ₯Ό μ‹€ν–‰ν•  수 μžˆλ„λ‘ μ œν•œμ„ λ‘” νŒ¨ν„΄ (ν•˜λ‚˜μ˜ μ“°λ ˆλ“œκ°€ μΈμŠ€ν„΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€κ³  μžˆλŠ” λ„μ€‘μ—λŠ” λ‹€λ₯Έ μ“°λ ˆλ“œκ°€ μΈμŠ€ν„΄μŠ€μ— μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 ν•˜λŠ” νŒ¨ν„΄) λ°λ“œλ½ (deadlock) 두 개의 μ“°λ ˆλ“œκ°€ 두 개의 락을 μ°¨μ§€ν•˜μ—¬ μ„œλ‘œ μƒλŒ€μ˜ μ“°λ ˆλ“œκ°€ 락을 ν•΄μ œν•˜λŠ” 것을 κΈ°λ‹€λ¦¬λŠ” ν˜„μƒ λ°λ“œλ½μ„ μΌμœΌν‚¨ μ“°λ ˆλ“œλŠ” μ–΄λ–»κ²Œ 해도 움직이지 μ•Šκ²Œ λ˜λ―€λ‘œ 생쑴성을 μžƒλŠ”λ‹€. λ°λ“œλ½ 쑰건 볡수의 SharedResource (곡유 μžμ›) 역할을 ν•˜λŠ” μΈμŠ€ν„΄μŠ€κ°€ μžˆμ„ λ•Œ μ“°λ ˆλ“œκ°€ μ–΄λ–€ SharedResource μ—­ν• μ˜ 락을 가진 채 λ‹€λ₯Έ SharedResource μ—­ν• μ˜ 락을 κ°€μ§€λŸ¬ 갈 .. 2022. 2. 18.
Dev Study #2 (feat. JAVA) [μžλ°” μ–Έμ–΄λ‘œ λ°°μš°λŠ” λ””μžμΈ νŒ¨ν„΄ μž…λ¬Έ] λ„μ„œλ₯Ό 읽고 κ³΅λΆ€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. UML (Undefined Modeling Language) μ‹œμŠ€ν…œμ„ μ‹œμƒν™”ν•˜λŠ” λ°©λ²•μ΄λ‚˜ 섀계λ₯Ό λ¬Έμ„œν™”ν•˜κΈ° μœ„ν•œ ν‘œν˜„ 방법 (ex. 클래슀 λ‹€μ΄μ–΄κ·Έλž¨) μ“°λ ˆλ“œ (Thread) ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ³  μžˆλŠ” 주체 μ‹±κΈ€ μ“°λ ˆλ“œ ν”„λ‘œκ·Έλž¨ (Single Thread Program) ν”„λ‘œκ·Έλž¨ μ²˜λ¦¬κ°€ ν•˜λ‚˜μ˜ νλ¦„μœΌλ‘œ μ΄μ–΄μ§€λŠ” ν”„λ‘œκ·Έλž¨ μ–΄λ–€ μ‹œμ μ— μ‹€ν–‰λ˜κ³  μžˆλŠ” μ²˜λ¦¬λŠ” ν•˜λ‚˜μ΄λ‹€. 메인 μ“°λ ˆλ“œ (Main Thread) λͺ…λ Ήμ–΄ μ€„μ—μ„œ μ§€μ •ν•œ 클래슀의 main λ©”μ†Œλ“œλ₯Ό μ‹€ν–‰ λ©€ν‹° μ“°λ ˆλ“œ ν”„λ‘œκ·Έλž¨ (Multithreaded Program) 볡수의 μ“°λ ˆλ“œκ°€ λ™μž‘ν•˜λŠ” ν”„λ‘œκ·Έλž¨ (μžλ°”λŠ” default 둜 λ©€ν‹° μ“°λ ˆλ“œ μ μš©λ˜μ–΄ μžˆλ‹€.) Thread 클래슀 run .. 2022. 2. 18.
Dev Study #1 BackEnd Web Server 와 WAS 의 차이점 Web Server => μ†Œν”„νŠΈμ›¨μ–΄ + ν•˜λ“œμ›¨μ–΄ 1) 정적인 컨텐츠 μ œκ³΅ν•˜λ©° WAS λ₯Ό κ±°μΉ˜μ§€ μ•Šκ³  λ°”λ‘œ μžμ›μ„ μ œκ³΅ν•œλ‹€. 2) μ›Ή λΈŒλΌμš°μ € ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° http μš”μ²­(Request) 을 λ°›μ•„ WAS 에 보내고 WAS κ°€ μ²˜λ¦¬ν•œ κ²°κ³Όλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 전달 (Response) Apache Server, NginX λ“± WAS (Web Application Server) => Web Server + Web Container (μ†Œν”„νŠΈμ›¨μ–΄ 엔진) 1) 동적인 컨텐츠 μ œκ³΅μ„ μœ„ν•΄ λ§Œλ“€μ–΄μ§„ Application Server 2) JSP, Servlet ꡬ동 ν™˜κ²½μ„ μ œκ³΅ν•œλ‹€. 3) Web Server κΈ°λŠ₯을 ꡬ쑰적으둜 λΆ„λ¦¬ν•˜μ—¬ μ²˜λ¦¬ν•˜κ³ μž ν•˜λŠ” λͺ©μ  ex) λΆ„μ‚°.. 2022. 2. 16.
[MacOS] mac m1 에 node μ„€μΉ˜ν•˜κΈ° νšŒμ‚¬μ—μ„œ λ“œλ””μ–΄ mac 을 λ°›μ•˜λ‹€!! (κΊ„μ•„) μƒˆλ‘œμš΄ λ…ΈνŠΈλΆμ„ λ°›μ•˜μœΌλ‹ˆ 개발 ν™˜κ²½ 섀정을 해야지.. jdk, tomcat, git, vscode, intellij λ“±λ“± homebrew install ν•˜κ³  λ‚˜μ„œ git λ‹€μš΄ λ°›κ³  μ§„ν–‰ν–ˆλ‹€. μœ„μ˜ ν™˜κ²½ μ„€μ •κΉŒμ§€λŠ” λ‚˜λ¦„ μŠ€λ¬΄μŠ€ν–ˆλŠ”λ° node κ°€ λ¬Έμ œμ˜€λ‹€. (14 버전 λ‹€μš΄λ°›μ•„μ•Ό ν–ˆμŒ) @ λ…Έλ“œ 버전 μ•ˆλ‚˜μ˜€λŠ” 문제 brew install node@14 node -v brew λͺ…λ ΉμœΌλ‘œ node μ„€μΉ˜ν•˜λ €κ³  ν–ˆλŠ”λ° zsh: command not found: node 이런 문ꡬ가 λœ¨λ©΄μ„œ node κ°€ μ œλŒ€λ‘œ μ„€μΉ˜λ˜μ§€ μ•ŠμŒμ„ μ•Œλ Έλ‹€.. 그런데 brew list 둜 λ‹€μš΄λ°›μ€ λͺ©λ‘μ„ 보면 node@14 κ°€ μžˆλ‹€. λ‹€μš΄μ΄ λ˜κΈ°λŠ” ν–ˆλŠ”λ° λ­”κ°€ 섀정을 λ”ν•΄μ€˜μ•Ό ν•˜λ‚˜ μ‹Άμ–΄μ„œ 폭풍 κ²€.. 2022. 2. 14.
[React] SPA λž€? SPA(Single Page Application) : ν•œ 개의 νŽ˜μ΄μ§€λ‘œ 이루어진 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 전톡적인 μ›Ή 방식(SSR : μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§) 은 μ‚¬μš©μžκ°€ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ 이동할 λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ html 을 λ°›μ•„μ˜€κ³  νŽ˜μ΄μ§€λ₯Ό λ‘œλ”©ν•  λ•Œλ§ˆλ‹€ μ„œλ²„μ—μ„œ λ¦¬μ†ŒμŠ€λ₯Ό 전달받아 ν•΄μ„ν•œ λ’€ 화면에 λ³΄μ—¬μ£ΌλŠ” λ°©μ‹μ΄μ—ˆλ‹€. 즉, μ‚¬μš©μžμ—κ²Œ λ³΄μ—¬μ£ΌλŠ” 화면은 μ„œλ²„μ—μ„œ μ€€λΉ„ν–ˆλ‹€. 이처럼 전톡적인 μ›Ή λŒ€λΆ€λΆ„μ€ μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§ 방식이닀. κ·ΈλŸ¬λ‚˜ μš”μ¦˜μ—λŠ” μ›Ήμ—μ„œ μ œκ³΅ν•˜λŠ” 정보가 정말 많기 λ•Œλ¬Έμ— μƒˆλ‘œμš΄ 화면을 보여쀄 λ•Œλ§ˆλ‹€ μ„œλ²„μ—μ„œ λͺ¨λ“  λ·°λ₯Ό μ€€λΉ„ν•œλ‹€λ©΄ μ„±λŠ₯μƒμ˜ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€. (νŠΈλž˜ν”½, μ„œλ²„μ— 높은 λΆ€ν•˜ λ“±) κ·Έλž˜μ„œ λ¦¬μ•‘νŠΈ 같은 라이브러리 ν˜Ήμ€ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ λ·° λ Œλ”λ§μ„ μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €κ°€ λ‹΄λ‹Ήν•˜λ„λ‘ ν•˜κ³  μš°μ„  μ• .. 2021. 11. 8.