'2008/08'에 해당되는 글 9건

  1. 2008.08.31 내일 개학이네 ㅠㅠ
  2. 2008.08.30 C언어 pointer
  3. 2008.08.30 비주얼 스투디오 단축키
  4. 2008.08.27 SSM 합격 ..(3)
  5. 2008.08.27 MFC 클래스 상속도
  6. 2008.08.27 Gantt Chart & Relation Graph
  7. 2008.08.27 KNU 맛집찾기[BREW]
  8. 2008.08.27 카오스 USB 0.99(MFC)
  9. 2008.08.08 블러그 개설하다.~

내일 개학이네 ㅠㅠ

내일 개학인데 방학동안 뭐한건지 잘 모르겠다 ...

계획을 제대로 안잡고 시간을 허비 한것 때문에 조금허무하다 ㅠㅠ

그래도 방학동안 나름 한개 있다면 MFC 조금 판정도?

이제 과제도 해야하고 학교도 다녀야 하는데 왠지 모르게 둘 다 잘할 수 있을것 같은 느낌? ㅋ

과제는 일단 어플리케이션 조금 해보고 3D , 영상인식 , 가상현실 , 디바이스 드라이버 이쪽으로

넘어가고 싶다. 원래 이런쪽으로 관심은 많이 없었는데 주위에 보고 듣는게 느니까 이런저런

분야에 많은 관심이 가기 시작하는군 ㅎ

일단은 아직 많이 모르니까 이것저것 공부하고 많이 배워야 겠다.
신고
Comment 0 Trackback 0
Top

C언어 pointer


나름 포인터 어느정도 땟다고 생각해도 프로그래밍을 하다보면 끊임없이 마주치는 문제가

포인터 문제가 아닌가 싶다.

개학도 거의 다됬고 개학하면 과제도 해야하고 학과 공부도 해야 되서 막간을 이용해서

 다시 체계적으로 배우는 C언어 포인터 라는 책을 읽었다.

특별히 다시 정리해야 할 부분만 요약하면 다음과 같다.


사용자 삽입 이미지


++ , -- , & , * , type casting 단항자 등의 우선순위는 모두 같다.
우선순위가 같을때는 right to left 를 따른다.

int imsi[ 3] ; imsi와 같이 배열명은 배열의 시작위치 값을
값을 같을 가르킬 뿐이지 값을 저장할 수 없다.
즉 변수가 아니다.
따라서 imsi ++ , imsi --와 같은 연산은 할수 없다.

++변수 변수++ 의 의미
변수의 값을 1 증가시키거나(++) 감소시키는(--) 연산자로서 변수의 앞 또는 뒤에 붙여서 사용한다.
변수에 붙는 위치에 따라 의미가 극단적으로 달라지는데, 변수의 뒤에 오면
'문장의 실행이 끝난 다음에 변수를 증감시켜라'라는 의미이며,
(이거 너무 헷갈렸었다)
변수의 앞에 오면 '문장 실행 전에 변수를 증감시켜라'라는 의미이다.
그리고 반드시 변수에 사용되어어야 한다.

2차원 배열과 2차원 배열 포인터 변수 연결

int imsi[ 2 ][ 3 ] ;
int (*imsip)[ 3 ] ;
imsip = imsi ;
sizeof(*imsip) -> 4 * 3 = 12

포인터에 주소값을 할당하려 할 때 대상체를 무시한채 할당 할 수 없다.
int imsi[ 3 ] = { 3 , 4, 5 } ;
int (*imsip2)[ 2 ] = imsi -> 이건 에러다.

( imsi는 1차원 배열 , imsip2는 열이 2차원이고 열이 2차원인 배열을 가르킬 수 있다.)


//////////////////////////////////////////////////////////////
#include <iostream>

using std::cout ;
using std::endl ;

int main()
{   
    int imsi[ 3 ][ 2 ] = { 1, 3, 4, 5, 6, 7 } ;
    int (* imsip)[2] ;   
   
    imsip = imsi ;

     // 2개 모두가 같은 값을 가지고 있다.
    cout << imsip  << endl ;            //2차원 배열을 가르키는 주소            
    cout << *( imsip + 0 ) << endl ; //2차원 배열의 첫번째 행을 가르키는 주소

    int ** temp ;

    temp = new int *[ 3 ] ;

    for ( int i = 0 ; i < 3 ; i ++ )
    {
        temp [ i ] = new int [ 2 ] ;
    }

    // 다른 값을 가지고 있다.
    cout << temp << endl ;
    cout << temp[ 0 ] ;

    for ( int i = 0 ; i < 2 ; i ++ )
    {
        delete temp [ i ]  ;
    }

    delete  temp ;
}

//////////////////////////////////////////////////////////////


int (*imsi)[2]
int *temp[2]
imsi는 2차월 배열을 담을수 있는 2차월 배열 포인터 변수 이고 temp는 포인터 배열이다.
temp의 값은 바뀌지 않는다면 imsi는 2차원 배열의 주소를 가르킬수 있다.

int ** temp ; // 동적으로 할당해서 2차원 배열을 가질 수 있따.
int *temp1[2] ; // 포인터값을 저장 할 수 있는 1차원 배열
int ( * temp2)[ 2] ; //  2차원 배열값을 저장할 수 있는 2차월 배열 포인터


char * temp1 = "kin";
char temp2[] = "kin";

temp1은 포인터이기 때문에 메모리를 할당받고 temp2는 배열명이기 때문에
주소값을 할당 받을 수 없다. temp1[ 0 ] = 'a' 이건 에러다. 왜냐하면 "kin" 이 저장된
주소는 건드릴수 없는 상수 값이 저장되어 있기 때문이다.

imsi[ i ]  == * ( imsi + i )
i[ imsi ]  == * ( i + imsi )  // 이따구로 쓰는 사람 병신


NULL pointer는 0x00000000 ( 0번지 주소 ) 를 가르키는게 아니다. 어떠한 곳도 가르키지 않는 주소값을 나타낸다.

void pointer 어느 것이든 가리킬 수 있는 포인터이다.
- 어떠한 형 변환 없이도 void 형 포인터 변수에 대입이 가능하다.
- void pointer는 type casting을 한 후에 연산을 하여야 한다.

void point error

main()
{
    void imsi( void * temp ) ;
}

void imsi ( void temp [ ] )
{

}

//첨자 연산 역시 type cast가 필요하다. 첨자안에 숫자가 들어왔을때 몇 바이트씩 분기하여야 할지 알수가 없다.
신고
Comment 0 Trackback 0
Top

비주얼 스투디오 단축키

1. 빌드
선택영역빌드 - F7(전역)
선택영역다시빌드 - Ctrl + F7(전역
)

선택영역정리 - Ctrl + Shift + F7(전역)

솔루션빌드 - Ctrl + B(전역)

솔루션다시빌드 - Ctrl + Shitf + B(전역)

솔루션정리 - Ctrl + Alt + B(전역)

 

2. 디버그
다시시작 - Ctrl + Shift + F5(전역)

디버깅중지 - Shift + F5(전역)

디버깅하지않고시작 - Ctrl + F5(전역)

디스어셈블리 - Ctrl + Alt + D(전역)

디스어셈블리설정해제 - Ctrl + F11(전역)

레지스터 - Ctrl + Alt + G(전역)

메모리1~4 - Ctrl + Alt + M  1~4(전역)

모두중단 - Ctrl + Alt + Break(전역)

모든중단점지우기 - Ctrl + Shift + F9(전역)

스레드 - Ctrl + Alt + H(전역)

시작 - F5(전역)

자동 - Ctrl + Alt + V A(전역)

조사식1~4 - Ctrl + Alt + W 1~4(전역)

지역 - Ctrl + Alt + V L(전역)

중단점설정 - Ctrl + F9(전역)

중단점설정해제 - F9(전역)

커서까지실행 -> Ctrl + F10(전역)

코드변경내용적용 -> Alt + F10(전역)

프로시저나가기 -> Shift + F11(전역)

프로시저단위실행 -> F10

한단계씩코드실행 -> F11

호출스택 -> Ctrl + Alt + C

 

3. 보기
도구상자 -> Ctrl + Alt + X

리소스뷰 -> Ctrl + Shift + E

속성페이지 -> Shift + F4

솔루션탐색기 -> Ctrl + Alt + L

웹브라우저표시 -> Ctrl + Alt + R

클래스뷰 -> Ctrl + Shift + C

 

4. 빌드
선택영역다시빌드 -> Ctrl + F7

선택영역빌드 -> F7

선택영역정리 -> Ctrl + Shift + F7

솔루션다시빌드 -> Ctrl + Shift + B

솔루션빌드 -> Ctrl + B

취소 -> Ctrl + Break

 

5. 창
다음문서창 -> Ctrl + F6

도구창닫기 -> Shift + Esc

문서창닫기 -> Ctrl + F4

문서창활성화 -> Esc

이전문서창 -> Ctrl + Shift + F6

 

6. 파일
기존항목추가 -> Shift + Alt + A

모두저장 -> Ctrl + Shift + S

새프로젝트 -> Ctrl + Shift + N

새항목추가 -> Ctrl + Shift + A

선택한항목저장 -> Ctrl + S

파일열기 -> Ctrl + O

프로젝트열기 -> Ctrl + Shift + O

 

7. 편집
끝까지단어삭제 -> Ctrl + Del

다음단어까지선택 -> Ctrl + Shift + 오른화살표

다음단어로 -> Ctrl + 오른화살표

다음찾기선택 -> Ctrl + F3

단어자동완성 -> Alt + 오른화살표

대문자로 -> Ctrl + Shift + U

뒤로삭제 -> 백스페이스

멤버목록 -> Ctrl + J

문서끝까지 선택 -> Ctrl + Shift + End

문서끝으로 -> Ctrl + End

문서시작까지선택 -> Ctrl + Shift + Home

문서시작으로 -> Ctrl + Home

문자바꾸기 -> Ctrl + T

바꾸기 -> Ctrl + H

선언으로이동 -> Ctrl + F12

소문자로 -> Ctrl + U

시작까지단어삭제 -> Ctrl + 백스페이스

왼쪽으로컨트롤크기조정 -> Ctrl + Shift + 왼화살표

이동(줄이동) -> Ctrl + G

이전찾기 -> Shift + F3

정의로이동 -> F12

찾기 -> Ctrl + F

찾기콤보상자로이동 -> Ctrl + D

출력창의다음위치로이동 -> F4

출력창의이전위치로이동 -> F3

클립보드링순환 -> Ctrl + Shift + Ins

파일에서바꾸기 -> Ctrl + Shift + H

파일에서찾기 -> Ctrl + Shift + F

현재단어선택 -> Ctrl + W


8. 프로젝트

새폴더 -> Ctrl + Num1

시작프로젝트로설정 - Ctrl + Num0(전역)

 

9. 도구

옵션 - Ctrl + Num.(전역)

키보드사용자지정 - Ctrl + Num2(전역)

신고
Comment 0 Trackback 0
Top

SSM 합격 ..

사용자 삽입 이미지

솔찍히 들어오고 나서 보니 난 완전완전 뽀록으로 들어 온거 같다. ㅎ

들어올때 다른 사람들 작품들 보니까 정말 잘 만들었던데 어에어에 하다보니 들어오게 됫네 ㅋ

들어올때 질문이 뭐였더라 ?

- C++ 에서는 다중상속에 되는데 Java에서는 지원되지 않는데 다중상속에 문제점은 없는가?

- 다이나믹 프로그래밍을 아는가?

- 객체지향 프로그래밍이 뭐라고 생각하는가?

- USB에서 프로그램이 돌아가다가 USB를 빼면 Page Fault가 읽어 날 수 있지 않는가?
 ( 나중에 알았는데 이동저장매체에서는 Demand Paging을 쓰지 않고 모두 Paging을 해서 Page Fault는 잃어 나지 않는다)

- C#에서 델리게이트를 아는가?

- 이작품 말고 다른 작품 만든거 없는가?

- 몇학년 인가?

- 멤버십 들어온다면 주로 어떤 공부를 하고 싶은가?

- 클래스 헤더에 Static으로 쓰는것이랑 Extern을 쓰는것은 무슨 차이 인가?

- C++ 에서 new 와 melloc의 차이는 무엇인가?

대충 질문만 20개 정도 받았는거 같은데 이정도 밖에 기억이 나지 않는다 ㅎ

막상들어오니까 생각보다 조금 더 빡센거 같은데 하루하루가 갈수록 확실히

실력이 많이 느는거 같다....
신고
Comment 3 Trackback 0
  1. danguria 2008.08.30 23:58 신고 address edit & delete reply

    글씨 들렸다.ㅋ
    melloc-> malloc....zz

  2. hannam 2008.09.07 00:28 신고 address edit & delete reply

    정말 좋은 정보.. 감사히 얻어갑니다^^

  3. 연애가중매 2012.01.31 13:53 신고 address edit & delete reply

    안녕하세요. 잘보고갑니다~

Top

MFC 클래스 상속도

MFC 각 클래스 상속 관계를 나타낸다. (MSDN)
사용자 삽입 이미지


신고
Comment 0 Trackback 0
Top

Gantt Chart & Relation Graph

 
사용자 삽입 이미지
단기과제로 3인 1팀으로 과제를 진행하는데 처음으로 제대로 된 팀 프로젝트를 만들었다.

프로그램은 팀원들의 프로젝트 일정을 관리하고 이를 공유하며 팀원들간 정보를 교환하기 쉽도록 채팅

하는 프로그램이다.

그중에 내가 맡은 부분이 간트 차트를 그리고 간트차트에서 입력한 Task간의의 관계를 보여 줄 수

있도록 구성한 관계도를 구성하는 것인데 처음에는 엑셀처럼 입력받는 부분을 어떻게 받을까 무쟈게

고민 많이 했었따. 처음에는 List Control로 구현하였는데 너무나 기본적인 기능만 제공하여서

내가 원했던 콤보박스, 에디트박스, 데이트컨트롤 ,프로그래스 바를 이안에 넣을 방법이 없을까

한 2틀을 고민 했는데 답이 나오지 않아서 오픈소스를 찾게 되었고 XListControl을 구했다.

근데 웬걸? 오픈소스 분석하는게 이렇게 어려울줄인줄 몰랐다 한 3일쯤 파니까 내가 원했던

레이아웃이 나오게 되었고  한 하루 동안 데이터들간의 관계를 정하고 오른쪽에 간트 차트를 그렸는데

이야 날짜 하나하나 계산해서 정환한 좌표에 그림을 찍어 줘야 했는데 이것또한 만만치 않았다.

픽셀하나하나 계산하기를 2일 그렇게 완성 되었고 마지막으로 Task간 관계도를 구현하게 되었는데

이것을 해보니까 파워포인트 같은데서 그림하나하나를 객체로 인식하는것을 알게 되었따.

객체의 좌표값을 을 가지고 있다가 마우스가 움직이면 해당좌표안에 있는지 없는지 계산하는 방식

이었다. 이거 해보니까 파워포인트에서 그림을 뿌려주고 수만은 그림개체들을 인식하는게

정말 너무나도 대단하다는 것을 알게 되었다. 하여튼 하나하나 개체를 인식하는것을 성공하고

이들 사이에 관계를 정의 할 수 있도록 선을 그어 주고 해당선을 인식하게 하고 색깔도 입히고

태스크 간의 순환관계를 체크 해주니까 끝! 드디어 내가 맞은 부분을 완성하고 다른 팀원들과

서브버전을 써서 프로그램을 합치게 되었다. 서브버전 쓰기전에는 이버 꼭 써야 하나 이런 생각

했는데 안쓰면 완전 개고생 하는거다. 팀들간의 팀 프로젝트 제대로 하려면 꼭 필요한 거다. ㅎ

하여튼 이번 프로젝틑 하면서 MFC 내부의 좌표계산 그리고 이벤트 처리에 대해서 조금더

많이 알게 되었다 ㅋ




신고
Comment 0 Trackback 0
Top

KNU 맛집찾기[BREW]

올해초에 누리인재 사관학교 모바일 프로그래밍 교육을 받을때 작성한 프로그램이다

나 말고도 4명이 더있었지만 C 언어를 해본적이 없어서 실질적으로 프로그램은 혼자 작성하게 되었다.

시연할 때 버그가 발생하여서 제대로 버그를 잡지 못한게 너무나 아쉽다 ㅠㅠ

프로그램 이름은 KNU 맛집 찾기 라는 프로그램인데 개발환경은 BREW이고

PC에서는 에뮬레이터가 있어야 돌아가고 만들고 KTF 폰이 아니라서 실제로 가지고 다니지는 않는다.

경북대학교 근처에 4개의 문이 있고 각 문에 존재하는 맛집을 지도별 ,가격별 ,음식별로 찾아준다.

사용자 삽입 이미지

메인메뉴
사용자 삽입 이미지
음식별 검색화면을 메뉴를 선택하였을 때
사용자 삽입 이미지
한식 메뉴를 골랐을때
사용자 삽입 이미지

찜을 골랐을 ㄸ ㅐ ㅎ


신고
Comment 0 Trackback 0
Top

카오스 USB 0.99(MFC)

나의  MFC 윈도우 프로그래밍 첫번째 작품이다.

MFC 접해본지 2달째지만 내부를 들여다 보면 정말 정말 이렇게 밖에 못 짯을까 라는 생각도 들지만

처음에는 다 그렇지 라고 위안을 삼는다.

MFC 를 차근차근 공부하는 겸 SSM 지원할 겸 프로그램을 짜서 그런지 공부를 그렇게 제대로 한 것도

아니고 프로그램도 그렇게 제대로 잘 만든것이 아니기는 하지만 처음 작품이라 위안을 삼는다.

원래 목적은 USB에 여러가지 작업환경을 저장하여서 USB를 꽃으면 자동으로 사용자가

미리 셋팅해 두었던 환경으로 자동으로 변경하여주는 프로그램이지만 짜다보니 시간이 많이 부족하고

실력도 많이 부족하여서 아웃풋은 글쎄다 ㅎ
사용자 삽입 이미지
로그인 화면


사용자 삽입 이미지

저장소 화면
사용자 삽입 이미지


사용자 삽입 이미지
웹패스 화면
사용자 삽입 이미지

환경설정 화면


최호성 씨의 윈도우 프로그램을 많이 참조 했는데 짜고보니 전혀 객체지향적이지 않은 구조로 짜게 되었다. 나중에 세미나때 그사람이 쓴 책은 전혀 객체지향적이지 프로그램 스타일은 닮지 마라고 조언을 많이 받았다 ㅎ



신고
Comment 0 Trackback 0
Top

블러그 개설하다.~

뭐 딱히 용도가 있어서 만든 블러그는 아니지만 내 생각 주저리주저리 써봐야지 ㅋ
신고
Comment 0 Trackback 0
Top

prev 1 next