후ê°� 발달 특별 세미나 ¶
냄새를 ë§¡ê³ ê·¸ 냄새를 ì—†ì• ëŠ” 방법ì—� 대하여 세미나 입니다. ì‹ ìž…ìƒ� 눈ì—� 맞추어 쉽게 í•˜ê² ì§€ë§Œ 재학ìƒ�ì�´ 들어ë�„ ë�„움ì�´ ë�˜ë�„ë¡� ë§Œë“¤ê² ìŠµë‹ˆë‹¤.
시간: 5월 2� 6 ~ 8시.
장소: ë¯¸ì •.
장소: ë¯¸ì •.
위 문서ë�„ ë¦¬íŽ™í† ë§� ë�œ 것입니다. ê·¸ë¦¬ê³ ì˜ˆì œ 파ì�¼ë“¤ì�€ 완벽히 ë¦¬íŽ™í† ë§� ë�œ 것ì�€ 아닙니다. ê°� 소스ì—�서 한가지 냄새를 ëŠ�ë�¼ê³ ê·¸ 냄새ì—�ë§Œ 집중해서 ë¦¬íŽ™í† ë§�하는 것만 했기 때문입니다. ì�´ì™¸ì—�ë�„ 여러가지 시ë�„해보세요. --재ë�™
ë§�í�¬ ¶
ì�´ì•¼ê¸° ¶
1 Page로 �내다. --재�
재미 있는 세미나 였어요~^^ ê³ ë§™ìŠµë‹ˆë‹¤.
재ë�™ì•„ ì •ë§� ìœ ì�µí•˜ê³ 재밌는 세미나 였다. ë‚´ê°€ 깜박 ì¡´ 것ì�€ 네 세미나 때문ì—� 그런게 아니ë�¼ ë‚´ 버릇ì�´ëž€ê±° 알지? - ìƒ�협
ì •ë§� 재밌었어요. 수업중ì—� 질문ì�„ 못한게 있는ë�°ìš”, 주ì„�ì�€ ë�˜ë�„ë¡�ì�´ë©´ 안ì�¨ì£¼ëŠ”ê±´ê°€ìš”?? c언어 수업시간ì—� êµ�수님ì�´ 주ì„�ì�€ ë§Žì�´ 쓸 수ë¡� ì¢‹ë‹¤ê³ í•˜ì…¨ëŠ”ë�°... --최경현
다만 조금 아쉬운건. 쉬는 시간ì—� ì�Œë£Œìˆ˜ë�¼ë�„ 뽑아 ë“œë ¤ì•¼ì§€ ë�¼ê³ ìƒ�ê°�í•˜ê³ ìžˆì—ˆëŠ”ë�°...프로ì �트 땜ì—� ë°”ì�˜ì…”서 그런지 ë¹ ë¥´ê²Œ ì§„í–‰ 하시ë�”ë�¼ê³ ìš”~ ã…‹ã„·ã…‹ã„· 마지막으로~ 간결한 1장짜리 ìž�료집ì�´ 너무 좋았어요~ - 톱아보다
좋ì�€ì •ë³´ ê°�사합니다아~ ã…Žã…Ž--ì •ìˆ˜ë¯¼
주ì„�ì�´ 많다는 것ì�€ 코드가 ìž�ì‹ ì�„ 스스로 표현 못하기 때문입니다. 어딘가 주ì„�ì�„ ë‹¬ë ¤ê³ ìƒ�ê°� 한다면 한 번쯤 '주ì„� ì—†ìœ¼ë ¤ë©´ 어떻게 해야하는가?'ë�¼ê³ ìƒ�ê°�해보세요. 단, ìˆ™ì œ ì œì¶œì—�서는 êµ�수님ì�˜ 눈ì—� 맞춰야합니다. --재ë�™
세미나 후 ì œ ê·€ì—� 들어온 질문 중ì—� '함수를 ë§Žì�´ 만들면 메모리를 ë�” 사용하지 않는가?'ë�¼ëŠ” 질문ì�´ 있었습니다. 누가 ìž�세히 설명 좀 ë¶€íƒ�드립니다. --재ë�™êµ�수님ì�´ ë§�씀하시는 주ì„�ì�€ 소스가 어떻게 ë�Œì•„가는지 설명하는 주ì„�ì�„ ë§�하는거 아닌가 싶습니다. ë¦¬íŽ™í† ë§�ì�„ 통해서 주ì„� ì—†ì�´ë�„ ì�´í•´ê°€ëŠ” 소스를 작성하ë�„ë¡� ë…¸ë ¥í•˜ê³ , ë� 필요한 경우ì—�는 쓸수ë�„ ìžˆê² ì£ . - ìƒ�협
ì „ë¬¸ì �ì�¸ 설명ì�€ 아니구, ì œ ìƒ�ê°�ì—�는 함수를 사용하여 메모리 사용하는 비용과 프로그래머가 함수를 ë�” 사용하여 소스ì�˜ ê°€ë�…성ì�„ ì˜¬ë¦¬ê³ , ìœ ì§€ 보수 ë°� 버그를 ì—†ì• ëŠ” 비용과 비êµ�를 해볼때 후ìž�ê°€ 훨씬ë�” í�° 비중ì�„ 차지하기 때문ì—� 함수를 ë�” 사용하여 메모리를 ë�” 사용하ë�”ë�¼ë�„ ë¦¬íŽ™í† ë§�ì�˜ 중요성ì�´ ê²°ì½” 줄어들지 ì•ŠëŠ”ë‹¤ê³ ìƒ�ê°�합니다. ê·¸ë¦¬ê³ ì§§ì�€ 소스ì—�서는 ë¦¬íŽ™í† ë§� 하여 함수가 ë§Žì•„ 지는것ì�´ ë‚비처럼 ë³´ì�¼ì§€ 몰ë�¼ë�„ 좀ë�” 프로그램ì�´ 커질수ë¡� ë¦¬íŒ©í† ë§�ì�„ 해놓ì�Œìœ¼ë¡œ 해서 추후ì—� 최ì �화를 하는ë�°ì—�ë�„ 훨씬 ìœ ë¦¬í•˜ê¸° 때문ì—� ê²°êµì—� 가서는 ìž�ì›�ë�„ ë�” 효율ì �으로 사용하리ë�¼ê³ 봅니다. - ìƒ�협
사실 ì�´ 질문ì�€ ì œê°€ 받았ë�˜ 질문ì�¸ë�°, 질문 받았ë�˜ 당시ì—� 별 ìƒ�ê°�ì—†ì�´ 메모리를 ë§Žì�´ 사용한다는 단ì �ì�´ 있ë�”ë�¼ë�„ 잃는 것(단ì �)보다 얻는 것(장ì �)ì�´ ë�” 많기 때문ì—� ìƒ�ê´€ì—†ë‹¤ê³ ì–¼ë²„ë¬´ë ¸ìŠµë‹ˆë‹¤. ê·¸ë ‡ê²Œ 틀린 대답ì�€ 아니였지만 ë§Žì�´ 부족한 대답ì�´ì—ˆìŠµë‹ˆë‹¤. 그래서 재ë�™í˜•í•˜ê³ ì�´ì•¼ê¸°ë�„ í•´ë³´ê³ ì €ë�„ 나름대로 ìƒ�ê°�해서 답ì�„ 내어보았습니다.
메모리를 ë§Žì�´ 사용한다는 ìš°ë ¤ì�˜ ì›�ì�¸ì�€ ë§Žì�€ 변수들ì—� 있습니다. ì „ë‹¬ì�¸ìž�를 받거나 ê°’ì�„ ë¦¬í„´í• ë•Œ, ê°�ê°� ìƒ�ì�‘ë�˜ëŠ” 변수가 필요하기 때문ì�´ì£ . 하지만 변수는 ê·¸ 변수가 ì„ ì–¸ë�œ 함수내ì—�서만 íš¨ë ¥ì�„ ë°œíœ˜í•˜ê³ í•¨ìˆ˜ê°€ 종료ë�˜ëŠ” 순간 사ë�¼ì§‘니다(ë©”ëª¨ë¦¬í•´ì œ). 그러므로 모듈화ë�œ(쉽게 ì�´ì•¼ê¸°í•´ì„œ 함수로 나뉜)프로그램ì—�서는 함수내ì�˜ ë§Žì�€ 변수들ì�´ 메모리를 ë§Žì�´ 차지하ë�”ë�¼ë�„ ê·¸ 함수가 ë��나면 ê·¸ 메모리는 í•´ì œë�˜ì–´ 사용가능해집니다. ê·¸ë¦¬ê³ ì „ì—변수나 ë©”ì�¸í•¨ìˆ˜ë‚´ì�˜ 변수만ì�„ 사용하는 프로그램ì�€ 프로그램ì�´ ë��ë‚ ë•Œê¹Œì§€(ë©”ì�¸í•¨ìˆ˜ê°€ 종료ë� 때까지) 메모리를 잡아ë‘�므로 한번 í• ë‹¹ë�œ 메모리는 사용불가능합니다.
모듈화ë�œ 프로그램ì—�서ì�˜ 메모리 사용ì�˜ ê°œë…�ì�€ í•„ìš”í• ë•Œë§ˆë‹¤ í• ë‹¹í•´ì„œ ì“°ê³ í•„ìš”ì—†ìœ¼ë©´ í•´ì œí•˜ìž�ì�´ê³ ì „ì—변수나 ë©”ì�¸í•¨ìˆ˜ë‚´ì�˜ 변수만ì�„ 사용하는 프로그램ì—�서ì�˜ 메모리 사용ì�˜ ê°œë…�ì�€ 지금ì�€ 안쓰ì�´ë�”ë�¼ë�„ 나중ì—� 쓸 메모리를 미리 í• ë‹¹í•˜ê³ ì‚¬ìš©ì�´ ë��났ë�”ë�¼ë�„ 메모리를 계ì†� 잡아ë‘�ìž�입니다. ì „ìž�ì�˜ 경우ì—�는 ì–´ëŠ� 순간 메모리를 ë§Žì�´ 사용하는 경우ë�„ ìžˆê³ ì–´ëŠ� 순간ì—�는 ì—„ì² ì �게 사용하는 경우가 있습니다. 메모리 사용ì�´ ë�” ìœ ë�™ì �ì�´ë�¼ê³ í• ìˆ˜ 있습니다. ë°‘ì—� ì°¸ê³ ê·¸ëž˜í”„(ìž�ì²´ì œìž‘)를 ì°¸ê³ í•´ì£¼ì‹œê¸° ë°”ëž�니다. --ê°•í�¬ê²½

(ì°¸ê³ ë¡œ ì œê°€ ë§�í•˜ê³ ìž� 하는 것ì�€ 코드ì—� ì�˜í•œ 메모리 사용량 입니다.)
함수ì�˜ 갯수와 메모리 사용량ì�€ ì§�ì ‘ì �으로 ê´€ë ¨ì�´ 없습니다. 메모리 사용량과 ì§�ì ‘ì �으로 ê´€ë ¨ì�´ 있는 것ì�€ 함수ì�˜ 갯수가 아니ë�¼ 프로그램ì�˜ 길ì�´ 입니다.
함수가 ë§Žë‹¤ê³ í”„ë¡œê·¸ëž¨ì�˜ 길ì�´ê°€ 긴 것ì�€ 아닙니다. 길ì�´ê°€ ì§§ì�€ 함수를 여러개 가진 프로그램과 길ì�´ê°€ ì—„ì²ë‚˜ê²Œ 긴 함수를 한개만 가진 프로그램ì�´ ìžˆë‹¤ê³ í•´ë´…ì‹œë‹¤. 길ì�´ê°€ ë�” 긴 프로그램ì�€ ì–´ë–¤ 것입니까?
ë¦¬íŽ™í† ë§�ì—� 대해서 ìƒ�ê°�í•´ 봅시다. 가장 ë¨¼ì € ë°°ìš´ 방법ì�´ 무엇ì�´ì—ˆìŠµë‹ˆê¹Œ? ì¤‘ë³µì œê±° 입니다. 함수를 ëŠ˜ë ¤ 중복ì�„ ì œê±°í•˜ë©´ 프로그램ì�˜ 길ì�´ëŠ” 길어질까요? 짧아질까요?
ë¬¼ë¡ í•¨ìˆ˜ê°€ 추가ë�˜ë©´ ì „ë‹¬ì�¸ìž� 처리를 위한 약간ì�˜ 코드가 추가ë�˜ëŠ” 것ì�€ 사실입니다. 하지만 그것ì�€ 몇바ì�´íЏì—� 지나지 않습니다.
--�규
ì�Œì•…ì�´ 있어서 ì°¸ 좋았어요~ 중간중간ì�˜ ë†�ë‹´ë�„ 좋았구요. 지나 치게 진지한 세미나 보다는 훨씬 났다는 ìƒ�ê°�ì�´ 드네요 사실 ì�´ 질문ì�€ ì œê°€ 받았ë�˜ 질문ì�¸ë�°, 질문 받았ë�˜ 당시ì—� 별 ìƒ�ê°�ì—†ì�´ 메모리를 ë§Žì�´ 사용한다는 단ì �ì�´ 있ë�”ë�¼ë�„ 잃는 것(단ì �)보다 얻는 것(장ì �)ì�´ ë�” 많기 때문ì—� ìƒ�ê´€ì—†ë‹¤ê³ ì–¼ë²„ë¬´ë ¸ìŠµë‹ˆë‹¤. ê·¸ë ‡ê²Œ 틀린 대답ì�€ 아니였지만 ë§Žì�´ 부족한 대답ì�´ì—ˆìŠµë‹ˆë‹¤. 그래서 재ë�™í˜•í•˜ê³ ì�´ì•¼ê¸°ë�„ í•´ë³´ê³ ì €ë�„ 나름대로 ìƒ�ê°�해서 답ì�„ 내어보았습니다.
메모리를 ë§Žì�´ 사용한다는 ìš°ë ¤ì�˜ ì›�ì�¸ì�€ ë§Žì�€ 변수들ì—� 있습니다. ì „ë‹¬ì�¸ìž�를 받거나 ê°’ì�„ ë¦¬í„´í• ë•Œ, ê°�ê°� ìƒ�ì�‘ë�˜ëŠ” 변수가 필요하기 때문ì�´ì£ . 하지만 변수는 ê·¸ 변수가 ì„ ì–¸ë�œ 함수내ì—�서만 íš¨ë ¥ì�„ ë°œíœ˜í•˜ê³ í•¨ìˆ˜ê°€ 종료ë�˜ëŠ” 순간 사ë�¼ì§‘니다(ë©”ëª¨ë¦¬í•´ì œ). 그러므로 모듈화ë�œ(쉽게 ì�´ì•¼ê¸°í•´ì„œ 함수로 나뉜)프로그램ì—�서는 함수내ì�˜ ë§Žì�€ 변수들ì�´ 메모리를 ë§Žì�´ 차지하ë�”ë�¼ë�„ ê·¸ 함수가 ë��나면 ê·¸ 메모리는 í•´ì œë�˜ì–´ 사용가능해집니다. ê·¸ë¦¬ê³ ì „ì—변수나 ë©”ì�¸í•¨ìˆ˜ë‚´ì�˜ 변수만ì�„ 사용하는 프로그램ì�€ 프로그램ì�´ ë��ë‚ ë•Œê¹Œì§€(ë©”ì�¸í•¨ìˆ˜ê°€ 종료ë� 때까지) 메모리를 잡아ë‘�므로 한번 í• ë‹¹ë�œ 메모리는 사용불가능합니다.
모듈화ë�œ 프로그램ì—�서ì�˜ 메모리 사용ì�˜ ê°œë…�ì�€ í•„ìš”í• ë•Œë§ˆë‹¤ í• ë‹¹í•´ì„œ ì“°ê³ í•„ìš”ì—†ìœ¼ë©´ í•´ì œí•˜ìž�ì�´ê³ ì „ì—변수나 ë©”ì�¸í•¨ìˆ˜ë‚´ì�˜ 변수만ì�„ 사용하는 프로그램ì—�서ì�˜ 메모리 사용ì�˜ ê°œë…�ì�€ 지금ì�€ 안쓰ì�´ë�”ë�¼ë�„ 나중ì—� 쓸 메모리를 미리 í• ë‹¹í•˜ê³ ì‚¬ìš©ì�´ ë��났ë�”ë�¼ë�„ 메모리를 계ì†� 잡아ë‘�ìž�입니다. ì „ìž�ì�˜ 경우ì—�는 ì–´ëŠ� 순간 메모리를 ë§Žì�´ 사용하는 경우ë�„ ìžˆê³ ì–´ëŠ� 순간ì—�는 ì—„ì² ì �게 사용하는 경우가 있습니다. 메모리 사용ì�´ ë�” ìœ ë�™ì �ì�´ë�¼ê³ í• ìˆ˜ 있습니다. ë°‘ì—� ì°¸ê³ ê·¸ëž˜í”„(ìž�ì²´ì œìž‘)를 ì°¸ê³ í•´ì£¼ì‹œê¸° ë°”ëž�니다. --ê°•í�¬ê²½
- 아래 ìƒ�ê·œì�˜ ë§�대로 í�° ì°¨ì�´ëŠ” ì—†ì�„ 것 같습니다. 모듈ì—�서ì�˜ 변수 ì„ ì–¸, 사용ì—� 있어서 메모리 사용량ì�€ 기ê»�해야 몇 ë°”ì�´íЏ ì •ë�„ê°€ ì•„ë‹�까요? 아래 코드처럼 극단ì �ì�¸ 예가 아닌 ì�´ìƒ� í�° 변화가 없는 경우가 대부분ì�´ë�¼ê³ ìƒ�ê°�합니다(ë¬¼ë¡ , ë�™ì �í• ë‹¹ì�€ 여기서 논외입니다). 그런ë�°, 아래ì�˜ 코드는 몇가지 냄새가 나는 코드로군요. í�.
혹시 다른 ìƒ�ê°�ì�„ ê°–ê³ ê³„ì‹ ë¶„ì�€ ì œê²Œ 가르침ì�„... ì €ë�„ 조금 ë�” ìƒ�ê°�í•´ë´�ì•¼ê² ìŠµë‹ˆë‹¤. - ìž„ì�¸íƒ�
함수가 많아지면 메모리를 ë§Žì�´ 쓰게 ë� 까??
~cpp
// foo(), bar() ê°€ 호출ë� 때마다 memory사용량ì�´ 4K 씩 늘어난다.
#include <iostream>
using namespace std;
#define ARRSIZE 1024
#define FUNMAX 10;
void foo();
void bar();
int funcCount = 0;
int main()
{
foo();
return 0;
}
void foo()
{
int f[ARRSIZE];
cout << "addr of f in " << funcCount << "th call : " << f << endl;
cin.get();
if( funcCount++<FUNMAX )
bar();
}
void bar()
{
int b[ARRSIZE];
cout << "addr of b in " << funcCount << "th call : " << b << endl;
cin.get();
if( funcCount++<FUNMAX )
foo();
}
(ì°¸ê³ ë¡œ ì œê°€ ë§�í•˜ê³ ìž� 하는 것ì�€ 코드ì—� ì�˜í•œ 메모리 사용량 입니다.)
함수ì�˜ 갯수와 메모리 사용량ì�€ ì§�ì ‘ì �으로 ê´€ë ¨ì�´ 없습니다. 메모리 사용량과 ì§�ì ‘ì �으로 ê´€ë ¨ì�´ 있는 것ì�€ 함수ì�˜ 갯수가 아니ë�¼ 프로그램ì�˜ 길ì�´ 입니다.
함수가 ë§Žë‹¤ê³ í”„ë¡œê·¸ëž¨ì�˜ 길ì�´ê°€ 긴 것ì�€ 아닙니다. 길ì�´ê°€ ì§§ì�€ 함수를 여러개 가진 프로그램과 길ì�´ê°€ ì—„ì²ë‚˜ê²Œ 긴 함수를 한개만 가진 프로그램ì�´ ìžˆë‹¤ê³ í•´ë´…ì‹œë‹¤. 길ì�´ê°€ ë�” 긴 프로그램ì�€ ì–´ë–¤ 것입니까?
ë¦¬íŽ™í† ë§�ì—� 대해서 ìƒ�ê°�í•´ 봅시다. 가장 ë¨¼ì € ë°°ìš´ 방법ì�´ 무엇ì�´ì—ˆìŠµë‹ˆê¹Œ? ì¤‘ë³µì œê±° 입니다. 함수를 ëŠ˜ë ¤ 중복ì�„ ì œê±°í•˜ë©´ 프로그램ì�˜ 길ì�´ëŠ” 길어질까요? 짧아질까요?
ë¬¼ë¡ í•¨ìˆ˜ê°€ 추가ë�˜ë©´ ì „ë‹¬ì�¸ìž� 처리를 위한 약간ì�˜ 코드가 추가ë�˜ëŠ” 것ì�€ 사실입니다. 하지만 그것ì�€ 몇바ì�´íЏì—� 지나지 않습니다.
--�규
다만 조금 아쉬운건. 쉬는 시간ì—� ì�Œë£Œìˆ˜ë�¼ë�„ 뽑아 ë“œë ¤ì•¼ì§€ ë�¼ê³ ìƒ�ê°�í•˜ê³ ìžˆì—ˆëŠ”ë�°...프로ì �트 땜ì—� ë°”ì�˜ì…”서 그런지 ë¹ ë¥´ê²Œ ì§„í–‰ 하시ë�”ë�¼ê³ ìš”~ ã…‹ã„·ã…‹ã„· 마지막으로~ 간결한 1장짜리 ìž�료집ì�´ 너무 좋았어요~ - 톱아보다프로ì �트 때문ì—� ë¹ ë¥´ê²Œ 진행한게 아니ë�¼ ì„ ì „ë¶€ 모임때문ì—�... 여튼 간결하게 하는 ê±´ 중요하다. 시간 ë�˜ë©´
ì�´ì œì„œì•¼ 글ì�„ 남겨서 죄송스럽지만; ã…Žã…Ž ìœ ì�µí•œ 시간ì�´ì˜€ìŠµë‹ˆë‹¤. +_+ ë¦¬íŒ©í† ë§�ì�€ 좀ë�” ê³µë¶€í•´ì•¼ê² ì§€ë§Œ...;; ~cpp The One Page Proposalì�„ ì�½ì–´ë³´ë�„ë¡� í•´. --재ë�™ì¢‹ì�€ì •ë³´ ê°�사합니다아~ ã…Žã…Ž--ì •ìˆ˜ë¯¼
통ìƒ� ë¦¬íŒ©í† ë§�ì—� 대한 ë°˜ë¡ ì�€ 다ì�Œê³¼ ê°™ì�€ ì–‘ìƒ�ì�„ ë�•니다. ë¦¬íŒ©í† ë§�ì�„ ë§Žì�´ 한다 --> 함수 개수가 많아진다 --> 콜 ì²´ì�¸ì�´ 길어진다 --> ì†�ë�„ê°€ ëŠ�ë ¤ì§„ë‹¤. 메모리 ë¬¸ì œë³´ë‹¤ëŠ” ì†�ë�„ ë¬¸ì œì—�서 ë¦¬íŒ©í† ë§�ì—� 대한 ìš°ë ¤ê°€ ë¶ˆê±°ì ¸ 나오는 것ì�´ì£ .
그런ë�°, 함수 호출ì—� ì�˜í•œ 오버헤드는 컴파ì�¼ëŸ¬/VM ê¸°ìˆ ì�´ ë°œì „í•˜ë©´ì„œ ì �ì � ì¤„ì–´ë“¤ê³ ìžˆê³ , ë¬¸ì œê°€ ë³µìž¡í• ìˆ˜ë¡� 그런 ë‚®ì�€ 단계ì�˜ 옵티마ì�´ì œì�´ì…˜ë³´ë‹¤ 높ì�€ 단계ì—�서ì�˜ 최ì �화가 훨씬 ë�” 효과ì �ì�¸ë�°, ë¦¬íŒ©í† ë§�ì�´ 잘 ë�˜ì–´ 함수가 잘게 ìª¼ê°œì–´ì ¸ 있으면 높ì�€ 단계ì�˜ 최ì �화를 하기가 쉬워집니다. (그래ë�„ ì—¬ì „ížˆ ë¡œìš°ë ˆë²¨ì�˜ 옵티마ì�´ì œì�´ì…˜ì�´ 필요하다면 매í�¬ë¡œë‚˜ 코드 ì œë„ˆë ˆì�´ì…˜ì�„ 쓸 수 있습니다. DavidParnasì�˜ 논문 ì°¸ê³ )
ë‚®ì�€ 단계 최ì �화는 10% ì†�ë�„ 높히는 경우가 많지만 높ì�€ 단계 최ì �화는 100%나 1000%ë�„ 종종 있습니다.
ë¦¬íŒ©í† ë§�ì�„ 잘 한다면, ì†�ë�„ë¬¸ì œëŠ” 나중ì—� ì‹ ê²½ 쓰는 것ì�´ ê²°ê³¼ì �으로 나ì�€ 경우가 많습니다.
--JuNe









