개발ꡬ리🐸

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

μ•ˆλ…•ν•˜μ„Έμš” 🐸 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...

μŠ¬λž™ 봇 DM 보내기

μ•ˆλ…•ν•˜μ„Έμš” 🐸 μ˜€λŠ˜μ€ μŠ¬λž™ 봇을 λ§Œλ“€κ³  DM을 λ³΄λ‚΄λŠ” 방법에 λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μš°λ¦¬κ°€ ν”νžˆ β€˜λ΄‡β€™ 이라고 λΆ€λ₯΄λŠ” 것이 νŽ˜μ΄μ§€ λ‚΄μ—μ‚¬λŠ” App 이라고 뢈리고 μžˆμœΌλ‹ˆ μ•žμœΌλ‘œλŠ” 봇이라고 λΆ€λ₯΄κ² μŠ΅λ‹ˆλ‹€. μŠ¬λž™ 봇 λ§Œλ“€κΈ° https://api.slack.com/apps/ μœ„ λ§ν¬μ—μ„œ 봇을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½ μ›Œν¬μŠ€νŽ˜μ΄μŠ€κ°€ μ—†λ‹€λ©΄ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λΆ€...

μ—…λ¬΄μ—μ„œ μ œλ„€λ¦­μ„ 잘λͺ» μ“°κ³  μžˆλŠ” 상황 뢄석

μ•ˆλ…•ν•˜μ„Έμš” 🐸 λΆ„λͺ… μ œλ„€λ¦­ 곡식 λ¬Έμ„œλ₯Ό 보고 λ‚΄μš©λ„ μ •λ¦¬ν•˜λ©΄μ„œ μˆ˜λ°• 겉ν•₯κΈ° 식이라도 얼핏 μ΄ν•΄ν•œ μ‹œλŠ‰μ •λ„λŠ” ν–ˆλ‹€ μƒκ°ν–ˆλŠ”λ° μ €λŠ” ν•œλ‚± λ²”λΆ€μ˜€μŒμ„ 깨달은 μ˜€λŠ˜μž…λ‹ˆλ‹€. 문제 ν™˜κ²½ μ—¬κΈ° 2개의 VO ν΄λž˜μŠ€κ°€ μžˆμŠ΅λ‹ˆλ‹€. vo |-MyVO |-YourVO 각각의 클래슀 κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. // File : MyVO public class MyV...

ꡐ차 μ—”ν‹°ν‹° (Intersection Entity)

μ•ˆλ…•ν•˜μ„Έμš” 🐸 μ˜€λŠ˜μ€ ꡐ차 μ—”ν‹°ν‹°(Intersection Entity) 에 λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. ꡐ차 μ—”ν‹°ν‹° (Intersection Entity) RDB μ—μ„œλŠ” μ§μ ‘μ μœΌλ‘œ ν…Œμ΄λΈ”κ°„μ˜ N:M 관계λ₯Ό ν‘œν˜„ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 데이터 μ •κ·œν™” 원칙을 μ§€ν‚€μ§€ μ•ŠλŠ”λ‹€λ©΄ μ–΅μ§€λ‘œλŠ” κ°€λŠ₯ν•˜κ² μ§€λ§Œ κ·Έλ ‡κ²Œ ν•  μ΄μœ λ„ μ—†μŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄μ†Œν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 것이...

supertest 둜 톡합 ν…ŒμŠ€νŠΈ ν•˜κΈ°

μ•ˆλ…•ν•˜μ„Έμš” 🐸 supertest 라이브러리λ₯Ό 톡해 톡합 ν…ŒμŠ€νŠΈ ν•˜λŠ” 방법을 μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. supertest ν†΅ν•©ν…ŒμŠ€νŠΈλ₯Ό ν•˜κΈ° μœ„ν•œ 라이브러리둜 라우트λ₯Ό ν…ŒμŠ€νŠΈ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ„€μΉ˜ 방법 npm i -D supertest μ‚¬μš© 방법 supertest λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•œ μž‘μ—…μ„ λͺ‡ λ‹¨κ³„λ‘œ μš”μ•½ν•˜μžλ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. app.js μ—μ„œ ...