전체 글 216

구글 성공 가져다준 핵심기술, 페이지랭크

몇 일 전 국내 유명 블로거의 구글 페이지랭크(PageRank)가 변경돼 블로거 사이에서 페이지랭크에 대한 관심이 증폭됐다. 구글을 세계 1위 검색 사이트로 만든 가장 강력한 무기인 페이지랭크에 대해 알아보자. 래리 페이지와 세르게이 브린이 구글을 창업한 1998년도만 해도 인터넷 검색의 최고 강자는 알타비스타(Altavista)였다. 1위 포털사이트인 야후도 알타비스타의 기술을 빌려다 사용하고 있었다. 당시 다른 검색 사이트와 마찬가지로 알타비스타도 페이지 내의 글을 가지고만 검색 결과에 나타나는 순위를 정했다. 알타비스타는 대략 다음과 같은 방법으로 웹페이지를 평가한 다음 점수를 부여해 검색 결과 순위를 결정했다. -제목에 해당 단어가 있으면 가중치가 붙는다. -굵게 처리 된 부분에 해당 단어가 있으..

Public/tip & tech 2009.06.04

이거...나랑 증상이 같은데?

지난 1월부터 팔이 저리기 시작했다는 한규종 씨, 검사결과 목뼈 사이의 디스크가 튀어나와 신경을 누르고 있는 것으로 확인됐습니다. 이른바 목 디스크입니다. [한규종(43)/목 디스크 환자 : 팔이 저려가지고 물건을 들거나 그러지 못하고 누워 있어도 잠을 거의 못잤어요.] 국내에서 한해에 목 디스크 관련 진료를 받는 사람은 전국적으로 57만 명 정도. 최근들어 컴퓨터 사용이 급증하고 교통사고와 스트레스 증가 등으로 환자가 늘어날 뿐아니라 발병 연령대도 점차 낮아지고 있습니다. 특히 목 디스크 환자 가운데 1% 가량인 5천 6백여 명은 수술까지 받고 있습니다. [신미숙(48)/목디스크 수술 환자 : 송곳으로 막 찌르는 것 같고 어깨부터 겨드랑이로 해서 팔까지 팔목 있는데까지 타고 통증이 내려오더라고요.] 목..

어른의 사랑엔 판타지는 없다.

1. 배란 숨기는 영장류는 인간이 유일하다. 유성생식 동물에게 가임 기간의 쌍방인지, 절대사안인데. 그거 못 맞추면 멸종하는 건데. 왜 인간만 그리 진화한 걸까. 실버백이 된 고릴라는 이전 보스 새끼들을 다 죽인다. 그래야 암컷이 다시 수태할 수 있으니까. 남의 유전자 위해 제 자원, 낭비 않겠단 게지. 이 습성, 인간도 예외 아니다. 영아살해의 가장 흔한 범인이 바로 계부. 암컷들, 이 위협에 배란 은폐로 대응한다. 배란이 언젠지 모르니, 누구 자식인지 모른다. 수컷들, 제 손일 수도 있으니 함부로 못한다. 암컷 이득은 여기서 그치지 않는다. 배란 시기가 명확할 경우, 수컷은 그 기간만 암컷 독점하면 제 유전자 전달, 달성할 수 있다. 그때만 전담마크하고 새 암컷 물색에 나설 수 있게 된다. 그러나 배..

이차원(2차원) 배열

char stack[10][100]; 이렇게 선언된 stack이라는 이차원 배열을 함수 안에서는 사용하는건 누구나 다 한다. 그런데 이렇게 선언된 배열을 함수의 인자로 넘길때 보통 헤매게 된다. 방법 1 > func(char stack[][100]) 게 넘겨 받는 방법이고 또다른 한가지는 방법 2 > func(char (*stack)[100]) 이다 넘겨 받은 데이터를 사용하는데 있어서 두가지 방법 사이의 차이점은 존재하지 않는다. 두개 모두 stack[i][j]와 같이 사용가능하고, 다만 함수안에서 이차원 배열을 포인팅 할려고 할때는 char (*temp_stact)[100]과 같이 선언하고 사용하면 된다 주의할점은 두번째 방법에서 괄로()를 빼먹으면 전혀 다른 의미가 되기 때문에 주의가 필요하다. p..

Public/tip & tech 2009.05.12

가변인자

잘 사용하지 않는 기술인데 에러 처리와 같은 부분에서는 상당히 편하게 사용될수 있다. #include void error( char *format, ... ) { va_list list; va_start( list, format ); while( *format != '\0' ) { // string if( *format == 's' ) { char* s = va_arg( list, char * ); printf( "[msg] strnig : %s\n", s ); } // integer else if( *format == 'd' ) { int d = va_arg( list, int ); printf( "[msg] integer : %d\n", d ); } *format++; } va_end( list );..

Public/tip & tech 2009.05.12

global(전역변수) & static(정적변수) variable

global 변수 : 선언과 동시에 모든 파일에서 접근 가능한 변수 static 변수 : 선언된 파일 안에서만 접근 가능 main.c sub1.c sub2.c 라는 파일 있다면 main.c에서 선언한 global 변수 g_val 은 sub1.c나 sub2.c에서도 접근 가능하다 그러나 main.c에서 선언한 s_val은 sub1.c나 sub2.c에서 접근할수 없다. 간단한 사용 예를 보면 (gloval 변수) ######################################################## main.c ---------------------------------------------------- int g_val = 10; main.c ---------------------------..

Public/tip & tech 2009.05.12

iconv 를 이용한 문자열 변환(utf-8)

리눅스에서 많은 함수들을 지원하지만 그중에서 iconv의 사용법에 대한 설명이다. iconv는 아래 예에서 든 캐릭터셋 이외에도 훨씬 많은 캐릭터간의 변환이 가능하다 #include size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); 아래 예제는 utf-8에서 euc-kr로 변환하는 소스이다 #include #include #include #include int main() { char * sourceP = NULL; char * destP = NULL; char sourceBuffer[1024]; char destBuffer[1024]; int size1 = 0; int size2..

Public/tip & tech 2009.05.12