Study/cs (computer science) 7

์ฟ ํ‚ค 2๋ถ€ : ์„ธ์…˜์€ ์ฟ ํ‚ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค

์‚ฌ์šฉ์ž ์ธ์ฆ์„ ํ•  ๋•Œ, ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œ„ํ—˜ํ•ด์š”. ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š” ์„ธ์…˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ฌด์—์„œ ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž…์€ ๊ฐ€์žฅ ์‹œ์ž‘์ด์ž ๊ธฐ๋ณธ์ด ๋˜๋ฉด์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฐ€์šด๋ฐ ์‚ฌ์šฉ์ž ์ธ์ฆ์€ ์„œ๋น„์Šค์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”!! ์œ„ ๋ง์€ ๋งž๋Š” ๋ง์ผ๊นŒ์š”? ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์„œ๋กœ ๋Œ€๋ฆฝํ•˜๊ฑฐ๋‚˜ ์„ธ์…˜์ด ์ฟ ํ‚ค๋ฅผ ๋Œ€์‹ ํ•˜๋Š” ๊ธฐ์ˆ ๋กœ ์˜คํ•ดํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹คใ… ใ… ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์ฟ ํ‚ค์™€ ์„ธ์…˜์— ๋Œ€ํ•œ ์˜คํ•ด๋ฅผ ํ’€๊ณ  ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ๋ฐ–์— ์—†๋Š” ์ด์œ ์™€ ์„ธ์…˜์„ ํ†ตํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!! (์ง€๋‚œ ๋‚ด์šฉ๊ณผ ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์ด๋‹ˆ ์•„์ง ๋ชป๋ณด์…จ๋‹ค๋ฉด ๋‹ค๋…€์˜ค์„ธ์š”๐Ÿ˜†) https://printf-hellojudyworld.tistory.com/84#comment152683..

์ฟ ํ‚ค 1๋ถ€ : HTTP๋กœ ์„ค๋ช…ํ•˜๋Š” ์ฟ ํ‚ค

์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๊ณ … ์Œ.. ๋ณด์•ˆ์— ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - ๊ทธ๋Ÿผ ๋ณด์•ˆ์„ ์œ„ํ•ด์„œ ์ฟ ํ‚ค๋Š” ์•ˆ ์“ฐ๋Š” ๊ฒŒ ์ข‹๊ฒ ๋„ค์š”? ์ฟ ํ‚ค๊ฐ€ ์–ด๋–ป๊ฒŒ ์„œ๋ฒ„์™€ ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์— ์ด๋™์„ ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ฟ ํ‚ค์˜ ์œ ํšจ ๊ธฐ๊ฐ„๊ณผ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ฟ ํ‚ค์˜ ํ•œ๊ณ„์™€ ๋Œ€์ฒด ๊ธฐ์ˆ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. HTTP ์ฟ ํ‚ค(=๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค, ์›น ์ฟ ํ‚ค)๋ž€? HTTP ์ฟ ํ‚ค(cookie)๋Š” ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ธŒ๋ผ์šฐ์ € ์ธก์— ์ €์žฅํ•œ ํ›„ ๋‹ค์‹œ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ธฐ์ˆ , ๋˜๋Š” ๊ทธ ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฌ๋‹ค๋Š” ๊ฒƒ์— ์ƒ์†Œํ•˜์‹ค ์ˆ˜ ์žˆ์ง€๋งŒ, ์„œ๋น„์Šค์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋งค๋ฒˆ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์ด ๋น„ํšจ์œจ์ ์ผ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ด๋•Œ, HTTP ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ”ฅ์—ฌ๊ธฐ์„œ ์ž ๊น ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด์„œ..

equals() ์™€ hashCode() ๋™์ผ์„ฑ๊ณผ ๋™๋“ฑ์„ฑ, ์™„์ „๋ฒ”์ฃ„ํ•˜๊ธฐ

์ž๋ฐ”์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Objectํด๋ž˜์Šค์—๋Š” equals() ์™€ hashCode() ๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋“ค์€ ๊ฐ๊ฐ ์–ด๋–ค ์—ญํ• ์ผ๊นŒ์š”? ์ด ๋‘˜์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”? equals()์™€ hashCode() ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ค‘์š”ํ•œ ๋ฉ”์„œ๋“œ๋กœ, ๊ฐ์ฒด ๊ฐ„์˜ ๋™์ผ์„ฑ๊ณผ ๋™๋“ฑ์„ฑ์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๋™์ผ์„ฑ์€ Identity = ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์ฃผ์†Œ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๋™๋“ฑ์„ฑ์€ Equality = ๋…ผ๋ฆฌ์  ์ง€์œ„๊ฐ€ ๋™๋“ฑํ•œ์ง€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, ์• ํ”Œ ๏ฃฟ ์•„์ดํฐ์ด 2๋Œ€์žˆ๋‹ค. ๋‘ ํœด๋Œ€ํฐ์€ ๊ธฐ์ข…๋„ ๊ฐ™๊ณ  ๋™์ผํ•œ ์ƒ‰์ƒ ๋™์ผํ•œ ์ŠคํŽ™์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ๋‘ ๊ฐœ์˜ ํœด๋Œ€ํฐ์€ ๋™์ผํ•œ๊ฐ€? ๋‹ต์€ ์•„๋‹ˆ๋‹ค. ํœด๋Œ€ํฐ์€ ๊ฐ ๊ธฐ๊ธฐ๋งˆ๋‹ค ๊ณ ์œ  ์ฃผ์†Œ๊ฐ€ ์žˆ๊ณ  ์•„์ดํฐ..

REST API/RESTful API Design Guide/REST ๋””์ž์ธ ํŒจํ„ด/Http Methods ๋Š” ๋ฌด์—‡์ธ๊ฐ€ #2

REST์˜ ๊ฐœ๋…์„ ์ดํ•ดํ–ˆ๋‹ค๋ฉด ์ด์   REST API์˜ ๋””์ž์ธ์„ ์‚ดํŽด๋ณด๊ณ ์ž ํ•œ๋‹ค. REST API Design Guide 1) URL์— Resource๋ฅผ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค. GET /members/1 Resource๋Š” ๋™์‚ฌ๋ณด๋‹ค๋Š” ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋Œ€๋ฌธ์ž๋ณด๋‹ค๋Š” ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•ด์•ผ ํ•˜๊ณ , document(๋„ํ๋จผํŠธ) ์ด๋ฆ„์œผ๋กœ๋Š” ๋‹จ์ˆ˜ ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. collection๊ณผ store์˜ ๋ช…์€ ๋ณต์ˆ˜ ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 2) Resource์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” Http Method (GET, POST, PUT, DELETE)๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์ด๋•Œ, URL์— Http Method๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ ๋œ๋‹ค. ๋˜ํ•œ URL ํ–‰์œ„์— ๋Œ€ํ•œ ๋™์‚ฌ ํ‘œํ˜„์ด ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ ๋œ๋‹ค. CRUD ๊ธฐ๋Šฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์€ URL์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค..

REST API/RESTful API๋ž€/Representational State Transfet API/REST ๋””์ž์ธํŒจํ„ด ์“ฐ๋Š” ์ด์œ  #1

[๊ณต๊ณ ] Front-end ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ ์ €ํฌ ํšŒ์‚ฌ๋Š” HTTP, RESTful API ํด๋ผ์ด์–ธํŠธ๋ฅผ RESTful ํ•˜๊ฒŒ ๊ฐœ๋ฐœํ•  ์ค„ ์•„๋Š” ์‚ฌ๋žŒ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œ 3๋ช… ์ด์ƒ์˜ ๊ฐœ๋ฐœํŒ€์ด ์žˆ๋Š” ํšŒ์‚ฌ๊ฐ€ ํ”„๋ŸฐํŠธ์—”๋“œ(Front-end) ๊ฐœ๋ฐœ์ž๋ฅผ ์ฑ„์šฉํ•  ๋•Œ ์กฐ๊ฑด ๋ฐ ์ž๊ฒฉ์š”๊ฑด์— ๋Œ€๋ถ€๋ถ„ ์ ํ˜€์žˆ๋Š” ๋ง์ด๋‹ค. ํ•™๋ถ€ ๋•Œ๋ถ€ํ„ฐ 'REST API๋กœ ์„œ๋น„์Šคํ•ด์•ผ ํ•œ๋‹ค.', '์ข‹์œผ๋‹ˆ๊นŒ ์จ์•ผ ํ•œ๋‹ค.'๋Š” ๋ง์„ ์ข…์ข… ๋“ฃ๊ณค ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜์—๊ฒŒ REST API๊ฐ€ ๋ญ”๋ฐ? ์™œ ์จ์•ผ ํ•˜๋Š”๋ฐ?๋ผ๊ณ  ๋ฌป๋Š”๋‹ค๋ฉด ๋Œ€๋‹ตํ•  ์ˆ˜ ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค. ์•„๋งˆ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋“ค ์ค‘์—์„œ๋„ REST API๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์ƒ๋Œ€๋ฅผ ์ดํ•ด์‹œํ‚ฌ ์ •๋„์˜ ๊ฐœ๋…์„ ์•Œ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๊ฑฐ์˜ ์—†์„ ๊ฒƒ์ด๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๋ƒฅ "ํด๋ผ์ด์–ธํŠธ(Client)์™€ ์„œ๋ฒ„(Server) ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ..

๋นŒ๋“œ(Build)/Jankins ์  ํ‚จ์Šค/CI๋„๊ตฌ ์จ์•ผํ•˜๋Š” ์ด์œ 

์˜ค๋Š˜ ์ˆ˜์ •์‚ฌํ•ญ ์„œ๋ฒ„์— ๋ฐ˜์˜(Deploy)ํ•ด์•ผ๋˜๋‹ˆ๊นŒ ๋นŒ๋“œ(๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„๊ณผ์ •)๊นŒ์ง€ ์™„์„ฑ์‹œ์ผœ๋†”. ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ์ข…์ข… ์ด๋Ÿฐ ๋ง์„ ๋“ฃ๊ฒŒ๋ฉ๋‹ˆ๋‹ค. Jenkins ๊ฐ€ ๋ฌด์—‡์ธ์ง€๋„ ์ž˜ ๋ชจ๋ฅด๋Š”๋ฐ ๋ฌด์ž‘์ • ์‚ฌ์šฉ๋ฒ•๋งŒ ์ตํ˜€ ์ดํ•ดํ•ด์•ผํ–ˆ๋˜ ์‹œ๊ฐ„์„ ๋˜๋Œ๋ ค ๊ทธ ์˜๋ฏธ์™€ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค. Build? ๋นŒ๋“œ๋ž€ Jenkins๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ๋นŒ๋“œ์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค. ๋นŒ๋“œ๋Š” ์„œ๋ฒ„์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ. ์˜ˆ๋ฅผ๋“ค์–ด SpringBoot ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Maven์ด๋‚˜ Gradle๋กœ ๋นŒ๋“œํ•˜์—ฌ .jar์ด๋‚˜ .war๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋นŒ๋“œ ํˆด์˜ ๊ฒฝ์šฐ Java๋Š” Maven๊ณผ Gradle์ด ์ž๋ฆฌ์žก๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๋นŒ๋“œ ๊ด€๋ฆฌ ํˆด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋นŒ๋“œ ์ž๋™ํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์ฆ‰, ์  ํ‚จ์Šค์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋ผ๊ณ  ์ดํ•ดํ•ด๋„ ..

ํ”„๋ ˆ์ž„์›Œํฌ(Framework)์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)์˜ ์ฐจ์ด๋Š”? - 1ํƒ„

ํ•™๋ถ€ ๋•Œ๋ถ€ํ„ฐ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋Š๋‚Œ์œผ๋กœ๋Š” ๋ญ”์ง€ ์•Œ๊ฒ ์œผ๋‚˜ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜๋Š” ์—†์—ˆ๋‹ค. ๋‹จ์ˆœํžˆ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ผˆ๋Œ€๋‹ค. ์ด๊ฑธ ์™œ ์ดํ•ด ๋ชป ํ•ด?๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ๋†€๋ž๊ฒŒ๋„ ๋‚˜์—๊ฒ 2๋…„๊ฐ„ ์™€๋‹ฟ์ง€ ์•Š๋Š” ์˜๋ฏธ์˜€๊ธฐ์— ์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด ํ™•์‹คํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” springboot ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์“ฐ๊ณ ... jquery ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉํ•ด์„œ... ๊ทธ๋ž˜์„œ ๋‘˜ ์ฐจ์ด๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ๋ญ์˜ˆ์š”? ์‰ฝ๊ฒŒ ๋งํ•ด ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. ์ฒ˜์Œ ์ดํด๋ฆฝ์Šค๋‚˜ ์Šคํ”„๋ง์„ ์ผœ์„œ [File]-[New]-[Maven Project]๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Group Id๋ถ€ํ„ฐ Artifact Id ๋“ฑ ๋งŽ์€ ๊ฒƒ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ง€์ •ํ•˜๊ณ  ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ, ๋งŒ์•ฝ ๊ฐ™์€ ํŒจํ„ด์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๊ฐ™์€ ๊ตฌ..