반응형

분류 전체보기 220

[서평] 프로그래밍 면접 이렇게 준비한다.

이 책은 미국 유명 SW회사 면접을 준비하기 위한 책인 듯 보인다. 내용적으로 크게 두가지로 나누어져 있다고 볼 수 있다. 한부분은 구직활동, 이력서 작성, 면접 등의 과정에 대한 서술과 다양한 팁이다. 그리고 다른 반쪽인 본론인 다양한 면접 문제의 종류와 샘플 그리고 풀이법으로 이루어져 있다. 이 책의 번역 수준은 좋으나 언어적 체계가 우리와 달라 풀이법이 언어적으로 한눈에 들어오지는 않는다. 또한 425 페이지 밖에 안되는 짧은 책이지만 수학적 혹은 논리적인 사고를 많이 요구하는 관계로 수학책을 읽는 것 만큼이나 진도는 천천히 나간다. 그럼에도 불구하고 이 책은 읽을 가치가 있는 책이다. 읽으면서 저자들에 대하여 생각하는 프로그래머들 같다라는 것이 느껴지기 때문이다. 면접 문제지만 현업을 하다보면 마..

알고리즘 2009.09.01

Multi Process Programming Concept #1

암달의 법칙(Amdahl's Law) 연산의 p비율만큼만 병렬화가 가능한 경우, 최대 속도 향상은 1/(1-p) Work Law T1: 1개의 프로세스 사용시 최단 수행 시간 TP: P개의 프로세스 사용시 최단 수행 시간 TP >= T1/P Span Law 병렬실행시 반드시 실행해야 하는 최단 길이, 즉 임계 경로로 1개의 프로세스로 실행시 가장 빠른 실행 시간을 나타냄 Parallelism T1: 모든 노드의 수행시간 T@: 무한개의 프로세스 사용시 최장 패스 노드 수(수행 시간) T1(=최단길이)/T@(=프로세스 개수): 무한개의 프로세스 사용시의 최대 속도 향상 i.e. 18(총 노드 개수) / 9(최장 패스 노드)

64Bit Programming Models: Why LP64?

64-Bit Programming Models: Why LP64? Open Systems community에서 왜 LP64모델을 Unix표준으로 선택하였는가에 대한 요약입니다. LP64모델을 선택하기 위하여 포팅성(Portability), 32bit 환경과의 상호운용성(Interoperability with 32bit Enviroments), 표준 준수(standards conformance), 성능(performance effects), 전이비용(transition costs)을 고려하였습니다. 64bit모델을 고려하기 시작한 것은 H/W발전에 따라 4G이상의 주소에 직접적으로 억세스하려고 하는 것을 필요로 해졌기 떄문입니다. 기존의 64bit 환경에 대한 경험상 해당 환경의 개발자들은 32bit 프로..

C++ 프로그래밍 2009.08.22

64bit 윈도우 프로그래밍

zdnet에 안철수연구소의 유병인님이 쓰신 3부작 글을 한눈에 볼 수 있게 요약하여 놓은 글입니다. [64비트 윈도우 프로그래밍] ① 32비트 프로그램을 엄호하라 64bit x86아키텍처는 32/64bit 겸용 아키텍처, IA64와 같은 64bit 전용 아키텍처로 나뉘며, 이 아키텍처에 따라서 64bit 윈도우의 동작은 틀려진다. 64bit 윈도우의 틀린점 (※이 틀린 점은 64bit 프로세스에서만 지원한다.) -64개의 CPU를 지원한다. -8K Page를 사용한다. x64와 IA64의 틀린점 -x64는 32bit 프로그램을 직접 실행하는데 비하여 IA64는 32bit 에뮬레이션을 하여 실행한다. -IA64는 AWE(Address Windowing Extention)를 사용할 수 없으며 일부 32bit..

C++ Technical Report 1 : Regular Expressions

정규식(Regular Expressions)는 텍스트 처리를 코드가 아닌 정규식을 바탕으로 처리하게해 생산성과 효율성을 높입니다. 쉽게 말하여 정규식을 처리를 위한 문자열에 대입하여 문자열 처리를 굉장히 빠르고 강력하게 할 수 있게 된다는 의미입니다. TR1의 정규식은 아래와 같은 6가지의 문법을 지원합니다. ECMAScript, default grammar and the most powerful basic, POSIX Basic Regular Expressions extended, POSIX Extended Regular Expressions awk, POSIX awk grep, POSIX grep egrep, POSIX grep -E Codeguru의 A TR1 Tutorial: Regular Exp..

C++ 프로그래밍 2009.07.31

C++ Technical Report 1 : Random Number Generation

난수 생성 기능이 굉장히 강력해지고 다양해 졌습니다. 기본적으로 알아야할 상식은 난수라는 것은 진정한 난수가 아닌 일정한 공식(알고리즘)에 의하여 생성되는 수라는 점입니다. 그것은 기존의 C의 방법으로 생성할 때 srand((unsinged int)time(NULL));을 써주지 않을 경우에는 프로그램이 실행될 때마다 매번 같은 난수 값이 반복된다는 것을 통하여 알 수 있습니다. TR1은 난수 엔진이라고 불리는 난수 발생 공식을 가진 템플릿 5개를 기본적으로 가지고 있으며 합성 템플릿을 가지고 이들을 조합하여 쓸 수 있습니다. 이런 기본적인 엔진 템플릿을 바탕으로 typedef가 되어 쉽게 쓸 수 있는 클래스가 TR1에 정의되어 있습니다. 그 다음으로 TR1에는 분산(Distribution)을 조정하기 ..

C++ 프로그래밍 2009.07.30

C++ Technical Report 1 : Metaprogramming and Type Traits

메타프로그래밍을 위한 부분으로 헤더에 관련된 내용을 담고 있습니다. Type traits는 generic code가 타입의 핵심 속성을 억세스 할 수 있게 해주며 타입간의 관계 결정 또는 관련 있는 타입 간의 변환을 가능하게 해줍니다. 이 부분은 TR1의 라이브러리를 공부하기 보다는 메타프로그래밍 관련 책을 사서 보심이 좋을 듯 합니다. 그 외에 온라인으로 볼 수 있는 관련 내용은 아래와 같습니다. boost 'TR1 By Subject' boost 'Chapter 1.Boost.TypeTraits' Metaprogramming 메타프로그래밍에 대하여 boost 'Background and Tutorial'의 내용을 바탕으로 간단히 이야기 해보면 다음과 같습니다. 메타프로그래밍은 템플릿 테크닉, 그 중에..

C++ 프로그래밍 2009.07.29

C++ Technical Report 1 : Function pobjects

Polymorphic Function Wrappers (tr1::function) 모든 Callables(함수포인터, 멤버함수 포인터 그리고 함수객체(Functor or Function Objects))에 대하여 단일한 wrapper를 제공합니다. ※ Callables라는 좋은 표현을 한국말로 어떻게 해야할지 모르겠군요... Function Object Binders (tr1::bind) std::bind1st 및 std::bind2nd의 일반화된 버전으로 함수 호출시 파라메터를 유연하게 지정하게 해줍니다. tr1::function의 최대 장점은 C시절의 함수포인터, C++의 멤버함수 포인터, STL과 같이 각광 받기 시장한 함수 객체를 단일 템플릿으로 처리하여 준다는데 있는 듯 합니다. 자세한 코드 설..

C++ 프로그래밍 2009.07.28

C++ Technical Report 1 (TR1) : Overview

C++ TR1은 C++ 표준 라이브러리에 대하여 새롭게 추가되는 라이브러리에 대한 기술 문서로서, 우리에게는 추가된 C++ 라이브러리를 의미합니다. 2005년 6월 24일에 제안된 문서가 현재 심사중에 있습니다. TR2은 C++0x가 나온 이후에 나올 것으로 예정되어 있습니다. TR1은 Visual Studio 2008 한글판과 같은 경우 Service Pack1을 깔면 쓸 수 있습니다. 이 버전에는 C99에 대한 호환성 부분과 수학라이브러리는 지원하지 않습니다. 또한 영문판과 같은 경우는 별도의 Feature Pack 2008을 다운받아서 깔아야 합니다. General Utilities Reference Wrapper (tr1::reference_wrapper) Boost.Ref에 기초합니다. 헤더에 ..

C++ 프로그래밍 2009.07.23

다음(Daum, Hanmail, 한메일) 아이디(id)로 티스토리(Tistory) Blog API로 로긴(login) 하기

티스토리를 한메일 계정으로 가입한 저는 Blog API로 로긴하는게 되지 않았습니다. 티스토리에서 하는 방법을 찾지 못하여 노가다 끝에 하는 방법을 발견하였습니다. 지금은 Blog API로 정상적으로 로그인을 하여 Window Live Writer로 글을 작성하고 있는 중입니다. 로그인을 하기 위한 방법은 아래와 같습니다. 1. 티스토리(Tistory) 처음 화면에서 아이디 찾기를 클릭합니다. 그리고 블로그 URL이나 필명으로 자신의 계정 아이디(email)을 찾습니다. 저와같은 경우는 아이디가 id@hanmail.net이 아닌 id@daum.net이었습니다. 2. 자신의 계정 아이디(email)을 찾은 뒤에는 다시 티스토리(Tistory) 처음 화면으로 가서 이번에는 비밀번호 찾기를 클릭합니다. 3. ..

기타 2009.07.23

Visual Studio 2010에 적용 예정인 C++0x

우선 이 글은 MS Visual Studio Team System 2010 공식 팀 블로그 에 있는 내용을 한 페이지에 볼 수 있게 요약한 것입니다. 자의적으로 요약한 만큼 잘못된 설명이 존재할 수 있으며 좀 더 궁금한 부분은 해당 페이지를 참조하여 주시면 됩니다. auto 컴파일 시간에 컴파일러가 자동으로 타입을 유추하여 코드를 생성시켜 주는 새로운 키워드 입니다. 예제 보니 가장 많이 쓰일 곳이 STL 코드내일 듯 보입니다. for( auto IterPos = ItemCodeList.begin(); IterPos != ItemCodeList.end(); ++IterPos) { cout

C++ 프로그래밍 2009.07.21

[서평] 온라인 게임 서버 프로그래밍 (MMORPG서버 관련 책)

이 책을 보는 느낌을 말하자면 저자분이 한 프로젝트를 인수인계 받는 느낌이 강하다. 책을 읽으려면 기초적인 소켓프로그래밍, C프로그래밍 그리고 DB프로그래밍 지식이 필요하며 MMORPG 게임을 즐긴 경험이 필요하다. MMORPG에 대한 설명없이 해당 지식을 안다는 가정하에 특정 부분을 설명하고 있으며 코드 설명이라기 보다는 코드 속에 미쳐 써놓지 않은 주석을 설명이라고 표현하는 듯 보이기 때문이다. 이 책은 내용 설명보다는 코드 분석 스타일로 읽어야 하기 때문에 읽는데 시간이 꽤 걸린다. 하지만, 다 읽고 나면 대충 MMORPG 서버 프로그래밍의 큰 틀에 대하여 이해할 수 있다는 것이 장점이다. 말은 MMORPG 서버 프로그래밍 이지만 결국은 게임 로직을 서버에서 처리하는 모든 경우에 응용할 수 있는 기..

반응형