외규장각 도서 환수 모금 캠페인

Search Results for 'Study'

98 POSTS

  1. 2007.06.01 쓰레드 ㅠ_ㅡ 2
  2. 2007.05.31 수영 - 자유형 물젓기
  3. 2007.05.31 수영 - 자유형 시선
  4. 2007.05.31 수영- 호흡 타이밍
  5. 2007.05.31 오늘의 샘플 분석 ㅠ_-

쓰레드 ㅠ_ㅡ

Posted 2007. 6. 1. 11:58, Filed under: Study/Computer Science

void CHpCntDlg::OnOK() {
 
UpdateData(TRUE);
HpCounter* hpc = new HpCounter(dlg);
 
 // Homepage upload count
 hpc->MakeTmp();   // make temporary folder
 GetDlgItem(hWnd ,IDC_STEP)->SetWindowText("홈페이지 업로드 카운트 중...");

 pHpthread = AfxBeginThread(threadHompageCnt, hpc);

 if( m_CheckINI == TRUE){
  hpc->WriteINICnt();
 }

 // Sample Count
 GetDlgItem(IDC_STEP)->SetWindowText("엔진 샘플 수 카운트 중...");
 SpCounter* spc = new SpCounter(this);
 pSptread = AfxBeginThread(threadSampleCnt, spc);
 pSptread->SuspendThread();

...

}

------

1. Ok 버튼을 눌렀을 때 수행되는 위의 프로시져가 웹페이지를 다운로드해서 파싱하고 결과를
   출력하는 시간이 꽤 걸리는 작업이라서 창을 다시 그려줄  때 깨지거나 응답없음이 나타난다.

2. 쓰레드를 이용해서 내부 프로시져가 돌아가는 거랑 창을 그려주는 걸 별도로 수행하도록 하면
    해결할 수 있음.

3. 쓰레드를 생성하기 위해서는 UINT 함수이름(LPVOID pParam); 와 같은 형식의 쓰레드에서
   실행하는 처리를 당담하는 프로시저가 필요함
   (형식의 제한이 있어서 복잡한 파라미터를 넘겨주는 함수를 구현할 수가 없었다.
    이럴 때는 파라미터를 모두 가지는 구조체를 선언하여 그 포인터를 넘기면 된다고 한다.)

4.  쓰레드를 생성할 때는 CreateThread 윈도우 API 보다는 AfxBeginThread를 사용하는 것이 바람직
C/C++의 표준 라이브러리를 사용하는 경우 프로세스 내의 스레드는 메모리 공간을 공유하기 때문에 정적 변수 사용등에 있어서 문제가 발생한다. (예: strtok) 이를 방지하기 위해서 윈도우에서 쓰레드마다 다른 메모리 영역을 정적으로 할당(TLS: Thread Local Storage) 이 때 TLS를 사용하기 위해서는 쓰레드를 생성할 때 초기화 등의 준비가 필요한데 CreateThread를 사용해 쓰레드를 생성하면 이런 처리를 할 수 없다.

5. 쓰레드 함수 내에서는 GetDlgItem() 함수를 호출할 수 없음. (쓰레드 함수는 전역으로 선언되어있고 윈도우(다이얼로그) 내부의 함수가 아니므로) 그리하여 GetDlgItem 부분은 OnOK() 함수에서 처리하고 나머지를 둘로 나누어 각각 쓰레드로 처리하려고 했는데.. 그렇게 했더니 파일 I/O 가 있는 부분에서 대기하는 동안 제어가 다른 쓰레드로 넘어가면서 병렬로 처리되고 결과가 제대로 안나온다. 순차적으로 처리해야하는 프로시저에서 분리를 목적으로 쓰레드를 사용하니까 참 맘대로 안된다.

6. 그래서 WaitForSingleObject() 를 사용해서 쓰레드 처리를 기다리려고 했는데. AfxBeginThread 함수나 CreateThread 함수는 쓰레드 생성에 성공하면 쓰레드 프로시저의 종료를 기다리지 않고 즉시 호출로부터 복귀한다. 그래서 WaitForSingleObject 가 별로 소용이 없다. 게다가 메인 프로시저는 쓰레드 프로시저의 상태와 상관없이 계속해서 프로그램을 실행하므로 출력루틴이 먼저 실행되는 사태가 발생해서 완전 결과가 엉망이 됐다.

7. 윈도우 자체를 쓰레드 프로시저에 넘겨주고 GetDlgItem를 호출할 수 있도록 만들려고 했는데 윈도우 핸들을 얻어오는게 맘처럼 쉽지가 않다 ;;

8. 쓰레드 핸들을 사용해서 한번 컨트롤 해봐야겠다..

쓰레드 너무 힘들다 ㅠ_ㅠ

Response : ,

수영 - 자유형 물젓기

Posted 2007. 5. 31. 22:22, Filed under: Study/Swim

자유형 물젓기

6-Q13. 자유형 물젓기는 어떻게 하나요?


A. 처음 수영을 배울 때는 팔을 일자로 편 채 물젓기를 하다가 차츰 실력이 좋아지고 중,상급수준이 되면 물잡기를 배우게 되는데, 초,중급자들은 아직 팔젓기가 미숙하여 거의 대부분 팔꿈치가 떨어진 상태에서 물을 끌어당겨 앞으로 나가려 하지요. 이런식의 수영은 물잡기가 거의 없는 상태이고 손바닥으로 물을 누르는 형태라 많은 추진력을 얻을 수 없답니다. 그래서 물젓기를 배워야 한답니다.


물의 밀도는 공기보다 수백배 높습니다. 단순한 힘으로서 수영을 한다면 나의 모든 에너지를 물에 빼앗겨 금방지치게 합니다. 그러므로 수영은 테니스나 스키를 배우는 것과 같이 힘으로가 아닌 기술적인 동작을 익히는 것입니다.


물젓기는 달리는 차창에 손을 내밀며 앞뒤로 움직여보면, 공기가 손에 부딪쳐 압력을 느끼게 될 것입니다. 마치 그런 느낌을 물 속에서 받을 수 있답니다. 물젓기는 1자 스트록과 S자 스트록의 두가지 형태가 있지만, 1자의 직선패턴으로 물잡기를 하는 것은 강한 어깨와 추진력 높은 발차기의 기술이 필요한 만큼, 일반인들의 경우에는 S자의 곡선 형태로 물젓기를 많이 하게됩니다.


물잡기는 마치 “큰 술통을 넘어 뻗어서 누르라”로 표현하는데 이는 자유형 스트로크에서 손을 앞으로 뻗는 단계에서 바로 이어지는 스트로크 단계인 물잡기(catching)동작을 표현한 말입니다.


그림 [6-Q13-A]- 1자 스트록 , S자 스트록

http://www.swimlover.com/Lecture/freestyle.html 그림참조




풀동작의 순서는 다음과 같습니다.

입수(Entry) → 뻗기(Stretch) → 휘감기(Catch) → 아래로 젓기(Downsweep) → 안으로 젓기(Insweep) →위로 젓기(Upsweep) → 되돌리기(Recovery) 

이런 순으로 한스트록이 이루어집니다.


입수(Entry) : 입수는 머리와 어깨의 연장선 사이인 전방에서 이루어지며 엄지와 검지손가락을 제일먼저 입수를 하고, 손바닥은 30°~45° 바깥쪽을 향하게 하여 입수를 합니다. 사진 [6-Q13-C]입수자세


▶  뻗기(Stretch) : 입수를 하고 난 다음 수면 바로 밑에서 어깨를 밀어 뻗어주기를 하는데 이러한 것을 글라이드(Glide)라고 합니다. 글라이드시 초보자들은 아래사진과 같이 손보다 팔꿈치와 어깨가 떨어지는데 이러한 점을 주의 해야 한답니다. 뻗기 동작은 장거리시와 단거리시에 차이가 있을 수 있는데 아래의 그림을 보며 이해를 하시기 바랍니다.


사진 [6-Q13-D]뻗기자세

http://www.swimlover.com/Lecture/freestyle.html 에서 뻗기 자세인 2개의 애니메이션 참조


휘감기(Catch) : 뻗어준 다음 아래로 젓기전에 사진과 같이 손목을 약간 구부려 물을 잡는 듯한 느낌을 받습니다. 사진 [6-Q13-E]휘감기자세


아래로젓기(Downsweep) : 일부러 바깥쪽으로 돌리려 하지 않아도 어깨를 돌려 팔동작을 하면 자연히 바깥쪽, 아래쪽 방향으로 물의 압력을 느끼며 서서히 떨어집니다. 아래로 젓기도 마찬가지로 팔꿈치와 어깨가 먼저 밑으로 떨어지지 않게 주의 합니다. 사진 [6-Q13-F1, F2]아래로젓기 자세


안으로 젓기(Insweep) : 아래로 젓기시의 가장 밑에서부터 시작하여 “?” 형태의 둥근모양이 되게 어깨의 바깥쪽으로 돌려 몸의 안쪽, 위쪽을 향해 팔꿈치를 세워 가슴의 명치부위 밑에까지 긁어옵니다. 사진 [6-Q13-G1, G2]안으로젓기 자세


위로 젓기(Upsweep) : 가슴까지 긁어온 물은 허벅지 방향을 향해 바깥쪽, 뒤쪽, 위쪽 방향으로 힘을 주어 푸쉬를 합니다. 손이 허벅지에 닿을 정도부터 수압의 힘을 떨어뜨리고, 손바닥을 안쪽을 향하게 하여 되돌리기를 할 준비를 합니다.

사진 [6-Q13-H]위로젓기 자세


되돌리기(Recovery) : 전방에서 받을 때 출수시 손의 엄지와 검지가 보이게 하 며 팔꿈치의 무게중심을 실어 어깨의 연장선까지 팔꿈치를 높게 들어줍니다, 손은 팔꿈치보다 낮게 위치하며 손의 각은 전방에서 받을 때 손등이 보이게 하고 어깨의 연장선이 지나면 무게 중심이 손으로 전달되어 머리와 어깨의 연장선 전방에 엄지와 검지순으로 입수를 합니다. 입수시에는 팔꿈치와 어깨가 먼저 떨어지지 않게 하고 어깨가 귀를 스치는듯한 느낌으로 입수를 합니다.

사진 [6-Q13-I] 되돌리기 자세


< 상기 정보는 스윔닥터의 동의없이 무단으로 재배포할 수 없습니다. >

-----------

복근에 힘을 써 헤엄치면, 몸이 똑바로 되어 저항이 경감되다라고 생각합니다. 자세가 좋게 된다라고 말하는 것은, 요통 예방에도 도움이 된다고 생각하므로 모든 수영에 필요한 일이 아닐까 하고 생각하고 있습니다.

Response : ,

수영 - 자유형 시선

Posted 2007. 5. 31. 22:20, Filed under: Study/Swim

자유영 시선

6-Q11. 자유형시 시선의 위치는 어디를 향하는게 좋은가요?


A. 자유형시 머리의 위치나 시선에 대해 질문하시는 분이 많을 뿐더러 그에 대한 많은 지도자들이 연구를 하고 있으나 아직까지는 정확히 어느위치를 해야 가장 이상적인 자세라고 단정짓기는 어렵습니다.

지금까지 나와있는 서적이나, 지도자들이 지도하는 유형은  거의 정면을 향해 수영을 하고, 호흡시에는 옆면을 보게 지도를 하고 있습니다. 즉, 이마부위가 수면에 닿게 하고, 호흡시에는 수경반만 나오게 하여 코스로프를 보게 합니다. (초보자일 경우에는 바닥을 향하고, 호흡시에는 천정을 보는게 좋습니다.)


그러나, 1990년대 세계적으로 유명한 자유형단거리의 황제 ‘포포프’의 자세를 보면 거의 머리를 숙여 바닥을 향하고 있고, 최근 ‘태리래플린’이라는 미국 수영코치는 T-누르기라는 정의를 내세워 효율적인 수영을 위해서는 시선은 바닥을 향하게 하여 힙과 하체부위를 띄울수 있다고 주장을 하고 있습니다.


필자의 생각도 자유형시 시선이 정면을 두고 하면 하체가 가라앉는 느낌이 들어 바닥을 향하는게 좋다고 생각이 들며, 한번씩 고개를 살짝 들어 앞의 장애물이나, 목표지점을 확인하며 수영을 하는게 효율적인 수영을 할 수 있다고 판단됩니다.


애니메이션 - [6-Q11-A]사진 참조

▶ 정면시선을 하고 있어 힙이 내려가 있는 상태

▶ 바닥을 향하고 있어 머리와 힙이 수평을 유지한 상태


< 상기 정보는 스윔닥터의 동의없이 무단으로 재배포할 수 없습니다. >

Response : ,

수영- 호흡 타이밍

Posted 2007. 5. 31. 22:18, Filed under: Study/Swim

호흡 타이밍

6-Q10. 자유형시 정확한 호흡타이밍을 가르쳐주세요?


A. 호흡타이밍도 상당히 중요한 과제이지요. 호흡을 너무 빨리하거나 늦게 하면 풀동작의 균형이 깨져 정확한 풀동작 자세가 나오기 힘들답니다.


양손이 앞으로 모아 뻗어져 있는 상태는 양 어깨가 수면에 나란히 걸쳐 수평을 유지하겠지요. 하지만 자유형과 배영은 나란하게 되어 있는 시간은 극히 짧습니다. 다시말해 거의 대부분의 시간이 좌우로 기울어져 있다는 것이지요. 이것이 롤링이라고 합니다. 롤링에 대해서는 뒤에 상세히 설명 드리겠습니다.


수평으로 유지한 상태에서 손이 서서히 내려가면서 풀동작을 시작합니다. 풀동작을 시작하면서 몸이 풀동작 하는 방향으로 조금씩 기울어지겠지요. 손이 dawnsweep(아래젓기)시 떨어지기  전까지는 양 어깨가 수평을 유지하겠지만, insweep(풀)시 부터 팔꿈치를 세우고 몸이 서서히 기울어지며, upsweep(푸시)때 어깨가 45℃ 정도 틀어주면서 고개가 같이 따라 돌아가며, 피니쉬 동작을 마치고, 팔꿈치가 최고점에 이를때까지 ‘파~’ 하며 공기를 내뿜과 동시에 호흡 하는 것을 마쳐야 합니다. 되돌리기의 최고점에 다다를 때가 흉곽이 가장 확장을 해서 이때 호흡을 하며, 되돌리기 되는 손이 어깨의 연장선에 다다르면, 다시 ‘음~’을 하며 고개가 윈위치됩니다. 호흡을 할 때는 손과 어깨사이, 팔꿈치 아래에 있는 공간에서 호흡을 마신다고 생각을 하면 이해가 빠를 것입니다. 되돌리기 되는 팔이 최고점전에 이르기 전, 즉 어깨의 연장선에 오기전에 호흡을 빨리 하고 입수를 하는 사람이 많은데 이런 분들은 되돌리기되는 팔꿈치가 떨어지며, 손이 입수하기전에 어깨가 물밖에 있지 않습니다. 호흡시 머리는 몸통이 돌아갈 때 같이 따라 간다는 생각을 갖으면 롤링의 타이밍에 맞게 정확한 호흡을 할 수 있답니다.


< 상기 정보는 스윔닥터의 동의없이 무단으로 재배포할 수 없습니다. >

Response : ,

오늘의 샘플 분석 ㅠ_-

Posted 2007. 5. 31. 22:10, Filed under: Study/Computer Science
오늘 내가 분석한 악성 코드는  UPX 팩으로 실행압축되고 자체 암호화 모듈로 암호화된 다운로더.

UPX 팩의 어셈블리 패턴에 대해서 얼마전에 배웠기 때문에 실행압축을 푸는 것은 비교적 쉽게 할 수 있었지만 그 이후에 수많은 함수 콜과 스택 관리. 루프. 점프 등등 -_-

아직도 모르는게 너무 많다.
그렇지만 제대로 깨달은 건..
너무 자잘한 함수까지 내부에서 구현하는 부분까지 다 따라가면서
레지스터 값 확인하는 거는 완전 삽질이라는거-

함수 콜하나 루프하나 도는데도 완전 레지스터 값을이 엉망이되고 스택이 어지러운데
그런걸 하나하나 따라가다가는 도저히 감당이 안된다.
전혀 이해할 수가 없다.

결국 파일을 쓴다거나 레지스트리를 수정한다거나 하는 건 GetProcAddress 나 LoadLibray  같은 걸로 이미 얻어온 API  함수를 간접호출 하는 방식으로 이루어지기 때문에
악성 코드가 어떤 목적으로 어떤 상황에서 어떤 API를 호출하는지 그런걸 잘 알아보고
그런 함수들이 호출될 때 함수 파라미터가 어떤게 넘어가는지만 확인하는게 좋다는거
예를 들어 WriteFile의 파라미터가 뭔지만 알면 어떤 파일을 생성하는지 바로 알 수 있으니까..

Call 이나 Retrun 부분에만 브레이크 포인트를 걸고 체크 체크 하는게 훨씬 깔끔하다.
주요 증상만 판단하자.
너무 초반부터 깊이 파도 낭패본다 -_-

---------

게다가 결국 내가 오늘 본 파일은 다운로더를 다운받는 다운로더.
내용 자체는 그렇게 어렵지 않지만 손이 많이 가는 녀석이었고 실행 과정은 실행 압축 및 암호화로 완전 꼬여있어서 잘안보였다.

게다가 Anti Virus 프로그램 및 시스템 상태 분석 도구들을 강제로 프로세스 킬하는 기능까지 있어서
무쟈게 고생 -_-;

이상철 선임님이 오늘부터 휴가가시면서 업무 인수인계하실 때 인턴들한테 분석 좀 틈틈히 시키라고 하시고 가셨는데 (다른 정팀원들은 아직 인턴을 잘 안믿으신다) 오늘은 네명 다 고생고생,
결국 엔진 배포 때까지 분석 못한 사람은 인턴 네명 뿐..;
그래서 정말 마음이 안좋았다.
내일 가서 완전 복습하고 박살 낼꺼다. 쳇쳇..

Response : ,

« Previous : 1 : ··· : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : Next »

Recent Posts

Recent Comments

Recent Trackbacks

Total hit (Today , Yesterday )

Admin Write Post