블로그 이미지
초보 용사 꼬마라크. 그림은 만렙 용사 아랑소드 -네이버웹툰 아스란영웅전 발췌
꼬마라크

Notice

Archive

calendar

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
  • 22,454total
  • 0today
  • 0yesterday
2007. 12. 28. 23:02 It's my life./요즘 뭐하냐?
인생의 전환점을 내가 만들어 가느냐.. 하는것과

나중에 그것이 전환점이었구나 하며 생각하는것은 커다란 차이가 있다.


생각하며 사는것과 사는대로 생각하는 것의 차이랄까..

인생에 있어서 생각하는대로 사는것이 나에게 어떠한 의미가 있는가를

빨리 깨닫는것이 인생을 조금더 보람있게 사는데 도움이 된다고 생각한다.



------------------------------------------------
ps.
용기를 내어 그대가 생각하는대로 살지 않으면
그대는 사는대로 생각하게 된다.                   -폴 발레리

'It's my life. > 요즘 뭐하냐?' 카테고리의 다른 글

인생의 전환점  (0) 2007.12.28
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 22:30 Programmer/Linux
http://blog.naver.com/skeehun?Redirect=Log&logNo=150022256430

'Programmer > Linux' 카테고리의 다른 글

Ubuntu 한영키로 한글변경하기  (0) 2014.12.17
[링크]리눅스 명령라인의 진수  (0) 2007.12.14
[링크]linux 기본 명령  (0) 2007.12.14
[링크]VIM사용법  (0) 2007.12.14
fedora 7 SCIM 한영키 설정  (0) 2007.12.14
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 22:29 Programmer/Linux
http://blog.naver.com/cil1?Redirect=Log&logNo=30005232630

'Programmer > Linux' 카테고리의 다른 글

Ubuntu 한영키로 한글변경하기  (0) 2014.12.17
[링크]리눅스 명령라인의 진수  (0) 2007.12.14
[링크]linux 기본 명령  (0) 2007.12.14
[링크]VIM사용법  (0) 2007.12.14
fedora 7 SCIM 한영키 설정  (0) 2007.12.14
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 22:28 Programmer/Linux
http://sysmng.com/linux/kldp/html/Vim-KLDP.html

'Programmer > Linux' 카테고리의 다른 글

Ubuntu 한영키로 한글변경하기  (0) 2014.12.17
[링크]리눅스 명령라인의 진수  (0) 2007.12.14
[링크]linux 기본 명령  (0) 2007.12.14
[링크]VIM사용법  (0) 2007.12.14
fedora 7 SCIM 한영키 설정  (0) 2007.12.14
posted by 용사 꼬마라크
TAG Vim

댓글을 달아 주세요

2007. 12. 14. 22:27 Programmer/Linux
한참을 삽질한끝에..

한영키 사용에 성공했다.


1. keymapping 확인

    여기서 확인할것은.. Hangul과 Hangul_Hanja키의 키값!
    먼저 xev를 실행하면 키를 누를때마다 keycode값이 나온다. 그걸 잘 기억해둠!

      vi /etc/X11/Xmodmap

    요기 보면 뭔가 막있을건데.. i386 and apple인가? 그 부분으로 가서 해당 키를 추가
      ! keycode 113 = Hangul
      ! keycode 109 = Hangul_Hanja

2. SCIM상에서 키 배치 확인(한글, 한자 키가 제대로 눌리는지 확인)
   
    SCIM설정에서 한글탭에 보면 키설정파트가 있다.
    [...] 을 누르면 키설정이 나온다. 키 코드 옆의 [...]를 누르면 키코드를 확인할수 있는데
    거기서 확인된 키코드가 각각 Hangul, Hangul_Hanja가 맞는지 확인해보자.
    맞으면 한글 잘써질것이고,

    아니라면 3번으로 고고

3. 키보드 설정

    시스템-기본설정-하드웨어-키보드 의 키배치탭에서 키 배치 확인
    (hangul과 hangul_hanja키가 각각 ALT_R과 CTRL_R로 설정되어있는 경우가 있을수 있다.)
    2번에서 각각 ALT와 CTRL로 설정되어있다면 암만 삽질을 해도 한영키가 안먹는다.

    키보드 모델은 키 몇갠지 세서 넣으면 될거고,
    (노트북 사용자라면,, 아마 대부분 alt와 한영키, ctrl과 한자키가 같이 붙어있는
     101키 배열에서 키패드 부분이 빠진모양일것이다) -> 101키
    alt와 ctrl이 따로 있다면 106을 선택하면 된다.(만약.. 106이면 안된다고 떼쓸일도 없을듯)

    키배치 부분에서 korea, republic of에 안심하지 말고 저것을 지우고
    더하기 한번 해본다. 밑에 쭉 내려가다 보면 korea, republuc of가 있는데.. 고 옆에 세모를 눌러보면
    101/104key compatible 모드가 보일것이다..<-이놈이 키포인트

    고것으로 설정하고 저장저장

4. 아마도 일단 테스트 해보고 안되면 재시작하면 될듯!!



삽질은 실력의 기본 - I need more shoveling.

'Programmer > Linux' 카테고리의 다른 글

Ubuntu 한영키로 한글변경하기  (0) 2014.12.17
[링크]리눅스 명령라인의 진수  (0) 2007.12.14
[링크]linux 기본 명령  (0) 2007.12.14
[링크]VIM사용법  (0) 2007.12.14
fedora 7 SCIM 한영키 설정  (0) 2007.12.14
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 22:22 Programmer/Network Prog.
windows XP sp2에서는 raw socket으로 syn을 내보낼수 없다-_-!!!
이것 때문에 일주일을 밤샜고만...ㅠ


---------------------------------
같은수업듣는 학생이 찾아 올려준 글
---------------------------------

저도 TCP Raw 패킷을 보낼 때 자꾸 에러가 나서 인터넷을 뒤져보니 다음과 같은 내용이 있더군요..

2.

Why can't I send TCP packets on Windows XP?

New restrictions on raw socket functionality were imposed in Windows XP SP2. If you're running Windows XP SP2, you cannot send TCP packets (but you can still receive them), nor can you spoof the source address of IP packets. The source address must exist on a local network interface.

Win XP SP2에서는 TCP raw packet을 보낼 수 없다네요.. 그렇다면 그 전 버전에서는 됐다는 것 같은데 그 전 버전이 없어 확인은 못해 봤습니다.

내용 출처 : http://www.savarese.org/software/rocksaw/faq.html

 

관련 기사 :

http://www.zdnet.com.au/news/security/soa/Microsoft-tries-to-quell-TCP-IP-danger-/0,130061744,139189876,00.htm

 

-----------------------------------------------------



////////////////////////////////
참고 : 또 다른 학생이 올려준 글
////////////////////////////////

 SYN 패킷을 만들기 위해 이더넷, IP, TCP 헤더의 중요 필드들을 프로그램으로 채워야 한다. 이때 IP와 TCP 의 데이터 필드에는 check sum을 확인 하고 패킷 오류를 판단하기 때문에 틀리지 않게 프로그램 해야 한다.

  또 source port, sequence 넘버를 동일하게 보내면 받는 쪽에서는 중복된 패킷이 온 것으로 보고 폐기해 버리기 때문에 random 하게 자료를 입력해야 한다.

  SYN packet 공격에서는 서버가 공격자로 SYN/ACK을 보내고 대기해야 한다. 이러한 서버사이드의 SYN/ACK 동작을 유도하기 위해서는 tcp 패킷에 추가적인 옵션으로 SACK 정보를 실어 총 28바이트를 전송해야 한다는 사실도 유의해야 한다.

'Programmer > Network Prog.' 카테고리의 다른 글

TCP SYN flooding  (0) 2007.12.14
[링크]bit단위 선언  (0) 2007.12.14
[링크]Socket 이란?  (0) 2007.12.14
[링크]socket-client에 bind없는 이유  (0) 2007.12.14
connection-oriented와 connectionless 의 차이  (0) 2007.12.14
#pragma pack()  (0) 2007.12.14
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 22:17 Programmer/Network Prog.
bit 단위 선언

http://cafe.naver.com/peterhoy.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=152

'Programmer > Network Prog.' 카테고리의 다른 글

TCP SYN flooding  (0) 2007.12.14
[링크]bit단위 선언  (0) 2007.12.14
[링크]Socket 이란?  (0) 2007.12.14
[링크]socket-client에 bind없는 이유  (0) 2007.12.14
connection-oriented와 connectionless 의 차이  (0) 2007.12.14
#pragma pack()  (0) 2007.12.14
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 22:09 Programmer/기초

http://www.winapi.co.kr/ApiBoard/tbltip/How%20DLL%20Works.pdf

간단한 설명!

명쾌하다.

위의 링크의 내용을 간추리면.. 아래로...

-----------------------
dlltest.c

__declspec(dllexport) char *str = "THE TRUTH IS OUT THERE";

__declspec(dllexport) int add(int a, int b)
{
 return a + b;
}

// c에선 extern "C" 하면 왠지 안된다.. (원인은 해석하기 귀찮아서 pass, 할필요가 ㅇ벗는데 써서 에러내는건가?)
// cpp에서 만든걸 c에서 쓰게 하려면 extern "C"꼭 필요하다...

빌드하면 dlltest.dll이 되것지?


// implicit 한 방법. (explicit는 링크의 문서를 읽어보시라)
// main program에서는 dll과 함께 생성되는 lib파일과 헤더 선언이 필요하다.
test.h

extern "C" __declspec(dllimport) char *str;

extern "C" __declspec(dllimport) int add(int a, int b);

// C가 만든 외부 dll에 함수와 변수가 있도다.


test.cpp(c)

#include "test.h"    // 요렇게 extern 선언 필요
#pragma comment(lib, "dlltest.lib")


int main()
{
    printf("%s\n",str);
    printf("%d + %d = %d\n",1,2,add(1,2));
}

결과
THE TRUTH IS OUT THERE
1 + 2 = 3
press any key.


'Programmer > 기초' 카테고리의 다른 글

[링크]DLL  (0) 2007.12.14
little endian과 big endian  (0) 2007.12.14
infinite number의 정의  (0) 2007.12.14
posted by 용사 꼬마라크
TAG dll

댓글을 달아 주세요

2007. 12. 14. 22:06 Programmer/Network Prog.
Socket 이란?

http://blog.naver.com/bigdra/140002151114

'Programmer > Network Prog.' 카테고리의 다른 글

TCP SYN flooding  (0) 2007.12.14
[링크]bit단위 선언  (0) 2007.12.14
[링크]Socket 이란?  (0) 2007.12.14
[링크]socket-client에 bind없는 이유  (0) 2007.12.14
connection-oriented와 connectionless 의 차이  (0) 2007.12.14
#pragma pack()  (0) 2007.12.14
posted by 용사 꼬마라크
TAG socket

댓글을 달아 주세요

2007. 12. 14. 22:06 Programmer/Network Prog.
퍼옴.

http://blog.naver.com/rev7707/10005157701

'Programmer > Network Prog.' 카테고리의 다른 글

[링크]bit단위 선언  (0) 2007.12.14
[링크]Socket 이란?  (0) 2007.12.14
[링크]socket-client에 bind없는 이유  (0) 2007.12.14
connection-oriented와 connectionless 의 차이  (0) 2007.12.14
#pragma pack()  (0) 2007.12.14
buffer와 structure  (0) 2007.12.14
posted by 용사 꼬마라크
TAG BIND, client

댓글을 달아 주세요

2007. 12. 14. 22:00 Programmer/Network Prog.

나는 커넥션 오리엔티드와 커넥션리스에 대해 오해라고 해야하나..

부족한이해라고 하는게 맞을듯.


지금까지는..

그냥 간단하게..커넥션 오리엔티드는 두 호스트 사이에 연결을 맺고 그 연결을 유지하면서 통신을 하는것!

이라고만 생각했고.. connection-oriented라는 이름만 놓고 봐도 저 것이 맞다고 느끼게끔 되었다고나 할까?-_-


그러나;;

정확한 정의는 그 너머에 있었으니...

우선 우리가 CO(connection oriented)와 CL(connection less)라 부르는것들을 비교해 보자면

CO는 데이터 교환에 앞서 두 호스트간의 연결(경로를 설정한다) - TCP
    TCP는 데이터가 어디로 갈지 알기 때문(connect 함수)에 send, recv를 쓴다.
    SEQ번호등이 있다.
    virtual circuit

CL은 이러한 연결없이 데이터를 주고받는 다 - UDP
    UDP는 데이터가 어디로 가야할지, 그리고 어디서 오는건지 모르기 때문에 sendto, recvfrom을 쓴다
    (가끔 udp도 connect를 쓰기도 하나.. 이는 연결이라기 보다, 어디로 가야하는가와 어디서 오는가를 정해놓는다는 의미랄까.)
    SEQ없이 전송된다.(독립)
    datagram

뭐 이렇게 알고있었지만... (나만그렇게 알고있었나..?)
(실제로 교수님이 하나씩 붙들고 물어보셨다.. 자네! connection oriented가 뭔가?)

그리고  중요한 factor는 IP는 datagram이라는 사실이다...-_-;
이건 뭔말인가? UDP처럼 connectionless라는 말이지..

그럼.. IP위에서 동작하는 TCP가 CO라는것이 무슨의미가 있는가?
어차피 IP에서는 되는데로 가는데???
아무리 TCP에서 http에서 어디로 가라라고 해도 ip에서 지맘대로 보내는데 CO가 가능하냐?
IP에서의 전송은 best effort, 즉 나름 최선을 다할뿐 못가도 할수 없다는 놈들이 IP인데?



문제는 정의에 있었다.
정의 definetion,

CO의 정확한 정의는 어떤 데이터를 보냈는데 그 데이터를 상대방이 받았다는것을 보장하는 것 이다
CL은 그 반대, 받거나 말거나 상관안한다는 것이다

즉 위에 위에 설명한 CO 와 CL의 차이는 정의가 아닌 특성의 차이이고, protocol적인 method를 말하는 거였으니..

그렇다면 이해가 가지 않는가?

IP가 아무리 datagram이라도 상대에게 받았다는 확인을 받는것.. timeout시에 재전송을 하는것, 순서를 기다리는것 등이
상대에게 받앗다는 것을 확실히 하기위해 가상의 루트를 만드는것(virtual circuit) - 전화망도 CO다
즉 CO하면 virtual circuit을 떠올려 CO = virtual circuit이라는 공식을 가지고 있었고,
CO라 하면 연결을 미리 맺어놓고 통신하는것 이라고 알고 있었지만..

이것이 CO의 본질이 아닌 그저 CO를 위한 방법론에 불과했다는 사실.


(물론 ip에서도 virtual circuit을 위한 method가 존대한다.. connect시에 routing table을 지정한 경로로 설정하는것이 그것이다. 하지만 이것이 IP또한 CO를 지원한다는 것이 아닌 단순한 pass through일뿐이라는것을 알아야 한다. 라우터의 세계(ip)는 transport layer가 없다. 즉 알아서 탐색해 주느냐(datagram) 미리 table을 dest로 설정하느냐의 차이일뿐 IP가 datagram이라는것은 변함이 없다.)

'Programmer > Network Prog.' 카테고리의 다른 글

[링크]Socket 이란?  (0) 2007.12.14
[링크]socket-client에 bind없는 이유  (0) 2007.12.14
connection-oriented와 connectionless 의 차이  (0) 2007.12.14
#pragma pack()  (0) 2007.12.14
buffer와 structure  (0) 2007.12.14
host byte order와 network byte order  (0) 2007.12.14
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 21:59 Programmer/Network Prog.
byte align방법 : 과연 몇바이트를 얼라인 할것이냐..

우선 샘플 스트럭쳐..
struct shovel {
    short armLength;       // [2]삽길이
    char type;                //  [1]네모삽,세모삽, 모종삽
    char weight;             //  [1]삽무게
    short price;              //  [2]새 삽 가격
}    // 총 6바이트

[-------- --------][--------][--------][-------- --------]
         short           char      char          short

해본사람은 안다.. 물론 해봐도 오래전에 해봐서 기억이 가물가물하면 까먹는다.

sizeof(shovel)하면 얼마가 나올까요?

시스템마다 다르것지만.. 8이 나올걸..

삽의 사이즈는 8
실제 스트럭쳐는 6

어허허..-_-

메모리가 몇바이트 단위로 잘려있느냐 하는걸 정하는 것의 차이가 되것다.

vs의 경우 기본값이 intel의경우 8이던가..?-_-(다른것도 8인가?)


실제 6바이트짜리로 선언을 하더라도.. 메모리관리의 편의상..8바이트로 관리된다.

그래서 네트웍 프로그래밍을 할때는 구조체 선언부에서 #pragma pack() 매크로를 써준다

실제 원하는 사이즈의 구조체를 얻기위해.. 안그러면.. 보내는데 중간에 이상한 몇바이트가 끼어있는걸 확인할수 있다
(실제로 봐야 얼마나 황당한지 알수 있다.)

#pragma pack(1)        // 1byte align
struct shovel {
    short armLength;       // [2]삽길이
    char type;                //  [1]네모삽,세모삽, 모종삽
    char weight;             //  [1]삽무게
    short price;              //  [2]새 삽 가격
}    // 총 6바이트
#pragma pack()        // 원래대로 되돌림.

요러면.. 저 구조체를 6바이트만 갖는 구조체로 쓸수있다 이거지...

또한 stack을 사용가능하다.

#pragma pack(4)            // 원래 어쨋든 4로 align
#pragma pack(push, 3)    // 4를 스텍에 넣고 3으로 align
#pragma pack(pop)        // 스택에서 하나꺼냄. 4로 다시 align
#pragma pack()            // 4가 되기 이전의 값으로 되돌림.


역시 뭔가 배우는거의 기본은 삽질.. 왕도는 없다.

'Programmer > Network Prog.' 카테고리의 다른 글

[링크]Socket 이란?  (0) 2007.12.14
[링크]socket-client에 bind없는 이유  (0) 2007.12.14
connection-oriented와 connectionless 의 차이  (0) 2007.12.14
#pragma pack()  (0) 2007.12.14
buffer와 structure  (0) 2007.12.14
host byte order와 network byte order  (0) 2007.12.14
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 21:58 Programmer/Network Prog.

드디어 오늘 적으려했던 주제에 도달.

send()함수에 넣어주는 param으로 char형 포인터가 있다. 요놈을 메세지라 부르지;;

난 여지껏 char *라길래.....-_- 정말 char 포인터를 만들어서 넣어주었지...배열로;;-_- 요놈을 버퍼라 부르더군... 캐릭터어레이;

이것이 바로 삽질의 기초;;-_- 모르면 그냥 해라



그제 충격적인 사실을 알았다..-_-

저기 저 char포인터대신 스트럭쳐가 들어가도 된다더라...

-_-!!!!!!! 어찌 이런일이..란느 생각뿐;;


부끄럽지만 다음엔 삽질하지 말자는 마음으로..공개하것다.

나름 머리를 쓴거지;; 데이터를 주고받을때 structure로 관리하면 편하것지? 하면서 일단 structure만들어 주시고
데이타 저기다 다 넣어 주시고..
저걸 다시 한바이트씩 짤라서 캐릭터 어레이에 한칸씩 채워준다음에
send(chararray)했다는 사실...

웃자 :D


엔 충격적인 사실..

데이터를 structure로 관리하는건 맞다. 다만 보낼때...캐스트를 쓰면 된다-_-
send((char*)structure)

-_- 이 어찌 충격이라 말하지 아니할수 있단말인가..

이 간단한걸 생각해 내지 못하고 그 삽질을.. 하다니..



오늘 실습시간에 역시 확인사살을 받았다..

조교 曰
ip패킷의 스트럭쳐를 보시면 아시겠지만..주고받을때 스트럭쳐로 하는게 맞습니다.-_-



ip패킷 스트럭쳐야 보긴 수없이 봤다만.. 본것만이 다가 아니고 내가 이해한것만이 다가 아니다라는 것을 배웠다
(제대로 이해해야 다지..)

'Programmer > Network Prog.' 카테고리의 다른 글

[링크]Socket 이란?  (0) 2007.12.14
[링크]socket-client에 bind없는 이유  (0) 2007.12.14
connection-oriented와 connectionless 의 차이  (0) 2007.12.14
#pragma pack()  (0) 2007.12.14
buffer와 structure  (0) 2007.12.14
host byte order와 network byte order  (0) 2007.12.14
posted by 용사 꼬마라크
TAG 캐스트

댓글을 달아 주세요

2007. 12. 14. 21:57 Programmer/Network Prog.
host byte order와 network byte order

말그대로 host (자기컴퓨터)에서 사용하는 byte의 순서
그리고 네트워크에서 사용하는 바이트의 순서

컴퓨터 통신에 있어서 이 순서는 매우 심각한(난감한?) 결과를 가져올수 있다..-_-


이전의 little endian과 big endian의 차이인데

little endian 을 사용하는 컴퓨터에서 big endian을 사용하는 컴퓨터와 통신을 하려고 하면...?

data = 0x 12 34 56 78

요놈을 A(little endian)에서 B(big endian)으로 보낸다고 해보자..

통신이라는 것이 순서대로 주고받는것임을 명심해야 한다.

MSB부터 가든.. LSB부터 가든..(대부분 MSB부터 가더라, LSB부터 가는게 있는지는 확인못해봄-없나?)
A의 메모리에 들어있는 데이터는 little endian이므로
78 56 34 12

12 34 56 78
------------->
(4) (3) (2) (1) 이래 보내면 받는쪽에서는

78 56 34 12
------------->
(1) (2) (3) (4)의 순으로 받는다(당연한가?)

이 받을것을 가지고 저장을 하려면..
1)little endian의 경우 먼저온것(MSB)이 앞에 저장된다
78 56 34 12 -> 요걸 사용할때는 0x12 34 56 78으로 쓰는것

2) big endian의경우 도 먼저온것을 앞에 저장해야 겠지?
78 56 34 12 -> 요걸 사용하려면 그냥 쓰면 된다 0x 78 56 34 12

여기서 숫자가 바뀐다.

그래서 합의한 것이 network byte order. 네트워크에서 사용하는 바이트의 순서를 정하자라는것이다.

결론부터 말하자면 네트웍 바이트 오더는 빅엔디안과 같다.(빅 엔디안을 사용한다)

즉.. 보낼때는 네트웍바이트 오더로 바꿔서 보내고 받아서 자기가 쓰는걸로 바꿔라라는 컨셉

인텔에서 보내려 할때
0x12345678 이라는 값은 메모리에 78 56 34 12로 저장이 되어있는데
요건 리틀엔디안이므로 빅엔디안으로 바꿔서(12 34 56 78) 앞의 번지부터 보낸다.

모토로라에서 받은것은 12 34 56 78
이것이 메모리에 들어갈때도 12 34 56 78
이걸 이제 모토로라에서 사용가능한 오더로 바꾸면..(사실 바꿀필요 없다)
12 34 56 78로 메모리에 저장이 되고, 사용도 12 34 56 78로 쓰면 된다.

이것을 어떤 함수가 하느냐?
ntoh 와 hton이다. 각각 long와 short 타입이 있다, (ntohl, ntohs, htonl, htons)
의미는 글자그대로.. network to host, host to network

저 함수안을 안들여다 봤지만..
ifdef와 같이 선언되어있을것으로 생각된다.(유저는 알필요없다)

즉, 인텔이든 모토로라든 hton을 부르면 네트웍오더(빅엔디안)으로 바꿔주고(인텔의 경우 오더바꿈, 모토로라는 그대로 리턴)
ntoh를 부르면 호스트오더로 바꿔준다.(인텔이면 오더를 바꾸고, 모토로라는 그대로 리턴)



'Programmer > Network Prog.' 카테고리의 다른 글

[링크]Socket 이란?  (0) 2007.12.14
[링크]socket-client에 bind없는 이유  (0) 2007.12.14
connection-oriented와 connectionless 의 차이  (0) 2007.12.14
#pragma pack()  (0) 2007.12.14
buffer와 structure  (0) 2007.12.14
host byte order와 network byte order  (0) 2007.12.14
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 21:53 Programmer/기초

2진데이터를 메모리에 저장하는 순서로 두가지를 들수있다.(더있으려나..)

little endian과 big endian.

전자는 인텔계열 CPU에서 사용하고, 후자는 모토로라계열에서 사용한다.

모두 다같이 같은 방식을 쓴다면 상관없겠으나...
각 회사의 주장은.. 암튼 자기네거가 좋다더라니까..-_-(분석한자료를 어디서 봤는데..)

간단히 설명을 하자면.. little endian은 LSByte부터 앞에 써주는것이고,
big endian은 MSByte부터 앞에 써주는것이다.(byte에 집중. bit아님)

shovel=50000    : 0xc3 50

요렇게 어사인을 하면..

&shovel
0x01     0x02       (메모리의 주소)
[-------- --------]
        short      
    50         c3
우리가 알고있는 숫자와 순서가 반대! ... 인텔의 little endian
   
    c3         50
요거는 그냥 순서, 모토로라 계열의 big endian

왜?

자 우선 데이터에 있어서 MSByte와 LSByte는
c3 50의 경우 가중치가 높은것이 MSB (c3) 낮은것은 LSB(50)

자리수가 높다고 생각하면 된다.

인텔에서는 50가 short형 기억공간(2바이트)중 제일 앞에 들어간다. 그다음 자리는 그다음주소..이런식으로..
(0x12 34 56 78 -> 78 56 34 12)

모토로라에서는 c3 이 앞에 50가 뒤에..(자리수 순서대로)
(0x12 34 56 78 -> 12 34 56 78)

이것이 바로 little endian과 big endian.


시스템 아키텍쳐의 차이.

'Programmer > 기초' 카테고리의 다른 글

[링크]DLL  (0) 2007.12.14
little endian과 big endian  (0) 2007.12.14
infinite number의 정의  (0) 2007.12.14
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 21:31 Programmer/기초
∞ infinite란 무엇인가?




무한대라고도 부른다.

그럼 무한대가 뭐냐? 뭘 무한대라고 하냐?

억수 큰수? 과연?

10000000000000000000000000000000000를 무한대라 할수 있나?(1)

1000000000000000000000000000000000000000000000000000000000도 무한대라 할수 있나?(2)

그럼.. 둘다 무한대라볼수 있다면 기준점이 어디인가?

(2)의 입장에서 보면..(1)은 무한대인가?




무한대(∞)의 정의는
"임의의 수보다 큰수" 이다.

우리가 생각하는 범위(domain)를 벗어난 수를 무한대라 부른다.
바꿔말하면 그 세계에서 통용되는 수가 아닌수?-_-
임의의 수는 우리가 생각할수 있는 수이기 때문이다


예를들자면..
nano의 세계에서는 0.01도 무한대에 속한다.

'Programmer > 기초' 카테고리의 다른 글

[링크]DLL  (0) 2007.12.14
little endian과 big endian  (0) 2007.12.14
infinite number의 정의  (0) 2007.12.14
posted by 용사 꼬마라크
TAG infinite

댓글을 달아 주세요

2007. 12. 14. 21:27 It's my life./About Me.
자신의 목표가 무엇이고 무엇을 하고싶은지..


최대한 빨리 깨닫는 것이 자신의 미래를 바꾼다.
posted by 용사 꼬마라크
TAG

댓글을 달아 주세요

2007. 12. 14. 21:23 It's my life./About Me.
'완벽한 것은 하늘의 길이지만 완벽해지려고 노력하는 것은 사람의 길이다'

(誠者天之道也 誠之者人之道也, 성자천지도야 성지자인지도야)

                                                                            - 中庸
posted by 용사 꼬마라크
TAG 완벽, 중용

댓글을 달아 주세요

2007. 12. 14. 21:19 It's my life./About Me.
연가려 - 거짓말을 할 줄 모르시는군요..

담덕 - 거짓말은 겁이 날 때 하는 것 아닌가요?

                              - 태왕사신기 中
posted by 용사 꼬마라크

댓글을 달아 주세요

2007. 12. 14. 21:18 It's my life./About Me.
가장 중요한것은 가장 기초적인것이다.
posted by 용사 꼬마라크

댓글을 달아 주세요