์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค) Lv2 - 4์ฃผ์ฐจ [๋ธ”๋กœ๊ทธ - ๋น„๋™๊ธฐ ํ†ต์‹ &API / ๋Œ“๊ธ€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„] ๋ฏธ์…˜ ํ›„๊ธฐ, ์ฝ”๋“œ๋ฆฌ๋ทฐ

Lv2 - 4์ฃผ์ฐจ ๋ฏธ์…˜ : ๋น„๋™๊ธฐ ํ†ต์‹ &API / ๋Œ“๊ธ€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ https://github.com/woowacourse/jwp-blog ํ•™์Šต๋ชฉํ‘œ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ๊ฒฝํ—˜์„ ํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•œ๋‹ค. API ๋ฌธ์„œ ์ž๋™ํ™”๋ฅผ ๊ฒฝํ—˜ํ•œ๋‹ค. ๋ฏธ์…˜ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์„ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ๊ธฐ์กด์— ๊ตฌํ˜„ํ–ˆ๋˜ ๊ธฐ๋Šฅ ์ค‘ ํ•„์š”ํ•œ ๋ถ€๋ถ„์€ ๋น„๋™๊ธฐ๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ ๋Œ“๊ธ€์ƒ์„ฑ ํฌํ•จํ•ด์„œ ๋ฐ˜๋“œ์‹œ 3๊ตฐ๋ฐ ์ด์ƒ์€ ์ ์šฉํ•ด๋ณด๊ธฐ Script๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž๋™ ๋ฐฐํฌํ•˜๊ธฐ RollingFileAppender๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌํ•œ ์„œ๋ฒ„์˜ ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•˜๊ธฐ (adv) Spring REST Docs๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์„œ ์ž๋™ํ™” ํ•˜๊ธฐ (adv) ํŒŒ์ผ์ฒจ๋ถ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ (adv) ์™ธ๋ถ€ API ํ˜ธ์ถœํ•˜๊ธฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์š”์ฒญ์— ๋Œ€ํ•œ Acceptance Test๋ฅผ ๊ตฌํ˜„ํ–ˆ๋Š”๊ฐ€ H..

์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค) Lv2 - 3์ฃผ์ฐจ [๋ธ”๋กœ๊ทธ - ๋นŒ๋“œ&๋ฐฐํฌ ๊ตฌ์„ฑ / ๋Œ“๊ธ€ ๊ด€๋ จ ๊ธฐ๋Šฅ ๊ตฌํ˜„] ๋ฏธ์…˜ ํ›„๊ธฐ, ์ฝ”๋“œ๋ฆฌ๋ทฐ

Lv2 - 3์ฃผ์ฐจ ๋ฏธ์…˜ : ๋นŒ๋“œ&๋ฐฐํฌ ๊ตฌ์„ฑ / ๋Œ“๊ธ€ ๊ด€๋ จ ๊ธฐ๋Šฅ ๊ตฌํ˜„ https://github.com/woowacourse/jwp-blog ํ•™์Šต๋ชฉํ‘œ JPA๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ์ดˆ์ ์ธ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘์„ ์ดํ•ดํ•œ๋‹ค. ์›๊ฒฉ ์„œ๋ฒ„์— ๋ฐฐํฌํ•˜๋Š” ๊ฒฝํ—˜์„ ํ•œ๋‹ค. ๋ฐฐํฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•œ๋‹ค. ๋ฏธ์…˜ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์‹œ ์ž‘์„ฑ์ž ์ •๋ณด ๋ถ€์—ฌํ•˜๊ธฐ ์ž‘์„ฑ์ž๋งŒ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •/์‚ญ์ œ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ๋Œ“๊ธ€ ๊ด€๋ จ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ ์›๊ฒฉ ์„œ๋ฒ„์— ์ง์ ‘ ๋ฐฐํฌํ•˜๊ธฐ Script๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž๋™ ๋ฐฐํฌํ•˜๊ธฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•œ Acceptance Test๋ฅผ ๊ตฌํ˜„ํ–ˆ๋Š”๊ฐ€ HTML ์ค‘๋ณต ์ œ๊ฑฐํ•˜์˜€๋Š”๊ฐ€ ํ…Œ์ŠคํŠธ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์˜€๋Š”๊ฐ€ URL ์ปจ๋ฒค์…˜์„ ์ง€ํ‚ค๋ฉฐ ๊ตฌํ˜„ํ–ˆ๋Š”๊ฐ€ ๊ฒŒ์‹œ๊ธ€๊ณผ ํšŒ์› ๊ฐ„ ๊ฐ์ฒด ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์ž˜ ๋งบ์–ด์กŒ๋Š”๊ฐ€? ๋Œ“๊ธ€๊ณผ ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€๊ณผ ํšŒ์› ๊ฐ„ ๊ฐ์ฒด ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ..

ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„์˜ ๋กœ์ปฌํŒŒ์ผ์— ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ• ๊ฒƒ์ธ๊ฐ€?

์•ž์„  ๊ธ€์—์„œ ์ด์–ด์ง€๋Š” ์ž‘์—…์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„์˜ ๋กœ์ปฌ (ํ”„๋กœ์ ํŠธ ํด๋” ์™ธ๋ถ€)์— ์ด๋ฏธ์ง€๋‚˜ ๋™์˜์ƒ๊ฐ™์€ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉฐ CRUD์˜ ์—…๋กœ๋“œ๊นŒ์ง„ ์„ฑ๊ณตํ–ˆ๋‹ค. R- ํด๋ผ์ด์–ธํŠธ์—์„œ ํŒŒ์ผ์„ ์ฝ๋Š”๊ฒƒ๋„ ์„ฑ๊ณตํ• ์ค„์•Œ์•˜๋‹ค... 1. path(string)๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„์˜ ๋กœ์ปฌ ํŒŒ์ผ์— ์ ‘๊ทผํ•œ๋‹ค (-> ๋ถˆ๊ฐ€๋Šฅ) ์šฐ๋ฆฌ๋Š” DB์—์„œ filePath, fileName์„ ์ €์žฅํ•˜๊ณ ์žˆ์—ˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋Š” ํŒŒ์ผ path๋ฅผ String์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ด๋„๋ก ํ•˜์˜€๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋กœ๋”ฉ๋œ๋‹ค. ๋ฌธ์ œ๋Š” ์ด๋Ÿฐ ๊ฒฝ์šฐ, ํŒŒ์ผ์ด ์ •์ƒ์ ์œผ๋กœ ๋กœ๋“œ๋˜์ง€์•Š๊ณ , ์บก์ณํ•˜์ง„ ๋ชปํ–ˆ์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋„๊ตฌ ์ฝ˜์†”์—์„œ permisson denied์˜€๋‚˜, ์ด๋Ÿฐ ์—๋Ÿฌ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ• ์ˆ˜์žˆ๋‹ค. ์•Œ์•„๋ณด๋‹ˆ, ์˜ˆ์ „ IE์—์„  ๋˜๊ธฐ๋„ ํ–ˆ๋‹ค๊ณ  ํ•˜๋‚˜ ์ตœ๊ทผ์˜ ..

Server 2019. 9. 14. 16:05
์ด๋ฏธ์ง€์™€ ๋™์˜์ƒ ํŒŒ์ผ์€ ์–ด๋””์— ์ €์žฅํ• ๊ฒƒ์ธ๊ฐ€?

์–ด๋Š๋ง ์šฐํ…Œ์ฝ” ๋ ˆ๋ฒจ2 ๋ฏธ๋‹ˆํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์šฐ๋ฆฌํŒ€์€ ์ธ์Šคํƒ€๊ทธ๋žจ์„ ํด๋ก ํ•˜๊ธฐ๋กœํ–ˆ๊ณ , ๊ฐ€์žฅ ๋จผ์ € ๋‚ด๊ฐ€ ๋งก์€ ์ผ์€ ๊ฒŒ์‹œ๊ธ€ ๊ด€๋ จ ๊ธฐ๋Šฅ์ด๋‹ค. ์ด๋•Œ ์‚ฌ์ง„๊ณผ ๋™์˜์ƒ์„ ์—…๋กœ๋“œํ•ด์•ผํ•œ๋‹ค. ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋Š” ๊ทธ๋ƒฅ DB์— ๋„ฃ์œผ๋ฉด ๋ฌ๋Š”๋ฐ, ์ด๋ฏธ์ง€์™€ ์˜์ƒ์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ๋จผ์ € ์ด๋ฏธ์ง€๋ฅผ ๊ณ ๋ คํ•ด์„œ ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ์ƒ๊ฐํ•ด๋ดค๋‹ค. 1. S3 ์ด์šฉ ์‹ค์ œ ํ˜„์žฅ์—์„œ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์ ์  ์ „ํ™˜๋˜๋Š” ๋ถ„์œ„๊ธฐ์ธ๊ฒƒ ๊ฐ™๊ณ , ๊ฐ์ข… ๊ฑฑ์ •๊ฑฐ๋ฆฌ๋ฅผ ๋œ์–ด์ฃผ๊ณ  ํŽธํ•˜๊ฒŒ ๋˜๋Š”๊ฒƒ๊ฐ™๋‹ค. ์šฐ๋ฆฌํŒ€์€ S3 ์š”๊ธˆ๋ฌธ์ œ(๋‚˜์ค‘์—๋ณด๋‹ˆ ๊ฐ€๋Šฅํ•˜๋”๋ผ)์™€ ์ง€๊ธˆ๋‹จ๊ณ„์—์„  ๋’ค์—์„œ ๋‚˜์˜ฌ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•๋“ค์„ ๋จผ์ € ๊ฒฝํ—˜ํ•ด๋ณด๊ณ ์ž, ์ด ๋ฐฉ๋ฒ•์€ ๋ณด๋ฅ˜ํ–ˆ๋‹ค. ์ด๊ฑด ๋‚˜์ค‘์— ๊ฒฐ๊ตญ ์“ฐ๊ฒŒ๋ ๊ฒƒ๊ฐ™์•„์„œ. ๊ด€๋ จ๋œ ํ‚ค์›Œ๋“œ๋Š” "Springboot & S3"๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋งŽ์ด ๋‚˜์™€์„œ, ๋‚˜์ค‘์— s3๋ฅผ ์“ธ์ผ์ด ์ƒ๊ธฐ๋ฉด ์ฐธ๊ณ ํ•˜๋ฉด..

Server 2019. 9. 14. 15:58
FilenameUtils๋ฅผ ์ด์šฉํ•œ ํŒŒ์ผ ํ™•์žฅ์ž ๊ฒ€์‚ฌ (Apache Commons IO 2.5 API)

์›น์œผ๋กœ๋ถ€ํ„ฐ ์›ํ•˜๋Š” ํ˜•์‹์˜ ํŒŒ์ผ๋งŒ ๋ฐ›๊ณ  ์‹ถ์„ ๋•Œ, ๋‹น์—ฐํžˆ ์„œ๋ฒ„์—์„  ํ•„ํ„ฐ๋ง์„ ํ•ด์•ผ ํ•œ๋‹ค. ์‚ฌ์‹ค ํ”„๋ก ํŠธ์—์„œ๋„ (์•„๋ฌด๋ฆฌ ์–‘์‹ฌ์ด ์—†์–ด๋„) ์ตœ์†Œํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Accept ํ˜•์‹ ์ œํ•œ์€ ๊ฑธ์–ด๋†“์„๊ฒƒ์ด๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด accept๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ฒจ๋ถ€ํŒŒ์ผ ์„ ํƒํ™”๋ฉด์—์„œ ์‚ฌ์ง„๊ณผ ์˜์ƒ ํŒŒ์ผ๋งŒ ๋ณด์ธ๋‹ค. ์‚ฌ์‹ค ์ด๊ฑด ์šฐ์ธกํ•˜๋‹จ์„ "๋ชจ๋“  ํŒŒ์ผ"๋กœ ์„ ํƒํ•˜๋ฉด ๋‹ค๋ฅธ ํ˜•์‹์˜ ํŒŒ์ผ๋„ ๋ณด์—ฌ ์„ ํƒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์„ ํƒ๋œ ๋‹ค๋ฅธ ํ˜•์‹์˜ ํŒŒ์ผ์„ ์„œ๋ฒ„๋กœ submitํ•˜๊ธฐ ์ „์— ํ•œ๋ฒˆ๋” ์›ํ•˜๋Š” ํ˜•์‹์˜ ํŒŒ์ผ์ธ์ง€ ํ™•์ธํ•˜๋Š” JS ๋ฐฉ๋ฒ•์ด ๋ถ„๋ช…ํžˆ ์žˆ์„ ๊ฒƒ์ด๊ณ , ๋˜๋Š” ์• ์ดˆ์— input ํƒœ๊ทธ๋Œ€์‹  ์ข€๋” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์žˆ์ง€์•Š์„๊นŒ์‹ถ๋‹ค. ํ”„๋ก ํŠธ์—์„œ 1์ฐจ์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๋ฌผ๋ก  ์ข‹๊ณ  ๋‹ค๋“ค ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์žˆ๊ฒ ์ง€๋งŒ, ์ด๋ฒˆ์—” ์„œ๋ฒ„์—์„œ FilenameUtils (Apach..

General, Java 2019. 9. 14. 15:41
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
๊ธ€ ๋ณด๊ด€ํ•จ