๐Ÿ’ป ๊ฐœ๋ฐœ

์š”์ฆ˜ ํšŒ์‚ฌ ์—…๋ฌด๋ฅผ ๋ณด๋ฉด์„œ CS์ง€์‹์ด ๋ถ€์กฑํ•ด ์—…๋ฌด์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ์™„๋ฒฝํžˆ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ์„  ์ปดํ“จํ„ฐ ๊ตฌ์กฐ & ์šด์˜์ฒด์ œ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด ์ธํ„ฐ๋„ท์— ์˜ฌ๋ผ์™€์žˆ๋Š” ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ๋‹ค. ๊ณต๋ถ€ ๋‚ด์šฉ์€ ๋ธ”๋กœ๊ทธ์— ํ•˜๋‚˜ํ•˜๋‚˜์”ฉ ์ •๋ฆฌํ•˜๋ ค ํ•œ๋‹ค. ์šด์˜์ฒด์ œ ์ฒซ ๊ฐ•์˜ ์ค‘ ์ธํ„ฐ๋ŸฝํŠธ๋ผ๋Š” ์ƒ์†Œํ•œ ์šฉ์–ด๊ฐ€ ๋‚˜์™”๋‹ค.. ์ด๋ฒˆ ์‹œ๊ฐ„์—” ์ธํ„ฐ๋ŸฝํŠธ๋ผ๋Š” ๊ฒƒ์ด ์™œ ์กด์žฌํ•˜๋ฉฐ ๋ฌด์Šจ ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์กฐ๊ธˆ ๋” ์•Œ์•„๋ณด๊ฒ ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์šฐ์„  ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋Œ€๋žต ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž. ๐Ÿ—ฃ ๋‚˜๋Š” ์ง€๊ธˆ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์“ฐ๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘ ์ค‘์š”ํ•œ ์ „ํ™”๊ฐ€ ์˜จ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‚˜๋Š” ๊ธ€ ์“ฐ๋Š” ๊ฒƒ๋ณด๋‹ค ์ „ํ™”๋ฅผ ๋ฐ›๋Š” ํ–‰์œ„๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ์ž ์‹œ ๊ธ€์“ฐ๋˜ ๊ฒƒ์„ ๋ฉˆ์ถ”๊ณ  ํ†ตํ™”๋ฅผ ํ•˜๊ฒŒ ๋˜๊ณ , ํ†ตํ™”๊ฐ€ ๋๋‚œ ํ›„์—๋Š” ๋‹ค์‹œ ๊ธ€ ์“ฐ๋˜..
๐Ÿ“ˆ ํŠน์ • ๋ณ€์ˆ˜ ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ (JMeter Dashboard ํ™œ์šฉ) 1. ๋ณ€์ˆ˜ ์„ค์ • ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋‚ผ ๋ณ€์ˆ˜๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค. ์•„๋ž˜๋Š” ๋žœ๋ค๊ฐ’์„ ๋ณ€์ˆ˜์— ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด JSR223 Sampler๋ฅผ ์ด์šฉํ•ด sampleTime ์ด๋ผ๋Š” ๋ณ€์ˆ˜์•ˆ์— ์ž„์˜์˜ ์ •์ˆ˜๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋„๋ก ํ•˜์˜€๋‹ค. import java.util.concurrent.ThreadLocalRandom; int[] array = ThreadLocalRandom.current().ints(0, 1000).distinct().limit(5).toArray(); vars.put("sampleTime", String.valueOf(array[0])); 2. user.properties ์„ค์ • ์ปค์Šคํ…€ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ์„ ์œ„ํ•ด ์•„๋ž˜ property๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ๐Ÿš€ ํŒŒ์ผ๊ฒฝ๋กœ : (..
- Spring์œผ๋กœ ํˆฌํ‘œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ 1. ํˆฌํ‘œ ๊ธฐ๋Šฅ์— ํ•„์š”ํ•œ DB ํ…Œ์ด๋ธ” ์ž‘์„ฑ POLL ํ…Œ์ด๋ธ” : ํˆฌํ‘œ ๊ธ€์— ๋Œ€ํ•œ ๋ฒˆํ˜ธ(PK)์™€ ์ž‘์„ฑ์ž, ์ž‘์„ฑ์ œ๋ชฉ, ํˆฌํ‘œ ์‹œ์ž‘ ๋‚ ์งœ, ๋๋‚˜๋Š” ๋‚ ์งœ, ํˆฌํ‘œ ํ•ญ๋ชฉ ๊ฐœ์ˆ˜, ์ด ํˆฌํ‘œ์ˆ˜, ๊ธ€ ์ƒ์„ฑ ์‹œ๊ฐ„์„ ๋‹ด๊ณ  ์žˆ๋‹ค. POLLSUB ํ…Œ์ด๋ธ” : POLL ํ…Œ์ด๋ธ”์˜ POLLID(ํˆฌํ‘œ๊ธ€ ๋ฒˆํ˜ธ)๋ฅผ ๋ฐ›์•„์™€ ํˆฌํ‘œ ํ•ญ๋ชฉ๋“ค ๊ฐ๊ฐ์˜ ์ด๋ฆ„๊ณผ ํˆฌํ‘œ ์ˆ˜๋ฅผ ๋‹ด์•„๋‘”๋‹ค. VOTER ํ…Œ์ด๋ธ” : ID๊ฐ€ ํˆฌํ‘œํ–ˆ์„ ๋•Œ ์–ด๋–ค ํˆฌํ‘œ๊ธ€์— ์–ด๋–ค ํ•ญ๋ชฉ์„ ํˆฌํ‘œํ–ˆ๋Š”์ง€์™€ ํˆฌํ‘œํ•œ ์‹œ๊ฐ„์„ ๋‹ด์•„๋‘”๋‹ค. 2. MyBatis๋ฅผ ํ™œ์šฉํ•œ ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ Poll.xml SELECT POLLID, ID, QUESTION, SDATE, EDATE, ITEMCOUNT, POLLTOTAL, REGDATE FROM POLL ORDER BY SDATE DE..
์ด์ „ ์ดํด๋ฆฝ์Šค์—์„œ Model1 ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“ค์—ˆ๋˜ ํŒŒ์ผ ์—…๋กœ๋“œ ๊ตฌํ˜„์„ ์Šคํ”„๋ง์—์„œ ๋‹ค์‹œ ํ•ด๋ณด์•˜๋‹ค. ์ด์ „๋ณด๋‹ค ๊ฐ„ํŽธํ•ด์ง„ ์ ์€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ MultipartFile ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ file form์„ ์‰ฝ๊ฒŒ ๋”ฐ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ. ๊ธฐ๋ณธ ์„ธํŒ… 1. ๋ฉ”์ด๋ธ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์—์„œ fileupload ๊ฒ€์ƒ‰ 2. Apache Commons FileUpload์˜ maven ํƒœ๊ทธ ๊ฐ€์ ธ์™€์„œ pom.xml์— ์ž‘์„ฑ (์•„๋ž˜ ํƒœ๊ทธ) commons-fileupload commons-fileupload 1.3.3 3. /spring ํด๋”์— file-context.xml ์ž‘์„ฑ file-context.xml 0 5. web.xml์— xml ๊ฒฝ๋กœ ์ถ”๊ฐ€ dispatcher org.springframework.web.servlet.Disp..
Spring ํ”„๋ ˆ์ž„์›Œํฌ์™€ ajax๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ๋ฐฉ์‹ ์บ˜๋ฆฐ๋”๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ตฌํ˜„ ๋ฐฉ์‹์€ ์บ˜๋ฆฐ๋” ์ƒ๋‹จ์— new Date()๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ˜„์žฌ ๋…„, ์›”์„ ํ‘œ์‹œํ•˜์˜€๊ณ , ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ‘œ์‹œํ•˜๋Š” ๋…„, ์›”์˜ ์ˆซ์ž๊ฐ€ ๋ฐ”๋€” ๋•Œ ๊ทธ ํƒœ๊ทธ text๊ฐ’์„ JQuery๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์™€ ajax Data๋กœ ๋„˜๊ฒจ์ฃผ์—ˆ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ๋งˆ๋‹ค ajax๋ฅผ ์žฌํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹. ๋…„, ์›”์˜ ๊ฐ’์„ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ณด๋‚ด์–ด ํ•ด๋‹น ์›”์˜ ์Šค์ผ€์ค„์„ List ํ˜•์‹์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ , ๊ฐ ์›”์˜ ์ฒซ์งธ๋‚  ์š”์ผ, ๋งˆ์ง€๋ง‰๋‚  ์š”์ผ, ๋งˆ์ง€๋ง‰ ์ผ์ˆ˜ ๋“ฑ์„ ๊ตฌํ•ด ๊ธฐ๋ณธ form์„ ๋งŒ๋“ค๊ณ  append()๋ฅผ ํ†ตํ•ด ๋งŒ๋“  ํƒœ๊ทธ๋ฅผ ๋ฟŒ๋ ค์ฃผ์—ˆ๋‹ค. ๋…„, ์›”์ด ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ๋‚จ์•„์žˆ๋˜ ํƒœ๊ทธ๋Š” ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ฟŒ๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ƒ์„ฑ๋œ trํƒœ๊ทธ์˜ class ์ด๋ฆ„์„ ํ†ต์ผํ•˜์—ฌ remove()๋กœ ์‚ญ์ œํ•ด์ฃผ์—ˆ๋‹ค..
์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ ์งœ๋ฅผ ์ž˜๋ผ์„œ ๊ฐ€์ ธ์™”์„ ๋•Œ, 08์›”๋กœ ๊ฐ€์ ธ์˜จ ๋ฌธ์ž์—ด์„ 8์›”๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•. let month = '${param1.month}'.replace(/(^0+)/, ""); ์ •๊ทœ์‹์„ ํ™œ์šฉํ•˜์—ฌ ์•ž์— ๋ถ™์€ 0์„ ์—†์•ค๋‹ค.
String sql = " SELECT SEQ, ID, TITLE, CONTENT, RDATE, WDATE " + " FROM " + " (SELECT ROW_NUMBER()OVER(PARTITION BY SUBSTR(RDATE, 1, 8)ORDER BY RDATE ASC) AS RNUM, " + " SEQ, ID, TITLE, CONTENT, RDATE, WDATE " + " FROM CALENDAR " + " WHERE ID=? AND SUBSTR(RDATE, 1, 6)=? ) " + " WHERE RNUM BETWEEN 1 AND 5 "; ROW_NUMBER()OVER(): ์›ํ•˜๋Š” ์ปฌ๋Ÿผ๋งŒ ์ •๋ ฌํ•ด ์ˆœ๋ฒˆ์„ ๋งค๊ธด๋‹ค. PARTITION BY SUBSTR(RDATE, 1, 8) : ์—ฐ๋„/์›”/์ผ (EX 202..
AOP ( Aspect Oriented Programming ) : ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌ ์‹œ์ผœ๋†“๊ณ , ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ํ•„์š”๋กœ ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ๋“ค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ - ๊ณตํ†ต ๊ธฐ๋Šฅ๊ณผ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด ์ง์ ‘์ ์œผ๋กœ ์ ‘์ด‰ํ•˜์ง€ ์•Š๊ณ  Proxy๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜ํ–‰ - ์šฉ์–ด ์ •๋ฆฌ ํƒ€๊ฒŸ (Target) ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•  ๋Œ€์ƒ ์• ์ŠคํŽ™ํŠธ (Aspect) ๋ถ€๊ฐ€๊ธฐ๋Šฅ ๋ชจ๋“ˆ (๋ถ€๊ฐ€๋  ๊ธฐ๋Šฅ์„ ์ •์˜ํ•œ ์–ด๋“œ๋ฐ”์ด์Šค์™€ ์–ด๋“œ๋ฐ”์ด์Šค๋ฅผ ์–ด๋””์— ์ ์šฉํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํฌ์ธํŠธ์ปท์„ ํ•จ๊ป˜ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.) ์–ด๋“œ๋ฐ”์ด์Šค (Advice) ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ๋‹ด์€ ๊ตฌํ˜„์ฒด ํฌ์ธํŠธ์ปท (PointCut) ์–ด๋“œ๋ฐ”์ด์Šค๋ฅผ ์ ์šฉํ•  ์กฐ์ธํฌ์ธํŠธ๋ฅผ ์„ ๋ณ„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ •์˜ ์กฐ์ธํฌ์ธํŠธ (JoinPoint) ์–ด๋“œ๋ฐ”์ด์Šค๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜ (Spring์—์„œ๋Š” ํ”„๋ก์‹œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ..
EastShine_
'๐Ÿ’ป ๊ฐœ๋ฐœ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)