'Programming'에 해당되는 글 58건

  1. 2010.06.12 SICP 를 하기위해 Scheme 컴파일러 2
  2. 2010.05.31 mmap 사용시 알아둘 사항 (버스오류)
  3. 2010.05.30 gdb 화면 clear 하기 2
  4. 2009.10.14 프로그래밍은 역시.. 18
  5. 2009.06.22 아아 또 실수~! 4

SICP 를 하기위해 Scheme 컴파일러

요즘에 생각하는게..

프로그래밍이라는게 참으로 기초가 중요하다고 생각해여..

운영체제나, 프로그램 개념이라던가, 소포트웨어 공학이라던가

그래서 "기본이 제일 기본이다" 라는 생각으로 skill 보다는 base를 제대로 닦을수 있는 그런 책을

그런것을 제대로 공부해야... "지금 회사에서 하는 c&p 코더짓" 을 좀 벗어나서 제대로된, 창조적인 "프로그래머"

가 될수 있다는 생각에................ (근데 이런건 아마 학부때 배우는거 아니였나여 ㅋㅋ)

뭐 어쨋던 그런종류의 책을 찾다보니깐  TAOCP, SICP 등이 있더군여

그래서 저번에  TAOCP를 샀는데... 이건뭐 완전 수학책이라 ㅜㅜ...
The art of computer programming 1: 기초 알고리즘 상세보기
도널드 커누스 지음 | 한빛미디어 펴냄
컴퓨터 프로그래밍 입문서. 이 책에서는 기본적인 프로그래밍 개념과 기법으로 시작해서 정보 구조, 다시 말해서 컴퓨터 안에서의 정보 표현, 자료 요소들 사이의 구조적 관계, 그리고 그것들의 효율적인 처리에...

기초 수학도 아니고 이건뭐..

 공학수학은 확실하게 알아야 "이게 이렇게 풀라는 거군하.." 라고 알겠는 수준이더군여

(그것도... 과연 그럴까?? )

뭐 저도 "공학수학" 수업은 들었는데... 공부를 안해서 (대충 한것도 아니고) 하나도 모른답니다 ^^;

그래서 TAOCP는 "책장 장식용" 으로 뽀대나게 두고...

이번에 토익책 사면서  SICP도 샀다는,..

"그래 24" 에서 샀는데 먼저 주문한 SICP는 하루 늦게 오더군여 -_-;

이게 그 "문제의" SICP

컴퓨터 프로그램의 구조와 해석. 1 상세보기
해럴드 애빌슨 지음 | 인사이트 펴냄
『컴퓨터 프로그램의 구조와 해석』 제 1권. 이 책은 해럴드 애빌슨 등이 저술한 것으로, MIT의 컴퓨터과학 입문교과서다. 소프트웨어 제작의 원리와 구성을 바탕으로 프로그래밍의 이슈를 살펴보고,...

이번에 2판 내면서 책이 "상", "하" 로 나눠졌나봅니다..

뭐 저야 출퇴근에 가면서 보기 쉽게 만들어놓으니깐 저야 좋더군여.. 가격차이는 그렇게 차이 안나는거 같군여

상하, 합쳐도... 뭐 지금도 1판 파는데도 많으니깐 2권이 귀찮다 싶으신분은 그냥 1판 사셔도 되고 뭐...

어쨌던...

이책은 좀 특이하게도... 책 서술을 "LISP" (中 scheme) 로 하기 때문에 좀 그렇습니다.. 익숙지 않죠..

알고리즘할때 많이 사용한다고 듣긴 했는데 이걸 직접 할 줄이야.. 하고 경악(?) 했져..

저야 집에서는 윈도보다는 리눅이를 더 많이 쓰는지라 (이 포스팅도 리눅스 - 파폭에서 하고 있죠)

눅스에서 쓸수있는 sheme 컴파일러를 찾으려고 yaourt를 보니깐 뭐 바로 나오더군여..

그래서 설치 했다는.. OS/ 배포판 마다 다르겠지만... 아마 패키지는 다 있을거에요.. 전 아치라서..

#yaourt -S bigloo

로 설치

사용법은........... 그냥 bc 쓰듯이 쓰면 댑니다...

(그러고 보니 이건... 컴파일러가 아니잖아! 인터프리터네..)

 매우 기초적인 문법은 그냥...

소괄호 : 프로시져
부호( +,-,  *. /, ...)
인자1, 인자2, 인자n

순서로 사칙연산은 시키면 되더군여

( 부호 인자1 인자2 )

아래는 그 예.

[~/work]$ bigloo
------------------------------------------------------------------------------
Bigloo (3.3a)                                                            ,--^,
`a practical Scheme compiler'                                      _ ___/ /|/ 
Wed Jan 6 08:19:45 CET 2010                                    ,;'( )__, ) '  
Inria -- Sophia Antipolis                                     ;;  //   L__.   
email: bigloo@sophia.inria.fr                                 '   \    /  '   
url: http://www.inria.fr/mimosa/fp/Bigloo                          ^   ^      
------------------------------------------------------------------------------


1:=> 1+1
*** ERROR:eval:
Unbound variable (from top-level) -- 1+1

1:=> 5 + 5
5
1:=> #<procedure:836f270.-1>
1:=> 5
1:=> 1
1
1:=> (+ 137 349)
486
1:=> (- 1000 334)
666
1:=> (* 7 8)
56
1:=> (+ 1 2 3 4 5)
15
1:=> (+ (* 3 5) (- 10 6))
19
1:=> (define size 2)
size
1:=> size
2
1:=> (* 5 size)
10
1:=> (define pi 3.14159)
pi
1:=> (+ size pi)
5.14159
1:=>



mmap 사용시 알아둘 사항 (버스오류)


mmap  이라하면... seek 같은 귀찬은짓 안하고 파일에서 메모리로 사상 받은다음에,

그 메모리를 조작하면 자동(?) 으로 그 (메모리에 변경된 내용)이 파일에 저장되는 참 편한 넘이져.

(꼭 파일 디스크립터가 있어야하는건 아니지만.......)

근데 문제는,,,저 int files의 파일/파일 디스크립터를 open 할떄 주의 해야하는게...

NAME  
       mmap - map pages of memory

SYNOPSIS
       #include <sys/mman.h>

       void *mmap(void *addr, size_t len, int prot, int flags. int fildes, off_t off);

mmap을 사용할때는 Target 이 되는 파일이 write할 길이보다 커야한다. 는거........

(그러므로 (아래서도 적었지만) 당연히 파일크기가 0가 되서는 안됨)

만약 그렇지 않다면 "버스 오류" 라는 메세지를 출력하고 프로그럄이 종료되어버리는 문제가 생긴다.

O_TRUNC 같은 옵션을 open 함수 사용할때 놓어서도 안되므로 주의 하도록 하자,

그니깐 정리하면.... "mmap은 쓸파일의 크기를 변경할수 없다" 는것..

버스 오류가 나면 참고하도록하자.

joinc에 주의사항하나 정도는 적혀있을듯 했었는데.. 없었던거 같다 (아님 내가 제대로 안읽었던가)

kldp에는 비슷한 내용의 글타래가 올라왔던거 같으니깐 구글에서 찾아보세염.

이걸 왜 했냐면......----------------------------

euckr로 변환된 문서를 utf8로 적용하려고, iconv를 쓰다보니...문제가 생겼다

버퍼 크기가 작어서(euckr로 잡으니) 로케일이 변경되다가 말았던것....

저번엔 utf8->euckr로 변경할때는 어짜피 파일크기가 utf8크기가 크니깐, 그냥 utf8파일 크기를 버퍼 크기로 줘도

상관없었는데, 문제는 그 반대의 상황이 문제였던것...

그래서 메모리 사상을 써봐서 해결해 볼까.......... 해서 mmap을 쓸려고 하니깐....

뭐야... 이것도 결국 버퍼 크기 알아야 하잖아... 챗...

그냥 iconv 함수 쓸때 euckr파일크기 * 2 (사실 1.5배만 해도 충분하다고 하지만) 로 최대 버퍼 잡아서 넘겨버렸다..

(http://kldp.org/node/68263)

잘 되네 변환..

이제 터미널에서 글자폭을 알아야 할 차레...

(뭐 정안되면 UTF8용으로 글자폭 알아보던 함수를 다시 한번 수정해야겠다.

지금 만든건 CJK(한글, 한문, 히라/가타카나)는 글자폭을 제대로 알아오는데.............

러시아어(...) 같은건 제대로 못얻어 와서....... wscol인가.. 그건 왜 눅스에 없을까...)

에이 걍 터미널에서 삽질하지 말고 gtk로 ...?..

gdb 화면 clear 하기

이상하게도(?)

gdb (한국어) 메뉴얼 같은데 보면 화면 을 지우는

(그러니까... clear, cls 같은 명령어)

가 나와 있지 않는데.....

그래서 구글신한테 물어 보니깐 바로 나오는군여..

구글링도 귀차나서 한글로 검색하시는 분을 위해서...

명령어는 간단합니다  그냥 다음과 같이 입력하면 되요.

(gdb) shell clear

물런 이거 응용해서

(gdb) shell ls

같은것도 먹힙니다..

좀더 쉽게 alias 잡으시려고 하면...

(저는 sc로 잡을게요)

(gdb) define sc
(gdb) shell clear
(gdb) end

이렇게 하심 됩니다

참 쉽죠?

gdb는 명령어는 어렵지 않은데 양이 좀 많아서 복잡할뿐이죠 네...

프로그래밍은 역시..

그냥 그저 copy and paste가 전부인가??

윈도우 배경이라서 그런지는 모르겠지만 회사에서 하는거보면 이런식..

회사에서 개발 하는 과정
(혼자서 할수 있건 할수없건 간에...)

1  간단한 자료(조각 코드) 는 네이버 블로그, 지식인
그것도 안되면 구글에서 좀 찾다가 codeproject, codeguru, google 코드검색,
가서 관련 소스를 찾는다.

2 내용같은것 보단 일단 예제 소스를 받는다
(어떻게 구현되는지는 관심없음, 단지 그 동작 을 한다는것이 중요 포인트!)

3 내용을 보고 해당 기능을 구현한 부분을 찾는다.
(거의 같은 기능이라면 통채로 그냥 가져다 쓰면 되고)

4 지정 위치에 붙여넣기한다
(간단한 짤막한 소스는 걍 바로 붙여넣기)

5 만약 winapi로 만들어져있거나, 바로 돌리기에 문제가 있는 경우가 있기 때문에 고친다
(class화 한다던가, 전역변수 처리라던가,  헤더파일 인클루드라던가, 라이브러리 추가 라던가...)

6 추가 기능 추가(다른소스와 짜집기)

7 실제로 visual studio 애서 잘 돌아가는지 테스트 한다

8 잘 돌아가면 일단 모듈로 완성한다

- 뭐 어쨋던 회사에서 하는건 생산성 중요한건 알겠는데, 내 생각에 "회사에서 개발 하는 과정" 대로 하다가는

정말 40대 되서 통닭 튀기기 딱 좋을것 같다 (아니 3년 버티기도 힘들거 같아)

이건뭐 내가 코드를 만드는것인지 코드가 나를 만드는것인지........

내 생각과 아이디어 같은건 없고 그냥 있는거 모아서 컴파일 잘되고 작동만 그럭저럭 되게하면 그만인가?

아님 실력이 부족하다고 생각해서 그런건 아예 시킬 생각 자체가 없는것( 이겠지?)...


그런 고로 해서 요즘에 상당히 고민하는 것....................
항상 그렇듯이 생각만함.. 아마 절대 실천으로는 못 옮기고 걍 이리 살거 같다는
(것이 가장 큰 문제 타성에 쩔어서 계속 되는대로 살까봐서...)

1 이런식으로 할꺼면 아예 IT를 때려치고 .....아님 적어도 개발자는 때려 치우고 공무원공부 ㄱ..
- copy& paste로 계속 나 갈것이라면, 아예 컴퓨터는 그냥 취미로 하는게 나은것 같다...
- 공무원이야 칼퇴 되겠다 어짜피 솔로로 살테니깐 나머지 시간에 계속 플밍하면 되겠네...

3 다니면서 자기계발 해서 대기업 (낮에는 노가다 저녁에 집에와서 눅스공부 -_- )
- 제일 현실성 있는 방향
- 안정성은 높지만 녹록치 않다... 윈도우 리눅이 다하려니 넘 복잡..(차라릴 윈도우는 버려도 니눅이는 버릴수 없음)
- 근데 실제로 중소에서 일해서 대기업 갈수나 있냐?

4 다 때려치고 혼자 독학해서 리눅이쪽으로 재취업
- 내가 제일 하고 싶은거...
- 회사는 환경도 좋고(야근 거의 X 수습이라 그럴지도) 하는일치고(?!)는 pay도 뭐 적은편은 아니고.. 해서 그게..좀.망설;
- 했다간 아마 맞아 죽을지도 몰라 ... 돈 못번다구 ㅜㅜ
- 리스크가 가장 높음...
- 2년전에 휴학한다고 한 짓거리들 생각하면 (.....) 그리 시간대비 효용으론... 안좋을듯...한....
(1년동안 집에서 식충이 취급(!) 에 리눅스만 팠으니............ 그렇다고 오픈소스로 뭘 만든것도 아니라서)
- 아직 경기가 회복됬다고 말하긴 그래서... 과연 재취업이 될까가 의문...

5 대학원
- 만약 간다면... 자대인가 아님 타대인가...
- 석사까지인지 박사까지인지...
- 유학은 갈것인지...
- 결정적으로 돈이 없네열 ㅋㅋㅋ

님들 조언즘 ㅜㅜ

아아 또 실수~!

wchar_t* Game_Word_AnsRandom(UINT ch_cnt)
{
    wchar_t *ret;

    // string 이기때문에 NULL을 위해
    if((ret = (wchar_t*)calloc(ch_cnt + 1,sizeof(wchar_t))) == NULL)
        return NULL;

    srand(GetTickCount());
    
    while(ch_cnt >= 0){
        ret[ch_cnt] = (wchar_t)rand()%26 + 97;
        ch_cnt --;
    }

    MessageBox(NULL,ret,0,0);
    return ret;
}

아 또 실수 했어요 ...

이번엔 그래도 디버거가 제대로 작동했기때문에, 금방 알아냈답니다 ㅋㅋ..

게다가 상큼하게 세그멘테이션 폴트도 내 주는바람에 더 쉽게 찾을수 있었죠..

하지만 이런경우는 저도 처음이라서 첨엔 쪼금 당황했는 (한 3분 걸렸 ㅋㅋ)

확실히 이렇게는 안써보니깐 좀 미묘하군요 ㅋㅋ.

데이터 타입의 향연인가... 앞에 포스팅도 그렇게 이것도 그렇고 ㅋㅋ..

'Programming > C' 카테고리의 다른 글

간단한 디버그 함수  (0) 2010.08.16
오늘도 실수.. iconv  (0) 2010.06.24
주의력 부족  (2) 2009.06.22
이진트리를 만들고나서....아 망했어요...  (2) 2009.05.25
리눅스용 한글2008 체험판 크랙하기  (26) 2009.04.26
prev 1 2 3 4 5 6 7 ··· 12 next