'분류 전체보기'에 해당되는 글 170건

  1. 2009.04.06 클래스에서의 함수 포인터 사용
  2. 2009.04.05 희곤이가 상욱이에게
  3. 2009.04.05 수학 개그 1
  4. 2009.03.26 상효를 위한 포스팅!
  5. 2009.02.10 찍어야 할 스킬. 2
  6. 2009.02.07 후배들을 만나고 3
  7. 2009.02.04 CreateProcess 함수
  8. 2009.01.11 나쁜 생각 3
  9. 2009.01.11 2009.01.11(2) 1
  10. 2009.01.11 2009.01.11(1)
Study - Programming/C/C++2009. 4. 6. 19:28
  어제 _beginthreadex()함수를 호출하다가 이런일이 있었다. 예를 들면 대충 이러한 상황이였다.

class ex_Class  //예제 클래스
{
private:
  unsigned WINAPI ThreadProc(LPVOID lParam)  //스레드를 위한 함수
  {
    //코오드
  }
  void TestFunction();

}
  void ex_Class::TestFunction()
  {
    _beginthreadex(NULL,0,ThreadProc,...);//스레드 생성
  }


이러니 _beginthreadex부분에서 컴파일 에러가 났다.  이유는 ThreadProc가 올바르지 않는 호출이라고..
처음에는 왜 그런지 몰라서 한참 헤매다가 나중에 겨우 이유를 찾았다.(당시에 인터넷도 안되고 해서 로컬 MSDN으로 한참 고생했다.)


우선 ThreadProc는 &ex_Class:ThreadProc같은 형태로 인자를 넘겨야 한다. ex_Class의 멤버함수이므로 접근 한정자를 붙여 주고 포인터이므로 &를 붙여 준다.
다음으로ThreadProc는 static으로 설정해야 한다. 함수 포인터의 호출이기 때문에 어느 한 객체에 소속되지 않게 하기 위해서 static으로 선언해야 한다. 이때문에 함수 내에서 멤버의 접근을 하기 위해서는 다음과 같은 방식으로 접근하여야 한다.

static unsigned WINAPI ThreadProc(LPVOID lParam)
{
  ex_Class *cls = (ex_Class*)lParam;
  cls->(멤버) 접근;
}

이는 꼭 스레드호출만이 아니라 함수포인터와 관련된 부분에서 해야 하는 것이다. 이런 상황에서 이런 오류를 만나서 예시가 이렇게 되었을뿐, 다른 상황에서도 마찬가지이다.
으흠... 아직 배우고 공부해야 할게 많다.
Posted by 머리
나의 이야기/Pictures2009. 4. 5. 15:19


아 희곤아.. 슬프구나!
Posted by 머리
나의 이야기/Funny2009. 4. 5. 13:31
<수학개그1>
미친 수학자가 버스에 타자마자 사람들을 향해 소리지르기 시작했다.
"모두 적분해버리겠어! 다 미분해버릴거야!"
그러자 모든 사람들이 겁을 먹고 버스에서 내려 도망갔다. 그런데 그 와중에 여자 한 명이 남아 있었다. 수학자는 그 여자에게 다가와서 물어보았다.
"당신은 겁나지 않아? 내가 당신을 적분하거나 미분해버릴텐데도?"
그러자 그 여자는 침착하게 대답했다.
"아뇨. 겁나지 않아요. 난 e^x 에요."


<수학개그2>
상수 함수와 e^x 가 뉴욕의 브로드웨이를 걷고 있었다. 그리고 저 쪽에서 미분연산자가 걸어오는 것을 본 상수 함수는 도망가기 시작했다. e^x 는 상수 함수를 쫓아가서 왜 도망가는지 물어보았다.
"미분 연산자가 오고 있잖나. 만약 그가 나를 본다면 나를 미분해 버릴테고 그러면 난 없어지지 않겠나."
그러자 e^x 가 말하길
"아, 그렇다면 나는 괜찮겠군. 나는 e^x 니까 말이지."
그리고 e^x 는 원래 방향대로 다시 걸어가기 시작했다. 예상대로 곧 미분 연산자를 마주치게 되었다.
e^x: "안녕, 나는 e^x 야"
미분 연산자: "안녕. 나는 d/dy 란다."
Posted by 머리
나의 이야기/Note2009. 3. 26. 21:38
before

after

상효야 네 그룹 위치 바꿨다 축하한다!
Posted by 머리
나의 이야기/Note2009. 2. 10. 18:30
나 혼자 일 떠안지 않기
다른 사람에게 일 지시하기
적당히 일하기
Posted by 머리
나의 이야기/Diary2009. 2. 7. 13:38
2009.2.5 목요일 맑음.

  정말 운좋게 휴가 날짜와 09학번들 새내기 면담 첫날이랑 날이 맞아서 면담에 참석하게 되었다. 사실 얼굴만 비추고 걍 갈까 하는 생각이 많았는데 어쩌다보니 준비작업에 참석까지 끝을 보고야 말았다.
  두시에 모인다고 하길래 한시 반쯤에 도착하니 09학번 애들은 아직 안오고 08 이상들만 준비하고 있었다. 그렇게 두시까지 기다리니 한둘씩 오기 시작했는데, 애들이 새내기들이 생각보다 안오고 있다고 걱정하더라. 그렇게 한 두시 반? 그렇게 기다리니까 새내기 50명정도 모여서 시작했다.
  역시.. 처음에는 다 어색해 하더라. 조책 맡은 애들도 나름 분위기 풀어보려고 하지만 처음이라 그런지 잘 안되고 새내기들도 다 어색해하니 처음엔 진행이 잘 안되었는데 한 한시간쯤 진행하고 나니까 분위기가 많이 풀리더라. 그러고 나서 나랑 현수 성기 흥종이 이렇게는 학생회관에 뒤풀이장 준비하러 먼저 올라갔다. 올라가고 보니 태욱이형도 있더라.
  올라가서 장소를 확인했는데, 내 면담때는 식당에서 했더만 이번에는 4층 구석(?)의 휴게실을 잡아놨더라. 상태가 말이 아니였다. 의자도 하나 없고 방 상태도 많이 안좋고.. 그래서 여기말고 식당으로 옮겨야 한다 막 그러다 결국은 그냥 하기로 하고 후발대로 온 인원들까지 해서 10명정도가 의자 80개 정도 식당에서 4층으로 옮기고 책상도 옮기고 정리 하고 하면서 준비했다. 휴가나와서도 작업이야.. 그렇게 테이블 정리하고 빔프로젝트 설정(전산병 아니랄까봐 이거 하나는 자신있더라.)하고 나니 슬슬 애들이 올라오고 하더라.
  다 모이고 나서 새내기들 간다게임 발표하는동안 미리 올라와서 작업한 애들은 서로 막걸리 한병씩 까놓고 이런 저런 이야기 나누다가 본격 뒤풀이 시작할때 각 조 사이로 투입(?)해서 놀고 했다. 오랫만에 그렇게 노는거라 좋았다.
그런데.. 08도 그렇고 09도 그렇고.. 정말 애들이 풋풋하더라. 조책 맡은 08도 잘 모르고 그래서 조에 들어가서 소개하려고 해도 조책들이 오히려 난감해 하길래 끼어드느라 꽤 애먹었다.더군다나 애들이 내 머리 보고 얼마나 놀랬을지...
  난 원래 막 들이대는거 잘 못하는데 그냥 막 들어가서 '안녕하세요~ 07 양희철입니다.' 하고 '술무 술무' 이런다고 진땀뺐다. 아무튼 즐거웠다. 4월말, 시험기간에 놀러가야지.
Posted by 머리
Study - Programming/C/C++2009. 2. 4. 08:38
BOOL CreateProcess(
  LPCTSTR lpApplicationName,
  LPTSTR lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL bInheritHandles,
  DWORD dwCreationFlags,
  LPVOID lpEnvironment,
  LPCTSTR lpCurrentDirectory,
  LPSTARTUPINFO lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);

MSDN 참고 주소 : http://msdn.microsoft.com/en-us/library/ms682425.aspx (닷넷 기준이라 조금 모양이 다릅니다.)

자식 프로세스를 생성한다. 이때 이 함수를 호출한 프로세스는 부모 프로세스(Parent Process), 함수 호출로 생성된 프로세스를 자식 프로세스(Child Process)라고 한다.


  LPCTSTR lpApplicationName : 생성할 프로세스의 실행파일 이름.
  LPTSTR lpCommandLine : 생성할 프로세스의 파라미터 문자열

  LPSECURITY_ATTRIBUTES lpProcessAttributes : 프로세스의 보안 속성
  LPSECURITY_ATTRIBUTES lpThreadAttributes : 스레드를 전달할 경우 보안 속성
  BOOL bInheritHandles : 자식프로세스의 부모 프로세스의 핸들 소유 여부
  DWORD dwCreationFlags : 생성하는 프로세스의 프로세스 특성
  LPVOID lpEnvironment : 프로세스가 실행헤 필요한 문자열 저장. Enviroment Block 지정
  LPCTSTR lpCurrentDirectory : 자식 프로세스의 현재 디렉터리 설정
  LPSTARTUPINFO lpStartupInfo : 자식 프로세스의 속성이 담긴 구조체의 주소값
  LPPROCESS_INFORMATION lpProcessInformation : 자식 프로세스의 정보를 저장할 구조체 주소값


그리고 다음은 LPSTARTUPINFO의 구조이다.

typedef struct _STARTUPINFO {
  DWORD  cb;
  LPTSTR lpReserved;
  LPTSTR lpDesktop;
  LPTSTR lpTitle;
  DWORD  dwX;
  DWORD  dwY;
  DWORD  dwXSize;
  DWORD  dwYSize;
  DWORD  dwXCountChars;
  DWORD  dwYCountChars;
  DWORD  dwFillAttribute;
  DWORD  dwFlags;
  WORD   wShowWindow;
  WORD   cbReserved2;
  LPBYTE lpReserved2;
  HANDLE hStdInput;
  HANDLE hStdOutput;
  HANDLE hStdError;
} STARTUPINFO,
*LPSTARTUPINFO;

특별히 중요한 요소가 있다기보다는 이런게 있다라는 전체적인 것을 아는 것이 좋다. 자세한 것은 MSDN(http://msdn.microsoft.com/en-us/library/ms686331(VS.85).aspx) 을 참조하자.

다음은 LPPROCESS_INFORMATION 의 구조이다.
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadId; } PROCESS_INFORMATION,
*LPPROCESS_INFORMATION;
자세한 사항은 좀 더 공부를 해 보아야겠다.

그리고 주의해야 할 점이 유니코드 기반에서 함수 실행 시 lpCommandLine인자에 바로 _T("abc.exe")형식으로 문자열을 넣으면 런타임에러가 난다. 함수 내부적으로 문자열에 변화를 가하기 때문이라고 한다. 그러므로 넘길때는 반드시 따로 문자열 변수를 만들어 넘기자.



Posted by 머리
나의 이야기/Diary2009. 1. 11. 14:39
2009.01.11 일요일 맑음.

나쁜 생각.
 
  한 집단에서 자신이 고급인력이라면
  자신의 업무가 쉽든 어렵든 절대 빨리 끝내지 말자
  일을 빨리 끝냈을 때 기대하는 반응
  '오~ 대단한데?'

  는 바라지도 않는다. 그저

  '도와줘서 고맙다'

  만 해도 감지덕지.
  하지만 현실에서 의뢰자 또는 내가 한일을 어떻게 하는 것이지 모르는 팀원의 생각은

  '뭐야, 쉬운거였나보네.'

  내가 한일이 어려운 일이였든, 쉬운 일이였든간에 상관없다.
  내가 좀더 능력이 좋으니까 더 빨리 할수 있고 잘 할 수 있는 방법을 아니까 빨리한거지 일이 쉬운거라서 빨리한건가? 하지만 '뭘 모르는 사람들'은 그냥 '쉬운 일'이니까 빨리 하는 것이라고 생각한다. 그리고 일을 '부탁하는 어조'로 계속 '시켜'놓고 말한다.
 
  '너한텐 쉽잖아?'

  뭐야.. 네가 그걸 어떻게 알어? 쉬운지 어려운지. 쉬우면 네가 하던지. 그래도 금방 금방 하니까 몇번 해준다. 그래도 나도 사람. 짜증이 난다. 그걸 알아채면

  '아 내가 너무했나?'

  이런 생각이 들까? 아니다.

  '그까짓거 쉬운거면서 하는데 얼마나 된다 되게 째째하게 구네.'

  결국 일 실컷 해놓고 째째한 사람만 된다. 그러니까 그냥.. 일이 어떻든 간에, '내가 하는일이 진짜 어렵다'는걸 보여주면서 일을 해야겠다. 이젠..짜증난다.

나쁜생각 끝.
Posted by 머리
Study - ETC/English2009. 1. 11. 14:25

 barring dcline   dcline in  easiness gear


have an influence on intricate   irregulary just enough to R  keep track of 


lag begind lease  narrow down A to B  oblivious  qualified 


rating spontaneously  traiff  vacant valor 



Posted by 머리
Study - ETC/English2009. 1. 11. 14:24

 abandon acceptable a variety of  a vested interest  baggage allowance 


 balance a absence from   comprehensive  engage in faint 


 fall in value fluently  gauge  get through  good 


 idealistically latch magnification  obey  safe keeping 


 seasoning suitable  wage  wrongly  abate 


 abduct accessory  accordingly  at one's expense  barely 

Posted by 머리