stack에 동적으로 메모리 할당: alloca

C프로그래밍을 하다보면 memory leak에 대한 걱정 때문에 메모리를 동적으로 할당(malloc)하는 것이 부담스럽습니다.

만약 동적으로 할당한 메모리가 함수내에서만 사용된다면 함수 끝에서 free할 필요 없이 malloc 대신 alloca로 메모리를 할당해 사용하면 됩니다. alloca를 사용하면 activation record(stack)에 메모리가 할당되거든요.

NAME
       alloca – allocate memory that is automatically freed

SYNOPSIS
       #include <alloca.h>

       void *alloca(size_t size);

DESCRIPTION
       The  alloca() function allocates size bytes of space in the stack frame
       of the caller. This temporary space is automatically  freed  when  the
       function that called alloca() returns to its caller.

저의 개발 환경을 소개 합니다.

회사에서 제가 사용하는 개발 환경을 소개합니다. 제가 하는 일은 프로그래밍 언어의 compiler, interpreter, traslator를 개발하는 것 입니다. 주로 사용하는 툴은 gcc, flex, bison, subversion, vi, eclipse 등등 이구요.

한동안 console + screen + vi 환경을 고집하다 eclipse + vi plugin으로 넘어온지 몇달 되었습니다.


자주 들여다보는 flex, bison description의 syntax highlighting이 안된다는 것을 제외하고는 매우 만족스럽습니다. 특히 eclipse를 사용할때 가장 좋은 점은 Refactor > Rename 기능을 제공하기 때문에 변수, 함수 등의 이름을 바꾸기가 편리하다는 것 입니다.

제가 사용하는 컴퓨터에는 Vista가 설치되어 있고, VMWARE 환경에서 Ubuntu를 부팅해 놓고 개발환경으로 사용하고 있습니다. 2GB의 메모리를 할당해서 개발환경으로 부족함 없이 잘 동작합니다. 이렇게 설정해 놓은 덕분에 윈도우와 리눅스를 아주 편리하게 동시에 사용하고 있습니다.

console 환경에서 기본적인 툴을 다루는 능력이 뒷받침 된다는 전제하에, 다양한 개발 도구, 개발 환경에 대하여 열린 자세를 지니는 것은 개발자가 가져야할 중요한 덕목이라고 생각합니다. 좀 더 효율적으로 일할 수 있는 방법에 대한 끊임 없는 고민이 우리의 퇴근 시간을 앞당겨 줄 수 있을테니까요.

SteerMouse 3.9

맥을 사용하면서 가장 불편한 것은 바로 마우스의 움직임 입니다! 가속도가 적용되는 방식에 적응하기가 쉽지 않네요. 더군다나 회사에서는 윈도우, 리눅스를 쓰고 집에서 잠깐 맥을 사용하다보면 맥의 마우스 방식이 너무 불편하게 느껴집니다.

맥에서는 마우스가 같은 거리를 움직이더라도 빠르게 움직이면 포인터가 많이 이동하고, 느리게 움직이면 적게 이동합니다. 윈도우의 경우에는 빠르던지 느리던지 동일하게 이동하기 때문에, 이런 습관대로 맥에서 마우스를 움직이면 정교한 컨트롤을 하기 어렵고 손목이 아파옵니다.

게다가 기본적인 마우스 속도도 굉장히 느립니다. 덕분에 24인치 아이맥 화면을 기본 마우스 설정으로 돌아 다니다 보면 속에서 천불이 나죠! 그래서 마우스 속도를 높이고자 주로 사용되는 프로그램이 MouseZoom 입니다. 그러나 여전히 가속도를 반영하는 움직임으로 인한 불편함은 해결되지 않죠. 이 때 이와 같은 문제를 어느정도 개선해 주는 프로그램이 바로 SteerMouse 입니다.

http://www.apple.com/downloads/macosx/drivers/steermouse.html
약간의 설정을 해주니 윈도우랑 별차이를 못 느끼겠군요. 맥에서 마우스 사용에 불편함을 겪고 계신 분이라면 꼭 한번 설치해 보세요.

나눔고딕 코딩글꼴

NHN에서 프로그래머를 위한 나눔고딕 코딩글꼴을 배포하였습니다! 회사에서(Vista) 집에서(Mac) 나눔고딕을 사용해왔는데 코딩글꼴까지 나와서 정말 반가웠습니다.

http://dev.naver.com/projects/nanumfont

백문이 불여일견! 다양한 환경에 적용된 스크린 샷을 보여드리겠습니다.

Window Vista: Putty

Ubuntu Linux: Eclipse


Ubuntu Linux: Gnome Terminal


Mac OS X Leopard: Terminal

윈도우 환경에서는 지금까지 Dina를 주로 사용했습니다. 그래서 그런지 Putty에서 나눔고딕 코딩글꼴을 적용해 보니 비교적 선명하지 않은 느낌이 들어 아쉬웠습니다. 그러나 리눅스나 맥의 경우에는 아주 만족스러웠어요. 당분간은 이 폰트만 사용하게 될 것 같습니다. 그러나 약간의 문제가 있습니다.

리눅스의 경우, 그놈 터미널에 적용했을때 커서가 두글자 크기로 잡히면서 다음 글자를 가려버리는 현상이 발생하더라구요. 해결 방법은 다음 URL에 잘 정리되어 있습니다.
http://dev.naver.com/wiki/nanumfont/index.php/TroubleShooting

맥의 경우, 터미널의 Preference에서 나눔고딕 코딩글꼴로 설정한 후 터미널을 완전히 종료하고 다시 실행하면 다른 폰트로 설정이 바뀌어 있습니다. 그래도 맥에는 Monaco라는 예쁜 고정폭 글꼴이 있어서 그리 아쉽지는 않네요.

Putty에 적용했을때를 제외하고는 대체로 매우 만족스럽습니다. 프로그래머라면 한번 사용해 보세요.

Objective-C 공부중

본격적으로 iPhone 어플리케이션을 개발해 보려고, 기초가 되는 Objective-C 언어를 공부중입니다. 컴파일러팀에서 일하다보면 다양한 언어를 접하게 되는데 이녀석도 만만찮게 독특한 개성을 지니고 있는 듯 합니다. 특히나 Smalltalk에서 가져온 복수의 파라메터를 가지는 메서드의 정의 및 호출 방식은 굉장히 독특하네요.


Objective-C를 공부하면서 본격적으로 Xcode를 사용하고 있습니다. vi 에디터 기능을 쓸 수 없다는 것을 빼고는 훌륭합니다! 화면에 노란 줄이 Warning 메세지 입니다. 소스코드에 바로 Error, Warning을 표시해 주네요. 블로그에 공부한 지식을 정리할 수 있는 수준히 되도록 틈틈히 부지런히 공부해야겠습니다.