문자열 변환 (HexToDec, DecToHex)

숫자표현 문자열을 10진수에서 16진수로, 16진수에서 10진수로 변환하는 함수입니다.


[C++ 버전]
void DecToHex(unsigned char* out_buff, int* out_buff_len, unsigned char* in_buff, int in_buff_len)
{
char hex_str[3];

memset(out_buff, 0, *out_buff_len);

for (int i = 0; i < in_buff_len; i++) {
sprintf(hex_str, "%02X", in_buff[i]);
strcat((char *)out_buff, hex_str);
}
}

void HexToDec(unsigned char* out_buff, int* out_buff_len, unsigned char* in_buff, int in_buff_len)
{
int num, i, j;
unsigned char hex_str[3];
char* stop_str;

hex_str[2] = '\0';
memset(out_buff, 0, *out_buff_len);

for (i = 0, j = 0; i < in_buff_len; i++, j++) {
hex_str[0] = in_buff[i];
hex_str[1] = in_buff[++i];

num = strtol((char *)hex_str, &stop_str, 16);
out_buff[j] = num;
}

*out_buff_len = j;
}

[Delphi 버전]
function DecToHex(sDec : String) : String;
var
i : Integer;
begin
sHex := '';

for i := 0 to StrLen(sDec) do begin
sHex := sHex + Format('%02X', [sDecimal[i]]);
end;

Result := sHex
end;

function HexToDec(sHex : String) : String;
var
i : Integer;
sDecimal : String;
begin
sDecimal := '';

for i := 1 to StrLen(PChar(sHex)) do begin
sDecimal := sDecimal + IntToStr(StrToInt('$' + sHex[i] + Temp[i+1])));
i := i + 2;
end;

Result := sDecimal
end;

by Hansolo | 2009/03/09 18:58 | Visual C++ | 트랙백 | 덧글(0)

죽음의 행진 프로젝트(Death-March Project)

죽음의 행진(Death-March Project)에서는 모든 프로젝트 인원 개개인에게 불굴의 희생정신을 요구한다. 사생활을 포기하고, 잔업을 계속하고, 사무실에서 주말을 보내고, 가족과 떨어져 지내야 하는 것 등을 요구한다. 프로젝트에 대한 헌신 이외에는 받아들여지지 않는다.

죽음의 행진의 정당화는 항상 프로젝트의 중요성이라는 미명 아래 이루어진다. 프로젝트가 매우 중요하기 때문에 프로젝트 인원들이 극한의 노력을 해야 한다고 요구한다. 이 말에는 약간의 수수께끼가 숨어있다. 만약 프로젝트가 그렇게도 중요하다면 제대로 하기 위해서라도 필요한 인원과 돈을 투입해야 하는 것 아닌가?

우리의 경험상 죽음의 행진 프로젝트의 공통적 특징은 기대치가 낮다는 것이다. 이들 프로젝트는 마치 기념비적으로 하찮은 제품을 내놓는 것을 목표로 하는 것 같다. 죽음의 행진에 대한 진실은 가치가 너무 낮아서 보통의 비용을 들여 프로젝트를 했다가는 효과보다 더 많은 비용이 들어갈 것이라는 점이다. 오직 영웅적인 노력이 있어야만 돼지조차 날 수 있도록 만들 수 있다.

죽음의 행진 프로젝트의 둘째 특징은 회사의 이익을 위해 개인 생활을 희생하도록 호도한다는 것이다. 그들은 그렇게 하는 것만으로 모두가 납득할 수 있는 아주 적은 비용으로 작은 가치의 노력이나마 정당화 할 수 있다고 믿는다.

죽음의 행진 프로젝트의 셋째 특징은 모든 사람들이 무기력과 분노를 느끼게끔 아무 결과도 내지 못한 채(보통은 평균 이상의 비용이 소요) 항상 대실패로 끝나 버린다는 것이다. 더 좋은 방법을 찾아야만 한다.

                                                              - 톰 디마르코, 티모시 리스터,
        "Waltzing With Bears: Managing Risk on Software Projects" 중에서...

by Hansolo | 2009/03/08 14:05 | DevStudio | 트랙백 | 덧글(2)

stackoverflow

국내에 소개된 [조엘 온 소프트웨어]의 저자 조엘 스폴스키(Joel Spolsky)와 제프 앳우드(Jeff Atwood, http://www.codinghorror.com/blog/)의 소프트웨어 관련 만담(Talk Show)입니다.

    관련링크 : http://blog.stackoverflow.com

현재 Podcast #9까지 나와있고, 앞으로도 계속될 예정입니다.

혹시 IT관련 다른 토크쇼에 관심이 있다면 다음 사이트들도 도움이 될 겁니다.
   http://itc.conversationsnetwork.org
   http://se-radio.net

물론 위의 모든 사이트 내용이 영어로 진행되기때문에, 더구나 격렬한 토론이 있기도 하고 그야말로 만담이기때문에 웬만한 영어실력으론 따라잡기 힘들 겁니다.
하지만, 모든 사이트가 대화내용을 audio streaming뿐만 아니라 mp3파일 다운로드(팟캐스트, podcast)도 제공하고 심지어는 위키를 이용한 transcript도 제공하기 때문에 다양한 휴대용 미디어 플레이어로도 손쉽게 들을 수가 있고, 따라서 IT인을 위한 영어 공부에는 최적입니다.

어쨋든 Web 2.0 (이걸 어떻게 발음하는지도 한 번 확인해보세요)를 비롯해 RIA, SOA, SaaS 등 이름만 들어도 현란한 요즘 인테넷 비지니스의 흐름을 놓치지 않는 개발자가 되기 위해서는 반드시 숙지해야할 사이트임에는 분명해 보입니다.

by Hansolo | 2008/06/19 01:42 | 트랙백 | 덧글(0)

아키텍트 도구론 - 사고실험

소프트웨어 시스템 설계에서 추상화 레벨 모델링은 이후의 모든 설계를 이끌어 가는 철학적 기반을 제공하는 정신적인 지주 역할을 한다는 점에서 매우 중요하다.
잘못된 철학은 잘못된 설계를 이끌어내고, 잘못된 설계는 구현을 어렵게 함으로써 전체적인 프로젝트의 성공을 불투명하게 한다.
따라서, 소프트웨어의 추상화 레벨 모델링은 언제든 올바른 방향으로 수정 가능하도록 유연난 사고를 바탕으로 해야하며 무엇보다도 사전에 충분한 명상(좀 거창해 보이지만) 또는 사고실험을 거친 것이어야 한다.


내용 전체 보기...

by Hansolo | 2008/06/17 21:09 | DevStudio | 트랙백 | 덧글(0)

누군가 왜 코딩을 하느냐고 묻는다면...

나에게 누군가 왜 코딩을 하느냐고 묻는다면...

같은 질문이라도 묻는 의도에 따라 두가지 답변이 가능한 질문이다, 적어도 내 경우에는..

첫째로, 왜 프로그래머의 인생을 택했는가 또는 왜 프로그래머라는 직업을 택했는가에 대한 답변이다.
물리학보다 쉽기때문이다. 원래 나의 꿈은 천문학자가 되는 것이었고 그래서 대학도 천문학 관련학과를 다녔다. 그러나, 일반적으로 생각하기에 그저 별이나 처다보고 허황된 이론이나 발표하는 게 일인 것 같은 천문학자라는 명함을 내밀기 위해서는 그야말로 고행과도 같은 끝없이 난해한 수학 방정식으로 이루어진 물리학 이론들에 대한 깨닳음을 쌓아 가야만 한다. 나의 대학생활 역시 그랬고, 그러던 와중에 컴퓨터 프로그래밍을 통해 천문학 수치계산을 배우는 과목을 수강한 적이 있는데, 그때 배운 프로그래밍 언어들이 수학방정식에 비해 좀 더 쉬울뿐 아니라 직업을 얻기에도 훨씬 수월하다는 사실을 깨닳았다. 때는 바야흐로 펜티엄 컴퓨터의 태동기였고, 우리나라 S/W 산업이 꽃피던 시기였던 것이다. 게다가 프로그래밍이라는 것이 문학적이기까지 했다. 인생이서 이처럼 흥분되는 경험은 Star Wars를 본 이후로 처음이었던 것 같았다.

둘째로, 왜 나이 40이 다 되도록 여전히 코딩을 하는가에 대한 답변이다.
S/W 분야에서 새로운 기술을 익히고 가장 적절한 아키텍처를 구사하는 데에 코딩만큼 확실한 수단이 없다고 느끼기 때문이다. 즉, 스스로 설계한 아키텍처와 데이터 스키마가 얼마나 적절한지를 검증하기 위해서는 스스로 코딩을 해보는 수 밖에는 없다는 결론이다...
아니다! 사실은, 코딩을 하고 있는 순간이 가장 행복하게 느껴지기 때문이다. 그것이 상대적으로 고객응대의 괴로움보다 나아서이든, 공격적인 팀미팅 보다 평화로워서이든, 지루한 문서작업보다 자유로와서이든, 어쨌든 행복감을 주기 때문이다.
게다가 요즘 유행하는 애자일 개발 방법론에 따르자면 굳이 아키텍트와 개발자를 구분할 필요가 없다고 하니, 당분간 내가 이 행복한 시간을 포기할 필요는 없어 보인다.


이어지는 내용

by Hansolo | 2007/09/01 01:00 | Hansolo 아포리즘 | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶