개발ꡬ리🐸

λ§ˆν¬λ‹€μš΄ 문법 정리

제λͺ© # 의 갯수만큼 html 의 <h1> 의 μˆ«μžμ— ν•΄λ‹Ήν•˜λŠ” 역할을 ν•˜κ³  # 뒀에 곡백을 λ„£μ–΄μ•Ό ν•©λ‹ˆλ‹€ # 제λͺ©1 ## 제λͺ©2 ### 제λͺ©3 #### 제λͺ©4 ##### 제λͺ©5 ###### 제λͺ©6 제λͺ©1κ³Ό 제λͺ©2 λ ˆλ²¨μ€ μ•„λž˜μ²˜λŸΌ λŒ€μ²΄κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€ # 제λͺ©1 은 μ•„λž˜λ‘œ λŒ€μ²΄ κ°€λŠ₯ 제λͺ©1 === ## 제λͺ©2 은 μ•„λž˜λ‘œ λŒ€μ²΄ κ°€λŠ₯...

μ‹œν€„λΌμ΄μ¦ˆ increment와 decrement

μ•ˆλ…•ν•˜μ„Έμš” 🐸 μ‹œν€„λΌμ΄μ¦ˆμ™€ 같은 ORM은 직접 쿼리λ₯Ό μž‘μ„±ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” μž₯점이 μžˆλŠ” 반면, λ³΅μž‘ν•œ 쿼리 μž‘μ—…μ€ μ–΄λ ΅λ‹€λŠ” 단점이 μžˆλŠ”λ°μš”. κ·Έλž˜μ„œ μ‹œν€„λΌμ΄μ¦ˆμ—μ„œλŠ” literal() 을 톡해 직접적인 쿼리 μž‘μ„±μ„ 돕기도 ν•©λ‹ˆλ‹€. UPDATE κ΅¬λ¬Έμ—μ„œ 컬럼 κ°’μ˜ 증가/κ°μ†Œλ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ literal() 을 μ‚¬μš©ν•˜κΈ°λ„ ν•˜λŠ”λ°μš”, 이 λ–„ λŒ€μ‹ ν•΄μ„œ ...

λ…Έλ“œ μŠ€μΌ€μ₯΄ μ‚¬μš©ν•˜κΈ°

μ•ˆλ…•ν•˜μ„Έμš” 🐸 μ˜€λŠ˜μ€ node-schedule λ―Έλ“€μ›¨μ–΄μ˜ μ‚¬μš© 방법에 λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. node-schedule μ„œλ²„κ°€ μŠ€μΌ€μ₯΄λ§ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” λ―Έλ“€μ›¨μ–΄μž…λ‹ˆλ‹€. μž₯점 μ„œλ²„ λ‹¨μœ„μ—μ„œ μŠ€μΌ€μ₯΄λ§ μž‘μ—…μ„ 처리 κ°€λŠ₯ 단점 μ„œλ²„ λ‹€μš΄λ˜λ©΄ μŠ€μΌ€μ₯΄λ§ 데이터가 μœ μ‹€ κ΅¬ν˜„ν•˜κΈ° μ„€μΉ˜ npm i node-schedule ...

SSE μ‚¬μš©ν•˜κΈ°

μ•ˆλ…•ν•˜μ„Έμš” 🐸 SSE(Server-Sent-Event) μ„œλ²„μ˜ 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ³΄λ‚΄λŠ” 이벀트 μž…λ‹ˆλ‹€. μ‹€μ‹œκ°„ ν†΅μ‹ μ΄λΌλŠ” 점은 μ›Ήμ†ŒμΌ“κ³Ό μœ μ‚¬ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ SSEλŠ” μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ³΄λ‚΄λŠ” 단방ν–₯ ν†΅μ‹ λ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€. μ‹€μ‹œκ°„ 톡신은 ν•„μš”ν•˜μ§€λ§Œ μ–‘λ°©ν–₯일 ν•„μš”λŠ” μ—†λŠ” 경우 μ μ ˆν•˜κ²Œ μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€. κ΅¬ν˜„ν•˜κΈ° κ΅¬ν˜„ 방법은 μ›Ήμ†ŒμΌ“μ˜ κ΅¬ν˜„...

크둬과 μ—£μ§€μ˜ μ›Ήμ†ŒμΌ“ μ—°κ²°/ν•΄μ œ μˆœμ„œ 문제 뢄석

μ•ˆλ…•ν•˜μ„Έμš” 🐸 Node.js κ°•μ˜λ₯Ό λ“€μœΌλ©΄μ„œ μ›Ήμ†ŒμΌ“μ— λŒ€ν•΄ 곡뢀 쀑 μ΄μƒν•œ 문제λ₯Ό λ§Œλ‚¬μŠ΅λ‹ˆλ‹€. λ°°κ²½ 상황 /chat , /room 으둜 λ‚˜λ‰˜μ–΄μ§„ λ„€μž„μŠ€νŽ˜μ΄μŠ€κ°€ μžˆλ‹€. 각각 /chat 은 μ±„νŒ…λ°©μ— μ—°κ²°λ˜λŠ” μ†ŒμΌ“μ„ κ΄€λ¦¬ν•˜κ³  /room 은 μ±„νŒ…λ°© λͺ©λ‘μ— μ—°κ²°λ˜λŠ” μ†ŒμΌ“μ„ κ΄€λ¦¬ν•œλ‹€. μ±„νŒ…λ°©μ—μ„œ λͺ¨λ“  μœ μ €κ°€ 방을 λ‚˜κ°€λ©΄ ν•΄λ‹Ή 방은 μ‚­μ œλ˜κ³  μ‚¬μš©μžλŠ” λ©”μΈνŽ˜μ΄...

λͺ½κ³ DB μ—°κ²° μ—λŸ¬ MongoParseError: option usecreateindex is not supported

μ•ˆλ…•ν•˜μ„Έμš” 🐸 μ‚°λ„˜μ–΄ μ‚°μž…λ‹ˆλ‹€. μ΄λ²ˆμ—λŠ” MongoParseError: option usecreateindex is not supported λΌλŠ” μ—λŸ¬κ°€ λœ¨λ„€μš” usecreateindex λΌλŠ” μ˜΅μ…˜μ΄ 지원이 μ•ˆλœλ‹€λ‹ˆ 그러면 뭐 없어진건지 λ‹€λ₯Έκ±Έλ‘œ λŒ€μ²΄κ°€ λœκ±΄μ§€μ— λŒ€ν•œ μžμ„Έν•œ μ„€λͺ…이 μ—†κΈΈλž˜ κ³΅μ‹λ¬Έμ„œλ₯Ό λ“€μ–΄κ°€μ„œ κ²€μƒ‰ν•΄λ΄€μŠ΅λ‹ˆλ‹€. useNewUrl...

λͺ½κ³ DB μ—°κ²° μ—λŸ¬ MongooseError: Mongoose.prototype.connect() no longer accepts a callback

μ•ˆλ…•ν•˜μ„Έμš” 🐸 곡뢀쀑 MongooseError: Mongoose.prototype.connect() no longer accepts a callback 이런 μ—λŸ¬λ₯Ό κ²ͺμ—ˆμŠ΅λ‹ˆλ‹€. λ³΄μ•„ν•˜λ‹ˆ μ½œλ°±ν˜•μ‹μ€ 더 이상 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것 κ°™λ„€μš”πŸ€” κ·Έλž˜μ„œ μ†ŒμŠ€λ₯Ό λ³΄λ‹ˆ μ•„λž˜μ²˜λŸΌ μ£Όμ„μ—μ„œ 링크도 μ—°κ²°λ˜μ–΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€ Β  /** Opens Mongoose's def...

Socket.IO λͺ¨λ“ˆ μ‚¬μš©ν•˜κΈ°

Socket.IO λͺ¨λ“ˆ κ°œλ°œμžκ°€ μ›Ήμ†ŒμΌ“μ„ 보닀 κ°„νŽΈν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” λͺ¨λ“ˆμž…λ‹ˆλ‹€. ws 보닀 νŽΈμ˜μ„±μ΄ λŒ€ν­ κ°œμ„ λ˜μ—ˆκΈ°μ— 개발이 μˆ˜μ›”ν•©λ‹ˆλ‹€. μ„€μΉ˜ npm i socket.io μ‚¬μš© 방법 기쑴의 ws λ₯Ό μ‚¬μš©ν•  λ•Œ μ„€μ •ν–ˆλ˜ socket.js 파일의 λ‚΄μš©μ„ μˆ˜μ •ν•΄μ•Όν•©λ‹ˆλ‹€. const SocketIO = require('socket.io'); mod...

ws둜 μ›Ήμ†ŒμΌ“ μ‚¬μš©ν•˜κΈ°

μ•ˆλ…•ν•˜μ„Έμš” 🐸 μ›Ήμ†ŒμΌ“μ„ μ‚¬μš©ν•˜λŠ” 방법 쀑 ws λ₯Ό μ‚¬μš©ν•˜λŠ” 방법에 λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μ„€μΉ˜ npm i ws μ›Ήμ†ŒμΌ“ 파일 μž‘μ„± μ„œλ²„κ°€ ws ν”„λ‘œν† μ½œμ— 응닡할 수 μžˆλ„λ‘ ν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€. 그리고 μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ©”μ„Έμ§€λ₯Ό λ³΄λ‚΄λŠ” λ‚΄μš©μ΄ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. const WebSoket = require('ws'); module.exports...

Artillery μ‚¬μš©ν•˜κΈ°

μ•ˆλ…•ν•˜μ„Έμš” 🐸 μ˜€λŠ˜μ€ Artillery λ₯Ό 톡해 λΆ€ν•˜ ν…ŒμŠ€νŠΈ ν•˜λŠ” 법을 μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μ €λŠ” CLIλ₯Ό 톡해 ν…ŒμŠ€νŠΈ ν•˜λŠ” 것을 기본으둜 ν•˜μ—¬ μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. μ„€μΉ˜ npm i -D Artillery ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„  λΆˆν•„μš”ν•˜λ‹ˆ -D μ˜΅μ…˜μ„ λΆ™μ—¬μ€μ‹œλ‹€. μ‚¬μš©λ²• CLI μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λͺ…λ Ήμ–΄λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. run run-lamb...