개발ꡬ리🐸

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

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

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

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

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

μ•ˆλ…•ν•˜μ„Έμš” 🐸 λΆ„λͺ… μ œλ„€λ¦­ 곡식 λ¬Έμ„œλ₯Ό 보고 λ‚΄μš©λ„ μ •λ¦¬ν•˜λ©΄μ„œ μˆ˜λ°• 겉ν•₯κΈ° 식이라도 얼핏 μ΄ν•΄ν•œ μ‹œλŠ‰μ •λ„λŠ” ν–ˆλ‹€ μƒκ°ν–ˆλŠ”λ° μ €λŠ” ν•œλ‚± λ²”λΆ€μ˜€μŒμ„ 깨달은 μ˜€λŠ˜μž…λ‹ˆλ‹€. 문제 ν™˜κ²½ μ—¬κΈ° 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 μ—μ„œ ...

식별관계와 비식별관계

μ•ˆλ…•ν•˜μ„Έμš” 🐸 μ˜€λŠ˜μ€ λ°μ΄ν„°λ² μ΄μŠ€ μ—”ν„°ν‹° κ°„μ˜ 식별관계와 비식별관계에 λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 식별 관계 μžμ‹ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€(PK)에 λΆ€λͺ¨ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€κ°€ ν¬ν•¨λ˜μ–΄ μžˆλŠ” 관계 μ•„λž˜λŠ” μ˜ˆμ‹œλ₯Ό μœ„ν•œ ν…Œμ΄λΈ” ꡬ쑰 μž…λ‹ˆλ‹€. λΆ€λͺ¨ ν…Œμ΄λΈ” : μ‚¬μš©μž μ‚¬μš©μž ID (PK) λΆ€λͺ¨ ν…Œμ΄λΈ” : κ²Œμ‹œκΈ€ κ²Œμ‹œκΈ€ ID (PK...

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

μ•ˆλ…•ν•˜μ„Έμš” 🐸 express.js 의 λ‹¨μœ„ν…ŒμŠ€νŠΈ 라이브러리인 jest 에 λŒ€ν•΄ μ •λ¦¬ν•˜κ² μŠ΅λ‹ˆλ‹€. Jest λž€? express.js μ—μ„œ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” ν…ŒμŠ€νŠΈ 라이브러리. ν…ŒμŠ€νŠΈ 파일 생성 기쑴의 파일λͺ…에 .test ν˜Ήμ€ .spec 을 μ—°κ²°ν•˜λ©΄ ν•΄λ‹Ή 파일의 ν…ŒμŠ€νŠΈ 파일둜써 μ‚¬μš©λ©λ‹ˆλ‹€. μ˜ˆμ‹œ) index.js 의 ν…ŒμŠ€νŠΈ 파일 index...

express에 swagger μ μš©ν•˜κΈ°

μ•ˆλ…•ν•˜μ„Έμš” 🐸 κ°•μ˜ 쀑 μŠ€μ›¨κ±° μ—°λ™ν•˜κΈ°λΌλŠ” 과제λ₯Ό ν•΄λ³΄λ©΄μ„œ swagger-autogen μ΄λΌλŠ” 라이브러리λ₯Ό μ‚¬μš©ν•΄λ΄€λŠ”λ° 이 λ‚΄μš©μ„ μ •λ¦¬ν•©λ‹ˆλ‹€. Swagger λž€? RESTful API λ₯Ό λ¬Έμ„œν™”ν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€. λ¬Έμ„œν™”λœ APIλŠ” Swagger ui λ₯Ό 톡해 직접 ν…ŒμŠ€νŠΈν•΄λ³΄κ³  μš”μ²­/μ‘λ‹΅μ˜ ν˜•μ‹κ³Ό HTTP STATUS μƒνƒœμ— λ”°λ₯Έ 응닡 κ°’μ˜ ν˜•νƒœλ₯Ό ν™•...

MySQL μ„€μΉ˜ μ—λŸ¬

μ•ˆλ…•ν•˜μ„Έμš” 🐸 κ³΅λΆ€ν•˜λŠ” λ…ΈνŠΈλΆ μž₯λΉ„λ₯Ό λ°”κΎΈκ²Œ λ˜μ–΄ μƒˆλ‘­κ²Œ MySQL을 μ„€μΉ˜ν•˜λ‹€ 생긴 μ—λŸ¬ λ‚΄μš©κ³Ό ν•΄κ²° 방법을 κ³΅μœ ν•©λ‹ˆλ‹€. μ—λŸ¬ μœ„μ˜ ν™”λ©΄ 처럼 Initializing database λ‹¨κ³„μ—μ„œ μ—λŸ¬κ°€ λ°œμƒν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. Log νƒ­μ—μ„œλŠ” μ•„λž˜μ˜ λ‘œκ·Έκ°€ λ‚¨μ•˜μŠ΅λ‹ˆλ‹€. Successfully added the Windows Firewall rule...

미듀웨어 ν™•μž₯ νŒ¨ν„΄κ³Ό ν•¨μˆ˜ 체이닝

μ•ˆλ…•ν•˜μ„Έμš” 🐸 미듀웨어 ν™•μž₯νŒ¨ν„΄κ³Ό ν•¨μˆ˜ 체이닝에 λŒ€ν•΄ μ•Œμ•„λ³΄κ³  μ •λ¦¬ν•˜κ² μŠ΅λ‹ˆλ‹€ ν•¨μˆ˜ 체이닝 ν•¨μˆ˜λ₯Ό μ—°κ²°ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 방법 μž…λ‹ˆλ‹€. μ–΄λ– ν•œ 리턴 값이 ν•¨μˆ˜λ©΄ μ΄μ–΄μ„œ νŒŒλΌλ―Έν„°λ₯Ό λΆ™μ—¬μ£ΌλŠ” κ²ƒμœΌλ‘œ μ΄μ–΄μ„œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ˜ˆμ‹œλ‘œ μ•„λž˜μ™€ 같이 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. function middleware(test){ console.log('test ...