'수집/호기심' 7건
- 2009.06.09 | 1주간의 유입로그로 블로그 돌아보기
- 2009.02.03 | textcube -> me2day 글보내기 오류 (2)
- 2007.11.07 | 대학에서 꼭 배워야할 전산 과목?
- 2006.09.20 | p = (int *) malloc(0)을 한다면? (3)
- 2005.12.27 | 궁금증, 그 끝.
textcube -> me2day 글보내기 오류
요즘은 크게 좋은 말처럼 들리지는 않지만, '친구 따라 강남 간다'는 격으로 대학 동기를 따라 미투데이를 자주 이용하고 있습니다. 친구들과 함께 쓰는 것도 하나의 이유이겠지만, 아무래도 마이크로 블로그의 장점인 '쓰기 편리함' 때문에 더 찾게 되는 게 아닌가 생각해봅니다.
우선 미투데이가 뭐냐고 물어보실 분들을 위해 설명을 드리겠습니다. 미투데이에서는 150자 이내로 자신의 이야기를 적어서 '올리기'를 누르면 됩니다.
약 2개월 전인 2008년 12월 18일자 텍스트큐브닷컴 업데이트 중에서 "텍스트큐브닷컴에서 미투데이로 글 보내기" 기능과 "미투데이에서 텍스트큐브닷컴으로 글 보내기" 기능이 추가되었습니다. 아무래도 텍스트큐브닷컴과 미투데이를 둘 다 이용하는 유저로서 반가운 소식이 아닐 수 없었는데요.
얼마 전에 "텍스트큐브닷컴에서 미투데이로 글 보내기" 기능을 이용하다 한 가지 이상한 점을 발견했습니다. 우선 내용에 대해서 캡쳐한 내용을 보여드리겠습니다.
링크 포함 상태. 150bytes
링크 삭제 상태. 128bytes
미투데이에서는 링크를 걸고자 하는 부분에 쌍따옴표로 감싸고 그 다음 콜론(:) 기호와 연결될 주소를 기재하는 방식으로 사용하고 있습니다. 위의 사진을 보시면 알겠지만, 위에 제가 쓴 글을 연결될 주소로 적을 경우 150 바이트를, 연결될 주소를 삭제하였을 경우 128 바이트를 차지합니다. 정확히 [:http://tt.dayz.org/44]의 글자 수인 12 바이트만큼 차이가 납니다. 이게 무슨 대수냐고요?
왼쪽에 있는 그림을 한번 보시죠. 왼쪽 그림은 미투데이의 일부를 캡쳐해둔 것입니다. 보시면 아시겠지만, 위에서 설명드렸던 방식으로 링크를 걸도록 되어있고, 미투데이에서는 링크 부분(콜론 기호와 주소)은 입력한 글자 수에 포함되지 않습니다.
"텍스트큐브닷컴에서 미투데이로 글 보내기" 기능이 미투데이의 원래 방식과는 약간 다르게 글자 수를 계산하는 바람에 기능을 사용하는 데 약간 어려움을 느끼고 있습니다.
어제 텍스트큐브닷컴 피드백란에 이 문제에 대해 말씀드렸는데, 담당자분께서 같은 상황을 재현할 수 없었다고 답변을 달아주셨습니다. 이 글을 확인하시고 수정 부탁드리겠습니다.
대학에서 꼭 배워야할 전산 과목?
점심시간 이후로는 거의 하는 일이 없어서, 인터넷 이곳저곳을 들락거리다가 우연히 kldp에서 하나의 글을 발견했습니다. 정말 대학에서 꼭 배워야 하는 전산 관련 과목이 뭐가 있을까,라는 주제의 글이었습니다.
링크 ; 대학에서 꼭 배워야 할 과목은 ?? - kicom95님의 글
아무래도 제가 공부하고 있는 분야가 컴퓨터 분야이다보니 자연히 눈이 가게 되더군요. 그래서 현재는 휴학 상태이지만, 제가 속해있는 학교의 커리큘럼을 찾아보았습니다.
링크 ; 한양대학교 정보통신대학 컴퓨터전공 커리큘럼
2005년 초에 확정되었음에도 전공 과목들이 하나씩 추가되거나 커리큘럼 초기에는 있던 과목이 다음 해에는 없어지는 경우가 있었습니다만, 대부분은 아직까지도 살아있는 과목들이고 제가 배웠던 과목들이네요.
과연 컴퓨터(혹은 전산)에 대해 공부하는 학생들이 학교에서 배워야 하는, 학교에서 학생들에게 가르쳐야 하는 과목들은 무엇일까. 언젠가 대학을 졸업한 지인에게 이에 대해 여쭤본 적이 있었습니다만, 그 분의 대답은 "어차피 학교에서 배워봤자 회사에서 써먹는건 거의 없어."이었습니다. 아직까지는 학생의 입장이었던 저는 기운이 빠질 수 밖에 없었지요.
여러분은 어떤 과목을 배우셨나요? 아니면 kicom95님의 글에 나와있듯, 이런 과목은 꼭 배워야 할 것이다,하는 과목이 있으신가요?
p = (int *) malloc(0)을 한다면?
프로그래밍을 하면서 생기는 궁금증은 나를 간혹 미치게 만든다.
그 때문에, 지난 번 function과 stack, 그리고 memory에 대한 간략한 연구를 통해 친구들에게 이상한 놈 취급을 받았던 터라ㅡ아닐 수도 있다ㅡ 앞으로도 나의 궁금증에 관한 포스팅을 올려야 하는지에 대해 고민을 많이 해보았다.
그리고, 다시 궁금증을 해결하기 위해 포스팅을 시작하기로 했다.
이번에 고민하게 된 부분은, "p = (int *) malloc(0)"을 해주게 되면 어떤 결과가 나타날까,이다.
우선, man 명령어를 통해 malloc에 대한 정보를 알아보자.
NAME
malloc, calloc, free, memalign, realloc, valloc, alloca -
memory allocator
SYNOPSIS
#include <stdlib.h>
void *malloc(size_t size);
(이하 생략)return type이 void인 malloc 함수는 size_t size라는 argument를 가진다. 이 size_t size 부분에는 동적으로 할당할 메모리의 크기를 지정해주면 된다. 만약 이 size_t size가 0이라면, 과연 어떻게 될까.
아주 간단하게 소스를 작성해보았다.
#include <stdlib.h>
{
int *p;
printf("*p = %d\n", *p);
}
그리고, 이번에도 세 가지의 다른 시스템 상에서 컴파일 후 실행을 해보았다.
파일명은 malloc.c로 지정했으며, 세 가지 시스템의 대략적인 정보는 다음과 같다.
- Ubuntu Linux 6.06 / gcc 4.0.3 (개인PC)
- SunOS 5.8 / gcc 3.3.2 (한양대 정보통신대학 실습용 서버 a.k.a. medusa)
- Debian / gcc 3.2.3 (한양대 cancun lab의 서버 / Operating System 정보는 미확인)
그리고, 그 결과 값은 아래와 같다.
p : 804a008
*p : 2
- SunOS 5.8 / gcc 3.3.2
p : 209a0
*p : 2
- Debian / gcc 3.2.3
p : 9ca8008
*p : 2
위의 결과에서처럼, malloc의 size를 0으로 주었음에도, 세 시스템에서 모두 메모리 상에 정상적으로 동적 할당이 이루어졌다. 어쩌면 할당되지 않아야 할 부분이 할당되었을 수도 있을 것이고, 그게 아니라면 다른 이유가 있을 것이다.
인터넷 상에서 malloc(0)이라는 키워드를 통해 정보를 검색하다가 흥미로운 문서를 발견했다. 링크
누군가 나에게 '왜?'인지에 대해 설명해줄 것이라고 믿으면서, 조금 더 관련 자료들을 찾아봐야겠다.
궁금증, 그 끝.
링크1, 링크2
결국에는 내 나름대로의 결론을 얻었다. (웃음)
역시나 다른 시스템에서 나온 결론들이 옳은 것인듯.
하지만, free된 메모리를 참조했음에도 제대로 된 값이 나올 수는 없는 노릇이었을텐데. 왜 ubuntu에서는 제대로 된 값을 내보내줬는지 모르겠다. 나중에 시간이 된다면 다시 테스트를 해봐야지.
크리스마스 이브부터 기나긴 답글로 해결책을 제시해준 민영군, 트랙백까지 해주면서 다른 예시를 제시해준 남호군, 그리고 열심히 추측한 생각을 적어준 우리 티오. 모두모두 땡큐베리감사~