PMD. AvoidInstantiatingObjectsInLoops์— ๋Œ€ํ•ด์„œ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋Š”์ง€์š”?

580 views
Skip to first unread message

์ž„์„ฑํ˜„

unread,
Oct 28, 2010, 4:04:09โ€ฏAM10/28/10
to Korea Spring User Group
PMD(http://pmd.sf.net)์—์„œ ๊ถŒ๊ณ ํ•˜๋Š” ๋ฃฐ์…‹์„ ๋ณด๋ฉด ์ •๋ง ์ด๋Ÿฐ ๊ฒƒ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”์ง€..? ๋ผ๋Š” ์ชผ์ž”ํ•œ ๋ฃฐ ๋ถ€ํ„ฐ
์„ค๋งˆ ์ด๋Ÿฐ ๊ฒƒ๋„ ์‹ค์ˆ˜ํ• ๊นŒ ์‹ถ์€ ๋‚ด์šฉ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.(์ž์„ธํ•œ ์‚ฌํ•ญ์€ ์ถ”ํ›„์—.)

๊ทธ ์ค‘์— ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ๊ณผ ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ ์˜๊ฒฌ์ด ๋ถ„๋ถ„ํ•œ ๋ฃฐ์ด AvoidInstantiatingObjectsInLoops ์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ์„ค๋ช…์„ ์‚ดํŽด๋ณด๋ฉด,..

** AvoidInstantiatingObjectsInLoops
------------------------------------------------------------------------------------------------------------
Since: PMD 2.2
Detects when a new object is created inside a loop
This rule is defined by the following Java
class:net.sourceforge.pmd.rules.optimization.AvoidInstantiatingObjectsInLoops
Example:


public class Something {
public static void main( String as[] ) {
for (int i = 0; i < 10; i++) {
Foo f = new Foo(); //Avoid this whenever you can it's really
expensive
}
}
}
------------------------------------------------------------------------------------------------------------

์ด๋ผ๊ณ  ๋‚˜์˜ค๊ณ , Optimization Rule์— ํ•ด๋‹นํ•˜๋Š” ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ๋ง์”€๋“œ๋ ค์„œ loop์•ˆ์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ๋ฃจํ”„ ๋ฐ–์—์„œ ์ƒ์„ฑํ•˜๊ณ  ์žฌํ™œ์šฉํ•˜๋ผ๋Š” ์˜๋ฏธ์ธ๋ฐ.

์•„๋ž˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ•œ๋ฒˆ ๋ณด์‹œ์ฃ .(Service์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ž…๋‹ˆ๋‹ค.)

public List sampleAbcList(List inList){//DB์—์„œ DVO์— ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ List๋กœ ์ „๋‹ฌ
List returnList = new ArrayList();
Iterator itr = inList.iterator();
while(itr.hasNext()){
//๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•จ
AbcDVO dvo = new AbcDVO(); //--------(1)
dvo = (AbcDVO) itr.next();
dvo.setLoginEpno(session.getLognEpno());
dvo.setScnId(session.getScnId());
dvo.setLastChgPsEpno(session.getEpno());
returnList.add(dvo);
}
return returnList;
}

์œ„์˜ ๊ฒฝ์šฐ, inList๋Š” DB์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ ๋‚ด์šฉ์ด๊ณ , ์ด๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•ด์„œ ๋‹ค์‹œ ๋„ฃ๋Š” ๊ฒฝ์šฐ์ธ๋ฐ..
์ด ๊ฒฝ์šฐ ์ฒ˜์Œ ๋ง์”€๋“œ๋ฆฐ Rule์„ ํ™œ์šฉํ•ด์„œ ๊ฐ์ฒด์ƒ์„ฑ(1)์„ while ๋ฐ–์—์„œ ์ƒ์„ฑํ•ด์„œ ์žฌํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค ๋ผ๊ณ  ๊ฐ€์ด๋“œํ•˜๋Š” ๊ฒƒ์ด
1) ๋ฌธ์ œ์ ์ด ์—†๋Š”์ง€
2) ์ด๋“์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€
๋ผ๋Š” ์ธก๋ฉด์ด ์ด์Šˆ ์ž…๋‹ˆ๋‹ค.

rule ์œ„๋ฐ˜์„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋Š”๋ฐ,

public List sampleAbcList(List inList){//DB์—์„œ DVO์— ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ List๋กœ ์ „๋‹ฌ
List returnList = new ArrayList();
Iterator itr = inList.iterator();
AbcDVO dvo = new AbcDVO(); //--------(1)
while(itr.hasNext()){
//๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•จ
dvo = (AbcDVO) itr.next();
dvo.setLoginEpno(session.getLognEpno());
dvo.setScnId(session.getScnId());
dvo.setLastChgPsEpno(session.getEpno());
returnList.add(dvo);
}
return returnList;
}

์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ œ ์˜๊ฒฌ์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค.
(1) ๋ฌธ์ œ์ ์€ ์—†๋Š”์ง€...
- abcDVO๋Š” ์ด๋ฏธ DAO์—์„œ ๋งŒ๋“ค์–ด์„œ inList๋กœ ๋‹ด์•„์„œ ๋ณด๋‚ด๊ณ  ์žˆ๊ณ 
- ์ด๋ฅผ (1)์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ๋‹จ์ง€ ๋ฐ›์•„์„œ ์ „๋‹ฌ๋งŒ ํ•˜๋ฏ€๋กœ returnList์— ๋‹ด๊ธฐ๋Š” ๊ฐ์ฒด๋Š” inList์˜ DVO์ž„
- ๋”ฐ๋ผ์„œ, (1)์˜ dvo๋Š” ์›๋ณธ ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค๋งŒ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋จ
- ์žฌํ™œ์šฉ์— ๋ฌธ์ œ ์—†์Œ
(2) ์ด๋“์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€
- ๊ฐœ๋ฐœ์ž์˜ ์Šต๊ด€๊ณผ ๊ฒฝํ—˜์„ ๋ฐ”๊ฟ€ ์ •๋„๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ์„๊นŒ...์˜ ์‚ฌํ•ญ์ธ๋ฐ,
์œ„ ๋‚ด์šฉ์€ ๋ณดํ†ต ์กฐํšŒ์„ฑ ํ™”๋ฉด์˜ ๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ”์— ๋‹ด๊ธฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
- ์ฆ‰, List์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋งŽ์•„๋„ 20~40๊ฐœ ์ •๋„ ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ.... ์ด๋ฅผ ํฐ ์˜ค๋ฅ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ
๋…ธ๋ ฅ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ๊ฐ€. ๋ผ๋Š” ๋ถ€๋ถ„ ์ž…๋‹ˆ๋‹ค.
- ์—ฌ๊ธฐ์—์„œ๋Š” ๋‹ค์†Œ๊ฐ„์˜ ๊ฒฌํ•ด ์ฐจ์ด๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค๋งŒ, ์ œ ์ƒ๊ฐ์—๋Š”
ํ™•์‹คํ•œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฐœ๋ฐœ์ž์˜ ์Šต๊ด€์„ ๋ฐ”๊พธ๋„๋ก ํ•œ๋‹ค
(์˜ˆ: obj.equals("String") --> "String".equals(obj) ์œผ๋กœ null point
exception ๋ฐฉ์ง€ ๋“ฑ)
์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ์œ„ ์‚ฌํ•ญ์„ ๊ฐ์•ˆํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ , ์กฐ์น˜๋Š” ๊ฐ•์ œ์‚ฌํ•ญ์ด ์•„๋‹Œ
๊ถŒ๊ณ ์‚ฌํ•ญ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š”๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ถ„ ์˜๊ฒฌ์€ ์–ด๋– ํ•˜์‹ ์ง€์š”?....

์‹ฌ์ƒํ˜ธ

unread,
Oct 28, 2010, 4:17:06โ€ฏAM10/28/10
to ks...@googlegroups.com
์ดˆํผ(?) ๋‹นํ™ฉ์Šค๋Ÿฌ์šด Source Code์ธ๋ฐ์š”...
๋‹น์—ฐํžˆ ์›๋ž˜ Source Code๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด ๋ณด์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉํ•˜์ง€๋„ ์•Š์„ AbcDVO๋ฅผ Loop ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ๋ฐ”๋กœ ๋‹ค์Œ์ค„์—์„œ List์—์„œ ๊บผ๋‚ด์„œ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ assignํ•œ ๋ณ€์ˆ˜์— reassignํ•˜๊ณ  ์žˆ๋„ค์š”.
ย 
๋‹น์—ฐํžˆ ๋ณ€๊ฒฝ๋œ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ•˜์…”์•ผ ํ•˜๋ฉฐ
๊ตณ์ด ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š์„ ๊ฐ์ฒด๋ฅผ new ํ•˜์ง€ ์•Š์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค.
ย 
ย ย ย ย ย ย  public List sampleAbcList(List inList){//DB์—์„œ DVO์— ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ List๋กœ ์ „๋‹ฌ
ย ย ย ย ย ย ย ย ย ย ย ย ย ย  List returnList = new ArrayList();
ย ย ย ย ย ย ย ย ย ย ย ย ย ย  Iterator itr = inList.iterator();
ย ย ย ย ย ย ย ย ย ย ย ย ย ย  AbcDVO dvo = null;ย ย ย  //--------(1)

Sanghyuk Jung

unread,
Oct 28, 2010, 4:34:41โ€ฏAM10/28/10
to ks...@googlegroups.com
ย ย ย ย ย ย  public List sampleAbcList(List inList){//DB์—์„œ DVO์— ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ List๋กœ ์ „๋‹ฌ
ย ย ย ย ย ย ย ย ย ย ย ย ย ย  List returnList = new ArrayList();
ย ย ย ย ย ย ย ย ย ย ย ย ย ย  Iterator itr = inList.iterator();
ย ย ย ย ย ย ย ย ย ย ย ย ย ย  while(itr.hasNext()){
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  //๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•จ
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  AbcDVO dvo = new AbcDVO();ย ย ย  //--------(1)
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  dvo = (AbcDVO) itr.next();
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  dvo.setLoginEpno(session.getLognEpno());
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  dvo.setScnId(session.getScnId());
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  dvo.setLastChgPsEpno(session.getEpno());
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  returnList.add(dvo);
ย ย ย ย ย ย ย ย ย ย ย ย ย ย  }
ย ย ย ย ย ย ย ย ย ย ย ย ย ย  return returnList;
ย ย ย ย ย ย  }
์œ„์˜ ์†Œ์Šค๋Š” (1) ์—์„œ new ๊ฐ์ฒด ์ƒ์„ฑ์ด ์•„์˜ˆ ํ•„์š”๊ฐ€ ์—†์ง€ ์•Š๋‚˜์š”?
์–ด์งœํ”ผ ๋‹ค์Œ ์ค„์—์„œ list ์•ˆ์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์™€์„œ ์ฐธ์กฐ๋ฅผ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์—ย ๋ฐ”๋กœ new ๊ฐ์ฒด๋Š” ๋ฐ”๋กœ GC๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ new ํ•œ ๊ฐ์ฒด๊ฐ€ ์“ฐ์ผ ์ผ๋„ ์—†๊ณ , ์ค‘๊ฐ„์— Exception์ด ๋‚ ์ผ๋„ ์—†์œผ๋ฏ€๋กœ try catch์— ๋Œ€๋น„ํ•œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ์˜ ์˜๋ฏธ๋„ ์—†์Šต๋‹ˆ๋‹ค.ย 
ย 
ย 
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  AbcDVOย  dvo = (AbcDVO) itr.next();
๋ฐ”๋กœ ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ํ•„์š”์—†๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ย 
๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด loop ๋ฐ–์œผ๋กœ ๋นผ๋Š” ๊ฒฝ์šฐ๋„
ย 
ย ย ย ย ย ย ย public List sampleAbcList(List inList){//DB์—์„œ DVO์— ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ List๋กœ ์ „๋‹ฌ
ย  ย  ย  ย  ย  ย  ย  ย List returnList = new ArrayList();
ย  ย  ย  ย  ย  ย  ย  ย Iterator itr = inList.iterator();
ย  ย  ย  ย  ย  ย  ย  ย AbcDVO dvo = new AbcDVO(); ย  ย //--------(1)
ย  ย  ย  ย  ย  ย  ย  ย while(itr.hasNext()){
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย //๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•จ
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย dvo = (AbcDVO) itr.next();
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย dvo.setLoginEpno(session.getLognEpno());
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย dvo.setScnId(session.getScnId());
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย dvo.setLastChgPsEpno(session.getEpno());
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย returnList.add(dvo);
ย  ย  ย  ย  ย  ย  ย  ย }
ย  ย  ย  ย  ย  ย  ย  ย return returnList;
ย  ย  ย  ย }
(1)์— ์žˆ๋Š” ์ฝ”๋“œ์—์„œ๋„ new AbcDVO();ย ย ย ย ๋„ ํ•„์š”์—†๋Š” ์ดˆ๊ธฐ๊ฐ’์ž…๋‹ˆ๋‹ค.
ย 
๊ตณ์ด loop์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ์ฐธ์กฐํ•ด์•ผํ•œ๋‹ค๋˜์ง€ํ•˜๋Š” ์ด์œ ๋กœย ๋ฐ–์œผ๋กœ ๋บ„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋ฉด
ย 

AbcDVO dvo = null;

์ด๋ผ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
ย 
๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ๋Š” ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•ด์„œ, Loop์•ˆ์œผ๋กœ ์„ ์–ธ์„ ๋„ฃ๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•œ ์ฝ”๋”ฉ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
ย 
Loop ์•ˆ์—์„œ์˜ ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
ย 
ย ๊ฒฐ๊ตญ List์•ˆ์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์™€์„œ ํ•„๋“œ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค๋˜์ง€ ํ•˜๋Š” ์ฝ”๋”ฉ์—์„œ๋Š” new๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ผ์ด ์—†๊ณ , ์ดˆ๊ธฐ๊ฐ’ ์˜๋ฏธ์ธ ๊ฐ์ฒด๋ฅผ new๋กœ ์ƒ์„ฑ์„ ํ•ด๋ดค์ž,ย ๊ทธ ย ์ดˆ๊ธฐ ๊ฐ’ ๊ฐ์ฒด๊ฐ€ ์“ฐ์ด์ง€ ์•Š์œผ๋ฏ€๋กœ (loop์•ˆ์—์„œ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋˜์ฃ ) ์žฌํ™œ์šฉ๋˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Stack ๋ฉ”๋ชจ๋ฆฌ์˜์—ญ์€ ์•Œ์•„์„œ loop ์•ˆ์—์„œ๋Š” ์žฌํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.
ย 
ย 
2010๋…„ 10์›” 28์ผ ์˜คํ›„ 5:04, ์ž„์„ฑํ˜„ <sunghy...@gmail.com>๋‹˜์˜ ๋ง:

--
Google ๊ทธ๋ฃน์Šค 'Korea Spring User Group' ๊ทธ๋ฃน์— ๊ฐ€์ž…ํ–ˆ์œผ๋ฏ€๋กœ ๋ณธ ๋ฉ”์ผ์ด ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ทธ๋ฃน์— ๊ฒŒ์‹œํ•˜๋ ค๋ฉด ks...@googlegroups.com(์œผ)๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์„ธ์š”.
๊ทธ๋ฃน์—์„œ ํƒˆํ‡ดํ•˜๋ ค๋ฉด ksug+uns...@googlegroups.com๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.
๋” ๋งŽ์€ ์˜ต์…˜์„ ๋ณด๋ ค๋ฉด http://groups.google.com/group/ksug?hl=ko์—์„œ ๊ทธ๋ฃน์„ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.


Sungchul Park

unread,
Oct 28, 2010, 4:38:59โ€ฏAM10/28/10
to ks...@googlegroups.com
์ด ๊ฒฝ์šฐ, ์„ฑ๋Šฅ์—๋Š” ์ข‹์ง€๋งŒ ์œ„ํ—˜ํ•œ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜์–ด ์˜จ ๋ฆฌ์ŠคํŠธ์—์„œ ๊บผ๋‚ธ ๊ฐ์ฒด๋ฅผ ๊ฐ€๊ณตํ•˜๊ณ  ์ƒˆ ๊ฐœ์ฒด์— ๋„˜๊ธฐ๋Š” ์‚ฌ์ด
์— ์›๋ณธ์ด ๋ณ€์กฐ๋˜๋Š”๋ฐ์š”.
sampleAbcList()๋ฅผ ํ˜ธ์ถœํ•œ ์ชฝ์—์„œ ๋‚ด๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ธด ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ณ€์กฐ๋  ์ˆ˜
์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ์ผ์€ ๊ฑฐ์˜ ์—†๋Š” ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค. ์ผ์ข…์˜ ์ตœ์†Œ ๋†€๋žŒ ์›์น™ ์œ„๋ฐ˜์ด๋ž„
๊นŒ์š”? ๋ถˆ๋ณ€๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ํŒŒ๊ธ‰ ํšจ๊ณผ๋ฅผ ์ตœ์†Œํ™” ํ•˜๋Š” ๊ด€๋ก€๊ฐ€ ์š”์ฆ˜ ๊ฐ•์กฐ๋˜๊ณ  ์žˆ
์Šต๋‹ˆ๋‹ค.

Sanghyuk Jung

unread,
Oct 28, 2010, 4:44:14โ€ฏAM10/28/10
to ks...@googlegroups.com
์›๋ณธ์„ ๋ณ€์กฐํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด new๋‚˜ clone ๊ฐ™์€ ๊ฒƒ์ด ๋‹น์—ฐํžˆ ํ•„์š”ํ•˜๊ฒ ์ฃ .
๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉดย ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋€Œ์–ด์•ผํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ย ย ย ย ย ย ย ย ย ย ย ย ย  while(itr.hasNext()){
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  //๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•จ
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย AbcDVOย  source = (AbcDVO) itr.next();
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  AbcDVO dvo = newย  AbcDVO (source.getId()..... ๋“ฑ๋“ฑ ์ดˆ๊ธฐํ™” ๊ฐ’);
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  dvo.setLoginEpno(session.getLognEpno());
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  dvo.setScnId(session.getScnId());
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  dvo.setLastChgPsEpno(session.getEpno());
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  returnList.add(dvo);
ย  ย  ย  ย  ย  ย  ย  }
ย  ย  ย  ย  ย  ย  ย  return returnList;

๊ทธ๋ฆฌ๊ณ  ์ด ๊ฒฝ์šฐ์—๋„ new ์ƒ์„ฑ๋ง๊ณ  dvo ์„ ์–ธ ์ž์ฒด๋ฅผ ๋ฐ–์œผ๋กœ ๋นผ๋Š” ๊ฒƒ์€ ์•„๋ฌด ์„ฑ๋Šฅ์— ์ด๋“์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์ฃ .
ย 
ย 
ย 
2010๋…„ 10์›” 28์ผ ์˜คํ›„ 5:38, Sungchul Park <gyu...@gmail.com>๋‹˜์˜ ๋ง:

Sungchul Park

unread,
Oct 28, 2010, 4:52:56โ€ฏAM10/28/10
to ks...@googlegroups.com
์•„๋งˆ ์ฒซ๋ฒˆ์งธ ์†Œ์Šค์— ์˜๋„ํ•˜์ง€ ์•Š์€ ์‹ค์ˆ˜๊ฐ€ ์žˆ๋Š” ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.
์›๋ž˜ ์ œ์‹œํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ์†Œ์Šค๋Š” ์ด๋Ÿฐ ๊ฒŒ ์•„๋‹๊ฐ€์š”?

public List sampleAbcList(List inList){//DB์—์„œ DVO์— ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ List๋กœ ์ „๋‹ฌ
List returnList = new ArrayList();
Iterator itr = inList.iterator();
while(itr.hasNext()){
//๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•จ

AbcDVO dvo = new AbcDVO((AbcDVO) itr.next());


dvo.setLoginEpno(session.getLognEpno());
dvo.setScnId(session.getScnId());
dvo.setLastChgPsEpno(session.getEpno());
returnList.add(dvo);
}
return returnList;
}

inList์—์„œ ํ•˜๋‚˜์”ฉ ๋ฐ›์•„์„œ ์ด๊ฒƒ์„ ๋ณต์‚ฌํ•œ ๋‹ค์Œ์— (์ด ๊ณผ์ •์— ์ƒˆ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ
๋˜์ฃ ) ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋ฆฌ์ŠคํŠธ(returnList)์— ๋„ฃ๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š”...

> ์œ„์˜ ๊ฒฝ์šฐ, inList๋Š” DB์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ ๋‚ด์šฉ์ด๊ณ , ์ด๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•ด์„œ ๋‹ค์‹œ ๋„ฃ๋Š” ๊ฒฝ์šฐ์ธ๋ฐ..
> ์ด ๊ฒฝ์šฐ ์ฒ˜์Œ ๋ง์”€๋“œ๋ฆฐ Rule์„ ํ™œ์šฉํ•ด์„œ ๊ฐ์ฒด์ƒ์„ฑ(1)์„ while ๋ฐ–์—์„œ ์ƒ์„ฑํ•ด์„œ ์žฌํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค ๋ผ๊ณ  ๊ฐ€์ด๋“œํ•˜๋Š” ๊ฒƒ์ด
> 1) ๋ฌธ์ œ์ ์ด ์—†๋Š”์ง€

์ด ๊ฒฝ์šฐ๋Š” PMD์˜ ๋ฃฐ์ด ์ž˜๋ชป์ž…๋‹ˆ๋‹ค. PMD๊ฐ€ ๋” ๋˜‘๋˜‘ํ–ˆ๋‹ค๋ฉด ์ง€์ ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ
๊ฐ™๋„ค์š”.


> 2) ์ด๋“์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€

๊ฐ์ฒด ์ƒ์„ฑ์„ ๋ฐ–์œผ๋กœ ๋บ„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

> rule ์œ„๋ฐ˜์„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋Š”๋ฐ,
>
> public List sampleAbcList(List inList){//DB์—์„œ DVO์— ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ List๋กœ ์ „๋‹ฌ
> List returnList = new ArrayList();
> Iterator itr = inList.iterator();
> AbcDVO dvo = new AbcDVO(); //--------(1)
> while(itr.hasNext()){
> //๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•จ
> dvo = (AbcDVO) itr.next();
> dvo.setLoginEpno(session.getLognEpno());
> dvo.setScnId(session.getScnId());
> dvo.setLastChgPsEpno(session.getEpno());
> returnList.add(dvo);
> }
> return returnList;
> }
>
> ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ œ ์˜๊ฒฌ์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค.
> (1) ๋ฌธ์ œ์ ์€ ์—†๋Š”์ง€...

๋ฃจํ”„ ๋ฐ–์—์„œ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋Š” ์ „ํ˜€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


> (2) ์ด๋“์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€

1๋ฒˆ ์†Œ์Šค์˜ ์›๋ณธ์—์„œ newํ•œ ๊ฐ์ฒด๋„ ์ด๋ฒˆ์— ๋ฐ–์œผ๋กœ ๋บ€ ๊ฐ์ฒด๋„ ์ „ํ˜€ ์‚ฌ์šฉ๋˜์ง€
์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜์ด๋‹ˆ ์ด๋“์„ ๋”ฐ์งˆ ํ•„์š”๊ฐ€ ์—†๋„ค์š”.


> - ์ฆ‰, List์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋งŽ์•„๋„ 20~40๊ฐœ ์ •๋„ ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ.... ์ด๋ฅผ ํฐ ์˜ค๋ฅ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ๊ฐ€. ๋ผ๋Š” ๋ถ€๋ถ„ ์ž…๋‹ˆ๋‹ค.

20-40 ์ •๋„๋˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒŒ VM ์ž…์žฅ์—์„œ ํฐ ๋ถ€ํ•˜๋Š” ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ
๋‹ˆ๋‹ค. ํ•„์š”ํ•˜๋ฉด ๋งŒ๋“ค์–ด์•ผ๊ฒ ์ฃ . ํ•˜์ง€๋งŒ ์• ์ดˆ์— ์›๋ณธ ์†Œ์Šค์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด ์„ฑ๋Šฅ
์„ ๋…ผํ•  ๋‹จ๊ณ„๋Š” ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

JUNG-LAE JO

unread,
Oct 28, 2010, 4:56:27โ€ฏAM10/28/10
to ks...@googlegroups.com
์ฒ˜์Œ ์งˆ๋ฌธ์„ ๋ณด๋ฉด.. ์„œ๋น„์Šค ๋‹จ์ธ๋ฐ ๊ตณ์ด ์›๋ณธ์„ ๋ณต์‚ฌํ•  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ์š”?
ํ•ด๋‹น ์„œ๋น„์Šค์—์„œ ํ•„์š”ํ•œ ํฌ๋งท์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค๋‹จ์—์„œ ์žฌ๊ฐ€๊ณต ํ•ด์„œ ๋„˜๊ธฐ๊ฒ ๋‹ค๋Š” ๊ฑด๋ฐ์š”..
์„œ๋น„์Šค ๋‹จ์—์„œ๋„ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ญ๊ฐ€ ์žˆ๋‚˜์š”?


2010๋…„ 10์›” 28์ผ ์˜คํ›„ 5:44, Sanghyuk Jung <ben...@gmail.com>๋‹˜์˜ ๋ง:

์ž„์„ฑํ˜„

unread,
Oct 28, 2010, 4:57:47โ€ฏAM10/28/10
to Korea Spring User Group
์˜๊ฒฌ์ฃผ์‹  ๋ถ„๋“ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๋ณด์•ˆ์—๋„ ๋ฌธ์ œ์žˆ๊ณ (์ฐธ์กฐํ•˜๋Š” ์›๋ณธ์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ณ ),
Loop์— ๋“ค์–ด๊ฐ€์ž๋งˆ์ž ๋ฐ”๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š”๋ฐ ๋‚ด๋ถ€์—์„œ๋“  ์™ธ๋ถ€์—์„œ๋“  ์ƒ์„ฑํ• 
๊ฐ€์น˜๊ฐ€ ์—†๋‹ค ๋ผ๋Š” ์ธก๋ฉด์œผ๋กœ ์ดํ•ด ๋ฉ๋‹ˆ๋‹ค.

์„ฑ์ฒ ๋‹˜์˜ ๋ง์”€(๋‚ด๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์š”์ฒญํ•œ ์›๋ณธ์ด ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ๋ณ€ํ•ด๋ฒ„๋ฆฐ๋‹ค)๋ผ๋Š” ์ธก๋ฉด์€
์ข€ ๋” ์ง„์ง€ํ•˜๊ฒŒ ๊ณ ๋ฏผํ•ด๋ณผ๊ป˜์š”. ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€.. ์ข€ ๋” ์‚ดํŽด๋ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค.

์›๋ž˜์˜๋„์ธ ๋ฃฐ ์œ„๋ฐ˜์„ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€ ๋ณด๋‹ค๋Š”
์–ด๋–ค ์ด์œ ๋กœ ์ด๋Ÿฐ ํ˜•์‹์˜ ์ฝ”๋”ฉ์„ ํ•˜๋Š”์ง€ ์ง€์ผœ๋ณด๋Š” ์šฉ๋„๋กœ ์จ์•ผ๊ฒ ๊ตฐ์š”.

ํ•œ์‹œ๊ฐ„๋„ ์•ˆ๋˜์–ด์„œ ์ด๋ ‡๊ฒŒ ๋œจ๊ฑฐ์šด. ํ˜ธ์‘์„ ๋ฐ›์œผ๋‹ˆ.
๊ฐ์‚ฌ ํ•ฉ๋‹ˆ๋‹ค.

> > ๊ทธ๋ฃน์—์„œ ํƒˆํ‡ดํ•˜๋ ค๋ฉด ksug+uns...@googlegroups.com<ksug%2Bunsu...@googlegroups.com>๋กœ

Sungchul Park

unread,
Oct 28, 2010, 5:03:22โ€ฏAM10/28/10
to ks...@googlegroups.com

> ์›๋ณธ์„ ๋ณ€์กฐํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด new๋‚˜ clone ๊ฐ™์€ ๊ฒƒ์ด ๋‹น์—ฐํžˆ ํ•„์š”ํ•˜๊ฒ ์ฃ .
> ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋€Œ์–ด์•ผํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
> while(itr.hasNext()){
> //๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๊ฐ€๊ณตํ•จ
> AbcDVO source = (AbcDVO) itr.next();
> AbcDVO dvo = new AbcDVO (source.getId().....
> ๋“ฑ๋“ฑ ์ดˆ๊ธฐํ™” ๊ฐ’);
> dvo.setLoginEpno(session.getLognEpno());
> dvo.setScnId(session.getScnId());
> dvo.setLastChgPsEpno(session.getEpno());
> returnList.add(dvo);
> }
> return returnList;
>
> ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฒฝ์šฐ์—๋„ new ์ƒ์„ฑ๋ง๊ณ  dvo ์„ ์–ธ ์ž์ฒด๋ฅผ ๋ฐ–์œผ๋กœ ๋นผ๋Š” ๊ฒƒ์€ ์•„๋ฌด
> ์„ฑ๋Šฅ์— ์ด๋“์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์ฃ .
๋„ค. ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‘๋ฒˆ์งธ ๊ธ€์— ๊ทธ๋ ‡๊ฒŒ ์ผ์Šต๋‹ˆ๋‹ค. ์ „ clone์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์• ์ดˆ์— PMD์˜ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒŒ ์˜ณ์€์ง€ ์—ฌ๋ถ€์ธ๋ฐ ์‚ฌ
์‹ค ์˜ฌ๋ฆฌ์‹  ์†Œ์Šค์—์„œ๋Š” ์• ์ดˆ์— ๊ฐ์ฒด ์ƒ์„ฑ์ด ๋ฌด์˜๋ฏธ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ƒ์„ฑ์ด
๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ์˜๋ฏธ์žˆ๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ๋ก€๋กœ ์ข€ ๋ฐ”๊พธ์–ด ๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋…ผ์ ์ด ์†Œ
์Šค์˜ ๋ฌธ์ œ๋กœ ๋ฐ”๋€ ๊ฒƒ ๊ฐ™์•„์„œ์š”.
์ž„์„ฑํ˜„๋‹˜์ด ํ† ๋ก ํ•˜๊ธฐ ์›ํ•˜์‹œ๋Š” ๊ฒƒ์€ ๋ฃจํ”„์•ˆ์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ์œผ๋กœ์จ PMD์˜
๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์•˜๋Š”๋ฐ PMD์˜ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•ด๋„ ์ข‹์€์ง€, ์•„๋‹ˆ๋ฉด PMD์˜ ์ง€์นจ์„ ๋”ฐ๋ผ
๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Sungchul Park

unread,
Oct 28, 2010, 5:09:04โ€ฏAM10/28/10
to ks...@googlegroups.com

> ์ฒ˜์Œ ์งˆ๋ฌธ์„ ๋ณด๋ฉด.. ์„œ๋น„์Šค ๋‹จ์ธ๋ฐ ๊ตณ์ด ์›๋ณธ์„ ๋ณต์‚ฌํ•  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ์š”?
์›๋ณธ์ด ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ „์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ณต์‚ฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœํ•˜๋Š” ์ชฝ
์—์„œ ๊ทธ๊ฒƒ์„ ๋ฏธ๋ฆฌ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์„ํ…Œ๋‹ˆ๊นŒ์š”. ์‹œ์Šคํ…œ์ด ๋ณต์žกํ•ด์ง€๋ฉด ์ด๋Ÿฐ ์„ ํƒ์ด
๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ์›น์€ ๋‹จ์ˆœํ•˜๊ณ  ๊ฐ์ฒด์˜ ์ƒ์• ๊ฐ€ ์งง๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„
๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ผ์ด ์—†๊ฒ ์ฃ .

ํ•˜์ง€๋งŒ ๋‹จ์ˆœํ•œ DTO๊ฐ€ ์•„๋‹Œ ORM์˜ ์˜์†ํ™”๋œ ๊ฐ์ฒด๋ผ๋ฉด ๊ณ ๋ฏผํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ œ๊ฐ€ ์›๋ณธ์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ๋ฐ”๊พผ ์ด์œ ๋Š” ์ž„์„ฑํ˜„๋‹˜์˜ ์งˆ๋ฌธ ์˜๋„๋ฅผ
๋” ๋ถ€๊ฐํ•˜๋ ค๊ณ  ํ•œ ๊ฒƒ ๋ฟ์ž…๋‹ˆ๋‹ค.

JUNG-LAE JO

unread,
Oct 28, 2010, 5:21:14โ€ฏAM10/28/10
to ks...@googlegroups.com
์ œ๊ฐ€ ๋„ˆ๋ฌด ์งˆ๋ฌธ์— ์š”์ง€๋งŒ ๋ณด๋ ค๊ณ  ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋‚˜ ๋ด…๋‹ˆ๋‹ค ใ…‹;
ํ•˜๊ธด ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ฐ๊ณ  ํ•˜๋ฉด, ์›๋ณธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ™•์‹ ์„ ๊ฐ€์ง€๊ณ  ์‹ถ๊ฒ ๋„ค์š”. ๊ทธ๋Ÿผ ๋ง์”€ํ•˜์‹ ๋Œ€๋กœ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ๊ฒ ์ง€์š”.ย 
์ง€์  ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค :)

2010๋…„ 10์›” 28์ผ ์˜คํ›„ 6:09, Sungchul Park <gyu...@gmail.com>๋‹˜์˜ ๋ง:
Reply all
Reply to author
Forward
0 new messages