2010년 12월 1일 수요일

new delete로 메모리 할당해주기

C++이 기존의 C보다 더 강력한(효율적인이 맞나?ㅋㅋ)기능중에 하나가 바로 new와 delete이다.

C에서는 free와 malloc을 가지고 메모리 분배를 하였지만 이능 굉장히 비효율적이고 코드의 가독성을 엄청나게 떨어트리는 주범이었다.

이를 극복하기위해 C++에서는 new와 delete라는 명령어가 생겼다. 이름에서도 알수 있듯이 new는 메모리 할당이고 delete는 메모리 회수다 ㅋㅋ

1차원 array일 경우에는 메모리 할당과 회수가 아주 쉽다.
int n = 100;
int *a;
a =  new int [n]
...
delete []a;

2차원일때는 조금 복잡하다ㅋㅋ
int n = 100, m = 200;

//분배 시작
int **a;
a = new int *[m];

for(int i=0; i<m; i++)
{
a[i] = new int [n];
}
//분배완료

...

//회수 시작
for(int i=0; i<m; i++)
{
delete []a[i];
a[i] = NULL;
}

delete []a;
a = NULL;
//회수 완료

똑같은 방법을 사용해서 3,4,5,...차원 array를 정의할수 있다 ㅋㅋ



아 그리고 여기서 분명히 왜 int a[100]이런 방법을 안쓰고 new혹은 malloc을 사용하는게 좋은지 물어보는 사람들이 있을거다. 분명 int a[100] 이라는 방식은 굉장히 편하다. 하지만 이 방법은 공간의 크기를 상수로 정해줄수밖에 없다. 즉
int n = 100;
int a[n];

위와 같은 명령은 에러로 간주된다. 왜냐하면 n은 상수가 아니기 때문이다. 하지만 new나 malloc은 []괄호 안에 꼭 상수를 안 써넣어도 사용할수 있다.






Operator Overload - 연산자 중첩

C++에서 operator overload(연산자 중첩)는 아주 자주 쓰이는 기법이다

 - operator overload란?
C++에 기존에 있는 연산자 부호 +,*,-,++,+=등이 숫자에만 사용되지 않고 임의로 만든 class나 struct에도 사용될수 있도록 하는 기법이다.

- operator overload를 쓰는 이유
연산자 자체의 의미에 맞게 operator overload를 하게되면 코드의 가독성이 높아져 가독성이 높은 코드를 만드는데 큰 도움을 준다.


아무리 이렇게 얘기해봤자 너무 추상적이어서 이해하기 힘들거다. 그래서 얘를 들어보도록 하자.

코딩을 하다가 Vector를 쓸 일이 나와서 아래와 같이 Vector 클래스를 정의하게 됐다.
class Vector
{
public:
...
private:
double e1;
double e2;
};
이 class를 써서 프로그램을 구현하다보면 Vector 더하기,빼기 그리고 Vector간의 내적,외적을 구하는 연산을 진행하게된다. 하지만 모든 함수들을 다 Vector Plus(Vector v1, Vector v2); 이런식으로 구현한다면 코드의 가독성은 굉장히 떨어지게된다. C++에서는 이런 코딩에 대해서 편의를 주기위해 +,-,*등의 부호를 프로그래머 맘대로 정의할수 있게 해준다. 즉 아래와 같은 코드가 의미있도록 프로그래머가 설계할수 있다.
void main(void)
{
Vector v1,v2;
...
Vector v3 = v1+v2;
...
}

그렇다면 이런 코드를 설계하려면 어떻게 해야 하는지 알아보자.
operator overload를 하기 위해서는 operate라는 선언방법을 사용해야 한다.
operator들은 class안에도 선언할수 있고 밖에도 선언할수 있다. 밖에 선언할때는 friend방식으로 선언해야 한다. 아래에서는 비교적 간단한 안에 선언하는 방법에대해서만 설명하겠다.
몇가지 operator의 선언방법은 아래와 같다(Vector class를 얘로 들었을때)
class Vector
{
public:
...
const Vector operator+(const Vector &v) const;
Vector &operator+=(const Vector &v);
double operator*(const Vector &v) const;
Vector &operator=(const Vector &v);
Vector &operator++(void);
const Vector operator++(int);
private:
...
};


'+' operator의 정의함수는 아래와같이 쓸수 있다.
const Vector Vector::operator +(const Vector &v) const
{
Vector temp;
temp.e1 = e1 + v.e1;
temp.e2 = e2 + v.e2;

return temp;
}

이렇게 한 후 main함수에서 v1 = (3,4), v2 = (1,9)  (※주의, 이건 코드가 아닙니다 ㅋㅋ) 이 두 벡터를 아래와 같은 코드로 더하게 되면 v3 = (4,13)이된다.
void main(void)
{
...
v3 = v1+ v2;
...
}

다른 operator들도 똑같은 방식으로 선언하고 정의하여 사용하면 된다.

다른 operator정의의 예는 이 글에 다 쓰지 않고 첨부파일에 붙여놓아야겠다. 글이 너무 길어지면 쓰는 나도 읽는분도 너무 힘드니까 ㅋㅋ

위 operator들을 보면 const,&가 붙는 위치가 뒤죽박죽이다. 다음 글에서는 const와 &가 어떤 규칙으로 붙여지는지 간단하게 설명하도록 하겠다.





2010년 11월 30일 화요일

블로그 방문자수 급증

한 4달동안 건들지도 않은거 같은데...
이번달 블로그 방문자수가 장난아니게 많다

이제 여유가 좀 생겼으니 열심히 관리해야지 ㅋㅋ

2010년 7월 23일 금요일

신기한 단어들

만약 A = 0.01, B = 0.02, C = 0.03, ..., Y = 0.25, Z = 0.26이라고 했을때

Hard work (노력)
  H+A+R+D+W+O+R+K = (8+1+18+4+23+15+18+11)/100 = 98%
 

Knowledge(지식)
  K+N+O+W+L+E+D+G+E = (11+14+15+23+12+5+4+7+5)/100 = 96%


Love(사랑)
  L+O+V+E = (12+15+22+5)/100 = 54%


Luck(운)
  L+U+C+K = (12+21+3+11) = 47%


Money(돈)
    M+O+N+E+Y = (13+15+14+5+25)/100 = 72%


Leadership(리더쉽)
     L+E+A+D+E+R+S+H+I+P = (12+5+1+4+5+18+19+9+16)/100 = 89%
돈도,노력도,지식도 100%가 아니라면 무엇이 100%일까?
바로 태도이다!

ATTITUDE(태도)
   A+T+T+I+T+U+D+E = (1+20+20+9+20+21+4+5)/100 = 100%


신기하지 않은가?
언제나 긍적적인 태도로 세상을 대해야 100%의 삶을 살수 있지 않을까?

2010년 5월 22일 토요일

[C++] 비트연산자

C++에서는 bit연산자를 지원한다.
여기서 비트 연산자는 2진수에서 자주 쓰이는 연산을 말한다.
즉 and,or,xor,not이 그들이다.

1. and: A and B를 C++에서는 아래와 같이 계산한다.
Result = A & B

2. or: A or B를 C++에서는 아래와 같이 계산한다.
Result = A | B

3.xor: 이 A xor B를 C++에서는 아래와 같이 계산한다.
Result = A^B

4.not: not(A)를 C++에서는 아래와 같이 계산한다.
Result = ~A

나머지 bit연산자는 (예nor,nand등등) 이 기본적인 연산자로부터 파생하여 계산할수 있다.

[C++] 16진수 8진수 출력하기

C++은 C와 달리 cout이라는 출력방법을 쓰기 때문에 변수의 유형을 지정해줄수 없다.
그래서 cout << value << endl 을 그냥 실행하게 되면 변수의 유형 그대로 출력이 되게 된다.

그렇다면 C++에선 10진수 16진수 8진수등으로 출력할수는 없는것일까?
답은 아니다.

C++에서도 16,10,8진수중 하고싶은걸 골라서 출력할수 있다.

C++에서 16진수 출력방법
cout << hex << value

C++에서 8진수 출력방법
cout << oct << value

C++에서 10진수 출력방법(이건 default이기 때문에 위 연산자( hex와 dec)를 쓰지 않았다면 안써도 된다)
cout << dec << value

아쉽지만 C++에서는 이진수 출력은 지원해주지 않는다(C도 마찬가지 이다), 이진수는 스스로 프로그램을 짜서 출력하거나 이진수 관련 해더 파일을 불러서 그 라이브러리에 있는 함수를 써야 한다.

[Matlab] 메트릭스 역순으로 바꾸기

한 메트릭스를 역순으로 바꾸는데는 2가지 방법이 있다, 세로 역순과 가로 역순이다.
이 두가지에 대해서 각각 함수가 존제한다.

1.세로 역순
a = flipud(b);

예를 들어서 b = [1,2,3;2,7,6]이라면 a는 [2,7,6;1,2,3]이 된다. 말그대로 세로 역순이 된다.


2.가로 역순
a = fliplr(b);
예를 들어서 b = [1,2,3;2,7,6]이라면 a는 [3,2,1;6,7,2]가 된다. 말그대로 가로 역순이 된다.




2010년 5월 14일 금요일

[C++] VS 2005, VS 2008: fatal error C1902 에러 해결법

원래 잘 되던 Visual Studio(난 2008을 쓰고 있다) 가 잘 안된다

빌드할때 "fatal error C1902: 프로그램 데이터베이스 관리자가 일치하지 않습니다. 설치를 확인하십시오." 가 계속 뜬다.

인터넷에서 한동안 찾아본 결과 해결법은 아주 간단했다.

fatal error C1902 가 뜨는 이유는 컴파일러가 mspdb80.dll , mspdbsrv.exe , mspdbcore.dll 을 찾지 못해서 생기게 된다. 이 파일들을 찾아서 "VS설치경로\VC\bin"에 복사해주면 된다.
이 파일들은 "VS설치경로\Common7\IDE" 에 있다. 머 그냥 VS설치경로에서 search를 해도 금방 나온다.

만약에 이렇게 해도 문제가 해결되지 않을경우 아래의 방법들도 시도해보기를 추천한다.(밑에 방법들을 사용하기 전에 위 3파일을 VS설치경로\VC\bin"에 꼭 복사해 주어야 한다. )
1. cmd로 command창을 띄워 "VS설치경로\VC\bin"에 들어가 vcvars32.bat를 실행시켜준다.(꼭 command창을 사용하여 실행해야 한다.)
2. C:\windows\system32폴더 안에 있는 mspdb80.dll과 mspdbcore.dll을 지워준다. 이 두 파일을 지우면 시스템에 문제가 생길지 모르니(아직 생긴 문제는 없지만 혹시 모르니까..) 백업을 해두자.

이래도 해결되지 않으신 분들은 댓글 남겨주시기 바랍니다^^

2010년 4월 26일 월요일

드디어 블로그 연지 7개월만에 방문자가 3000명을 넘었습니다.

여러분의 뜨거운 성원에 감사 드립니다~

이번달은 방문자가 700명가까이 되네요

하루 평균 20명정도 방문하면 이번달 700명의 목표는 무난히 넘길듯 하네요 ^^

다음달 목표는 1000명입니다!

1년안에 하루평균 방문자수 100을 넘길수 있는 블로그가 되자~!

2010년 4월 3일 토요일

[Matlab] - 소수를 정수로 바꾸기!

Matlab에서는 '소수 -> 정수' 로 바꾸는데는 네가지 명령어가 쓰인다.


1. n = ceil(x)
  소수점 뒤에 숫자를 무조건 올린다.
  예:
      ceil(3.9) = 4
      ceil(1.4) = 2
      ceil(2.001) = 3
      ceil(-3.9) = -3
      ceil(-3.1) = -3
   

2. n = floor(x)
    소수점 뒤에 숫자를 무조건 내린다.
    예:
        floor(3.8) = 3
        floor(3.01) = 3
        floor(4.9999) = 4
        floor(-1.2) = -2
        floor(-2.9) = -3

3. n = fix(x)
     x위아래 정수중에서 0에 가까운 정수를 택한다
     예
         fix(3.3) = 3
         fix(4.99) = 4
         fix(-1.2) = -1
         fix(-8.999) = -8

4. n = round(x)
     반올림을 한다
     예:
          round(3.5) = 4
          round(9.1) = 9
          round(-1.1) = -1
          round(-2.6) = -3

마우스 오른쪽 버튼 해제

네이버나 다음 블로그를 볼때면 퍼가고 싶은 그림이 많은데...

대부분의 그림들은 락이 걸려있어서... 우클릭이 금지되어 있다. ㅠㅠ

꼭 퍼가고 싶은 그림이 있어서, 우클릭 해제 방법을 찾았는데... 가장 간단한 방법은 이거였다.


즐겨찾기에

javascript:function r(d){d.oncontextmenu=null;d.onselectstart=null;d.ondragstart=null;d.onkeydown=null;d.onmousedown=null; d.body.oncontextmenu=null;d.body.onselectstart=null;d.body.ondragstart=null;d.body.onkeydown=null; d.body.onmousedown=null;};function unify(w){r(w.document);if(w.frames.length>0){for(var i=0;i<w.frames.length;i++){try{unify(w.frames[i].window);}catch(e){}};};};unify(self);

이 웹페이지를 추가한다.

그리고 우클릭이 막힐때마다 이 즐겨찾기를 한번씩 클릭해주면 끝!
그럼 우클릭이 안막히고 잘 될거다~ㅋㅋ

2010년 2월 19일 금요일

[Matlab] - 매트랩 랜덤함수

매트랩은 랜덤함수가 많은 편인대... help를 쳐봐도 머가먼지 알수가...

그래서 쓸때마다 하나하나 정리를ㅋㅋㅋ 앞으로는 내 블로그를 보면 어떤 랜덤함수를 쓰면 좋을지 알수가ㅋㅋㅋ


1. rand(m,n)

우선 rand(m,n)제일 간단한거

만들어지는 랜덤수의 범위는 [0,1]이고 m*n개만큼 만든다

랜덤수는 평균분포(Uniformly Distributed)에 의해서 만들어진다( X ~ U(0,1) )

즉 rand(3,4)를 실행하면 랜덤수 12개를 만든다.

하나 만들구 싶으면 rand(1,1)실행하면 되구ㅋㅋㅋ

 


2.randn(m,n)

mean = 0, variation은 1인 normal distribution 을 따르는 랜덤수를 뽑는다. 즉 X~N(0,1),그렇다 정규분포다!

그럼 X~N(mean, "standard deviation"^2) 은 어떻게 구할까?

그냥 x = mean + "standard deviation" * randn(m,n);

이렇게 구하면 된다



3.randperm(k)

이 함수는 1~k까지의 정수를 랜덤하게 배열해준다

만약에 1~k중에 임의m게의 숫자를 중복되지 않게 뽑고 싶다면 randperm(k)를 하고 그 결과의 1에서 m까지 값을 쓰면 된다.

2010년 2월 7일 일요일

[C++] - struct와 class의 차이점

이거 아마 C++초보라면 잘 모르는 문제일텐데...

struct와 class는 개발자 입장에서 봤을때 차이가 없는거나 마찬가지이다.
다만 메모리 공간까지 깊게 들어간다면 class와 struct는 조금의 차이가 있긴하다...(하지만 저는 잘 모릅니다....ㅠㅠ)

class는 함수도 만들수 있고 operator도 만들수 있고 그러지 않냐고 반문하시는 분들이 있을텐데...
struct에도 똑같이 함수고 operator고 선언이 가능하다. 그 문법은 class의 문법과 똑같다(당연히 이건 C++에 한해서다. 다른언어에선 class와 struct가 다를수 있다)
struct에도 변수는 public private protect로 나누어진다.

다만 여기서 단 한가지 obvious한 차이점을 얘기하자면....
....
....
struct에서 public private protect라고 안하고 변수를 선언하면 변수는 public변수가 되고(즉  default가 public이란 얘기)
class에서 그냥 변수를 선언하면 변수는 private변수가 된다(즉 default는 private란 얘기)

2010년 2월 5일 금요일

[Matlab] - 각종 Matrix 만들기

이번 글에서는 매트랩에서 함수로 만들수 있는 각종 Matrix에대해서 소개하려 합니다.

1.  A = zeros(n,m)
    말 그대로 모든 element가 0인 매트릭스를 만듭니다.
    참고로 A = zeros(n) 과 A = zeros(n,n)의 결과는 같습니다.


2.  A = ones(n,m)
     말 그대로 모든 element가 1인 매트릭스를 만듭니다.
     참고로 A = ones(n) 과 A = ones(n,n)의 결과는 같습니다.


3.  A = eye(n)
     이 함수는 왼쪽 위부터 오른쪽 밑까지만 1이고 나머지는 다 0인 n*n Matrix를 만들어 줍니다.
     즉 A = eye(3) 의 결과는
     A = 1 0 0
           0 1 0
           0 0 1
     이 되는거죠.



오늘은 여기까지 하고 나중에 더 소개해보도록 하겠습니다.~^^

[Matlab] - 다항식 계산 함수들

우선 설명해야 하는건:
매트랩에서 다항식(1차)을 표시할때는 계수만 표시함으로서 끝낼수 있는데
얘를 들어서 p = [1,7,9,8,3]; 이라면 p가 표시하고 있는 다항식은
y = f(x) = 1*x^4 + 7*x^3 + 9*x^2 + 8*x^1 + 3;
이 된다.

그럼 이걸 이해한다 하고 뒤의 함수들을 설명하겠다.


1.    y = ployval(p,x);
       말그대로 y = f(x)를 구한다. 얘를 들어 p = [1,3,10]이고 x=3일때 y = polyval(p,x)를 실행시킨다면
       y = 1*3^2 + 3*3^1 + 10 = 28
       이 된다.


2.    y = roots(p);
       이 함수는 방정식 y = f(x) = 0 의 근을 구한다. 근이 여러게 있으면 모든근을 다 구하고(솔직히 모든 근          을 다 구할수 있다고 생각하지는 않지만...이걸로 모든근을 다 구할수 있으면 어떤방정식이든 다 풀수          있다는 얘기인데...상식적으로 모든 방정식을 다 푼다는건 불가능한 얘기 아닌가!) 복소수 근이 있다면          복소수근도 구한다.


3.    poly2str(p,'x');
        말 그대로 다항식 p를 써준다. 얘를 들어 p = [1,3,10]이고 poly2str(p,'x')를 실행시키면
        x^2 + 3 x + 10
        가 나온다.


4.     q = polyder(p);
         다항식 미분함수이다. 당연히 결과도 하나의 다항식이어야 한다. 얘를 들어 p = [1,3,10]이고 이 식을 미분한다면(즉 q = polyder(p) 를 실행한다면)
         q = [2,3]
         이 나온다. (당연히 1*x^2 + 3*x + 10 을 미분하면 2*x + 3 이 나온다)








2009년 12월 22일 화요일

[C++] Rum-Time Debugger 끄는법

이거 Visual Studio써보셨 분들이라면 한번씩 꼭 느껴봤을법한 불편함...

왜 아무 이유없이 rum-time debugging이 나와서 explorer한번씩 꺼버려야하는걸까!!!

그래서 이걸 지우기위해 인터넷을 뒤져보니...
ㅋㅋㅋ

-------------------------------------------------------------
우선 비주얼 스튜디오를 켜서
도구 - 옵션 - 디버깅 - Just in time
이렇게 들어가서 모든 항목을 다 취소시킨 담에

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
위 레지스트리를 다 지우면!
문제 해결!
-------------------------------------------------------------

물론 가끔가다 문제가 디버깅 할때가 있기는 하지만
확실한건 디버깅 횟수가 확 준다는거!

강추임다~!

2009년 11월 23일 월요일

[Matlab] - 매트릭스 괄호의 사용법

오늘은 매트랩에서 매트릭스 연산에서의 괄호의 사용법을 간단히 소개해볼까한다.
쓰이는 괄호는 () 과 [] 가 있다.

우선 ():
a(3) 은 a매트릭스의 3번째 숫자를 뜻한다.
즉 만약 a = [3,5,6,8,9]이면 a(3) = 6이다.

그럼 a(i,j)가 i번째 행 j번째 열에있는 숫자를 뜻하는것.


다음은 []:
우선 a[1,3]이런식은 존재하지 않는다.[]라는 괄호자체가 매트릭스를 뜻하기 때문이다.
[1,3,4;4,5,6]머 이런게 그냥 매트릭스다.
,는 같은 행에 있는 숫자 사이에 쓰고 ;는 열을 나누어줄때 쓴다.


그리고 애석하게도 {}는 매트릭스 연산에서는 쓰이지 않는다.

2009년 11월 22일 일요일

아이폰 드디어 출시!

오늘부터 KT의 show 폰 스토에서 아이폰 예약판매가 시작됐다!

아 이날을 얼마나 기다려왔던가!

구체적인건
에서 확인해보시길!

아직 폰 스토에서는 3Gs만 예약 가능하고 3G는 직접 대리점에 가서 예약해야하는것 같은...

가격은 요금제 선택에 따라서 다른대 대충 알아본바
월 \45000(통화200분 문자300건 데이터500M) 요금제일 경우 3G(8G)가 13만원정도, 3Gs(16G)가 26만원정도, 3Gs(32G)가 39만원...
월 \65000(통화400분 문자300건 데이터1G) 요금제일 경우 3G(8G)가 공짜, 3Gs(16G)가 13만원정도, 3Gs(32G)가 26만원...

이 이하의 요금제는 우선 데이터통신양이 너무 적기땜에 아이폰을 산다는 의미가 없어지고 아이폰의 가격이 터무니 없이 비싸지는... 이 이상의 요금제는 월 부담이 너무 큼(월 \95000)..ㅠㅠ...어차피 외국에 써본사람들 얘기 들어보면 어차피 한달동안 1G이상 쓰는거 거의 불가능한...

지금 돈이 있으면 바로 지르겠지만...요즘 너무 궁해서...게다가 전에산 폰 약정도 아직 안끝나서 해지부터 해햐하는데..해지하는데만 10만원 들듯..ㅠㅠ.. 방학동안 알바라도 뛰어야 하는건가..ㅠㅠ

어쨌든 드디어 아이폰이 출시된다니 너무 기쁘다! 물론 지금 당장 사지는 않겠지만 방학이 되면 알바를 뛰든 용돈을 받든 어떻게든 돈이 들어올거 같으니 무조건 질러야지!ㅋㅋㅋ

2009년 10월 31일 토요일

맨유 2:0 블랙번 at Old Trafford


그렇게 어려운 상대는 아니었는데...
2골밖에 못넣었다는게 많이 아쉬웠다.
아스날은 6:0으로 이겼었고 첼시는 4:0으로 이겼었는데... 더군다나 블랙번은 신종플루땜에 몇몇 주전급 선수들이 결장하지 않았는가!
역시 슈퍼 긱스가 없어서 공격이 제대로 안 이루어지는 것인가...

오늘 배르바토프 완전 활발했다.
 굉장한 움직임이었다, 베르바토프표 오버해드킥이 또 나오는 순간이었다! 골 완전 멋있었음~ ^^(물론 이번시즌 선더랜드의 골망을 흔들었던 오버해드킥보다는 약간 덜했지만ㅋㅋㅋ) 다음주 첼시전에서도 오늘같은 컨디션을 보여주었으면 좋겠다.

루니도 완전 쵝오. 오늘 루니가 배르바토프한테 패스많이 해준거 같던데... 베르바토프가 다 받아먹었으면 오늘 루니도 어시스트 꽤 있었을것을....
그래도 한골 수확이 어디! 원래 한동안 연속으로 골 넣다가 한동안 연속으로 골 못넣고 하는 우리의 웨인 루니! 요 몇주정도 골 못넣었으니까 이젠 좀 넣겠지 했는데 진짜 골 넣었다... 그렇담... 앞으로 6-10경기 정도 연속으로 골 넣는거를 기대해도 좋다는 얘긴데... 다음경기 대 첼시전에서도 골 넣어주시기를~

오늘 수비진은 오셔+ 브라운+ 에반스+ 에브라, 진정한 주전은 에브라밖에 없었던 수비진. 그러나 무실점을 기록해냈다는거는 벤치에 앉아있는 수비수들도 믿음직하다는 얘기!ㅋㅋ
머 물론 좀 위험했던적도 있었고... 사실 한골 먹히긴 했지만(심판이 업사이드라고 판정해서 인정되진 않았지만 사실 골이었죠...), 믿음직스럽다! 특히 에반스 열심히 노력하면 분명히 큰 선수가 될겄임(피케도 남아있었으면 좋았을것을...ㅠㅠ)!

2009년 10월 30일 금요일

Dilhan Necipoglu, 맨유가 사려고 하는 축구 꿈나무



맨유가 사려고 한다는 12살짜리 축구선수 Dilhan Necipoglu
물론 지금 산다고 해서 퍼스트 팀에서 뛰는건 아니지만... 이 동영상 보니까 무섭긴 무섭다, 나중에 크면 엄청 크게 될듯. 2년전에 Davids라는 9살짜리 애도 산거 보면 확실히 선수 키우는데 많은 돈과 시간을 쏟아부으는것 같다.
이렇게 사온 애들중에서 천제 한두명 나왔으면 좋겠다~!