Posts by Tag

cpp

Effective Modern C++ (스콧 마이어스, 2015) 독후감

2 minute read

다시 C++을 만지게 됐다. 책장에 꽂혀 있던 ’Effective Modern C++’ 책을 다시 읽었다. 예전에 읽었던 것 같은데, 새롭고 놀랐다. 나보다 더 깊이 생각한다. 여기까지 설명하겠지 하면서 읽다 보면 예상한 것보다 한 발짝 더 깊이 들어가서 설명한다. 스콧 마이어스 ...

#cpp #tr1 shared_ptr, weak_ptr

1 minute read

STL에는 auto_ptr라는 스마트 포인터가 있지만 할당하면 소멸식 복사(destructive copy)로 자원에 대한 소유권을 넘겨주는 동작을 한다. STL 알고리즘은 값에 의한 복사가 기본 동작이라서 컨테이너에 못 넣는 스마트 포인터가 되겠다. 이게 이슈가 많이 돼서 이름도 ...

#review Google C++ Style Guide

1 minute read

사실 style guide가 나와서 말인데, 나는 조엘이 엄선한 소프트웨어 블로그 베스트 29선에서 본 ’스타일은 언어 요소다 - 켄 아놀드’글을 완전 지지한다. 많은 언어가 무시하는 공백 문자를 언어 요소로 넣자고 주장하는데, 지겨운 스타일 논쟁을 완전 없앨 수 있고 파싱이 쉬워...

#cpp #idioms Nifty Counter

1 minute read

목적은 Construct On First Use와 같다. 즉, global static object, global object 초기화 순서가 명확하지 않아서 발생하는 static initialization order fiasco를 막기 위한 idiom이다.

#64bit 포팅 - 32비트 포인터들이여 안녕

less than 1 minute read

포팅을 위해 64bit로 빌드를 하면 갑자기 담배가 급하게 땡기게 된다. 수백 개의 에러를 보면 “어휴~ 이걸 언제 다 잡지?”라는 생각이 절로 든다. 하지만 다 저마다 독특한 상황에서 발생하는 에러가 아니라 에러는 수백 개라도 공통된 패턴이 있기 마련이다. viva64.com에 ...

#term memoization, 메모이제이션

less than 1 minute read

계산한 값을 메모리에 저장해서 여러 번 같은 값 계산을 피하는 최적화 기법을 메모이제이션(memoization)이라고 한다. 실행 속도와 공간을 바꾸는 가장 기초적인 기법이기도 하다. 실수로 메모리제이션이라고 하기도 하는데 메모이제이션이 정확한 용어이다.

비디오 메모리 구하기 (DirectDraw, WMI)

2 minute read

PerfHUD나 DirectX Caps Viewer로 볼 수 있지만, 비디오 메모리 사용량을 렌더링하는 게 그리 힘든 일이 아니라 보통 이 정도는 렌더링해준다. 그건 좋은데 문제는 DirectX9 인터페이스로는 사용 가능한 전용 비디오 메모리를 알 수 없는 거다. 그래서 보통 Di...

#cpp Pimpl 관용구

2 minute read

컴파일할때 파일 간의 디펜던시를 줄이려고 사용하는 관용구(idiom)이다. public 접근 권한으로 정의된 함수가 변경될 때, 이 파일을 include 하는 녀석들이 다시 컴파일되는 건 당연한데, 다른 녀석들이 못 보는 private 접근 권한의 멤버 함수나 변수가 변경될 때도 ...

#stl istreambuf_iterator, ostreambuf_iterator : 서식화(formatted)하지 않는 입출력

less than 1 minute read

사용자 입력은 서식화된 입력(공백 문자 무시 등)이 필요하지만 파일 입출력에서는 서식화된(formatted) 입력이 필요 없는 경우가 대부분이다. 서식화된 입출력은 쌩 입출력보다 처리를 하는 게 많아서 속도가 느린 게 당연하다. 공백 문자 무시 옵션을 켜도 되지만 이런 서식화 입출...

#stl 상등 관계(equality)와 동등 관계(equivalence)의 차이 파악

2 minute read

두 값이 같은가를 판단하는 두 가지 방법이 존재한다. 첫 번째 방법은 두 값이 같은지를 바로 판단하는 것이고 두 번째 방법은 작지도 않고 크지도 않다는 것을 확인해서 두 값이 같은지를 판단한다. 이 첫 번째 방법은 operator== 로 판단하는데, A == B 이면 두 값이 같다...

#stl VS 2005의 std::string 구현(딩컴웨어 STL)

1 minute read

Effective STL 항목 15에서 string이 여러 가지 방식으로 구현되어 있다는 걸 상기시키고 있다. 구현 방법까지 표준 문서에 정의하지 않았기 때문에 당연한 결과이기도 하다. VS 2005에 포함된 딩컴웨어 STL은 어떻게 구현되었나 궁금해서 찾아봤다.

#stl copy_if 알고리즘 구현

1 minute read

STL 알고리즘 이름의 _if 접미사는 술어 함수(predicate)를 인자로 받는 것을 의미한다. 이 술어 함수를 알고리즘 안에서 호출해서 돌려받은 반환 값에 따라 동작을 수행할지 말지를 결정하게 된다. 예를 들면 count_if()는 술어 함수 호출결과가 true인 원소들의 개...

#stl 정렬 알고리즘(sort, stable_sort, partial_sort, nth_element)

3 minute read

컨테이너 정렬이 필요할 때, sort를 사용하고 순서가 유지돼야 하면 stable_sort를 사용했다. partial_sort와 nth_element는 한 번도 사용해본 적이 없는데, 일부분만 정렬이 필요하거나 몇 번째 원소를 뽑을 때 유용하게 사용할 수 있을 것 같다. 예를 들면...

#stl accumulate - 수치 알고리즘

1 minute read

for_each 알고리즘으로 대체 구현이 가능한 거라 한 번도 사용해보지 않은 알고리즘이다. Effective STL 37번 항목에서 accumulate알고리즘에 대한 언급이 나오는데, 으.. 읽고 보니 좋은 걸 안 쓰고 있었구나.

#term predicate, 술어

1 minute read

predicate 발음듣기 [미] [prédikət] 【문법】 술부, 술어 (cf. SUBJECT) 【컴퓨터】 술어 구글 사전

#visualstudio - _noop 키워드

1 minute read

NOOP 혹은 NOP 로 사용하는데, NO OPerator의 줄임말이다. 말 그대로 아무런 연산을 하지 않는 명령어를 뜻한다. 표준이 아니라 VC++ 키워드라는 게 걸리는데, 다른 컴파일러에서 동작하도록 쉽게 수정할 수 있으니 포팅 걱정은 안 하고 VC++에서 편하게 써도 된다. ...

EASTL - 할당자(allocator)

2 minute read

EASTL - Electronic Arts Standard Template Library은 거대 게임 개발사인 EA가 C++ 표준 라이브러리인 STL을 게임 개발에 맞게 수정한 라이브러리이다.

이펙티브 C++ 3판 (Effective C++, 스콧 마이어스, 2015) 독후감

less than 1 minute read

2판이 있는데, 목차를 살펴보니 새로 추가된 내용이 많아서 샀다. 상당히 많은 부분이 추가 되었고 내용들도 수정되고 추가 되었다. TR1에 대한 소개도 추가되었고 템플릿쪽에 대한 얘기가 늘어났다. 두번째로 보는 C++ 책이라 불리는 책이니 책에 대한 다른 칭찬의 말은 필요도 없을 ...

#quiz 몬티 홀 문제(Monty Hall problem)

2 minute read

Suppose you’re on a game show, and you’re given the choice of threedoors: Behind one door is a car; behind the others, goats. You pick adoor, say No. 1, a...

Back to Top ↑

gdc

#gdc13 #review Loading Based on Imperfect Data

less than 1 minute read

ref graph를 활용한 load list 구축. #gdc12 Data is a Four-Letter Word 참고. 개발할 땐 loose loading, 릴리즈에선 loading list를 만들어서 사용.

#gdc12 #review Solving Rigid Body Contacts

less than 1 minute read

contact solve를 이렇게 설명할 수 있구나. NDC 12에서 발표한 게임 물리 엔진의 내부 동작 원리 이해 발표보다 훨씬 세련되게 설명한다. 한 수 배웠다. 설명 방법이 돋보였던 발표.

#gdc11 #review Anti-aliasing from a Different Perspective

less than 1 minute read

blur를 먼저하고 edge를 찾고 마스킹. 여기서 long, short edge를 구분하고 blur 커널 크기를 다르게 적용해서 original layer에 blend한다. 사진으로 보니 MLAA(morphological anti-aliasing)와 비슷한 품질이 나오고 더 빠르...

#gdc10 #review Uncharted 2 Art Direction

less than 1 minute read

윤곽을 잡는 방법이 신기했고 overdraw, 자연스러운 길 유도, … “이런 것까지 생각하는구나.” 라며 감탄.

#gdc10 #review The Asset pipeline for Just Cause 2: Lessons learned

less than 1 minute read

에셋(asset) 버전 컨트롤에 어떤 포맷을 해야 할까? 게임에서 빠르게 읽을 수 있게 최적화한 game ready data? 만약 이 포맷으로 저장한다면 maya와 같은 저작(authoring) 툴에서 export 하면 이전 변경 내용이 모두 없어진다. 특히 editor에서 ga...

#gdc12 #review GDC2012 간단 정리

1 minute read

GDC2012를 간단히 정리했다. 발표하는 분야가 넓어. 이거 다 이해하기는 무리. 잘 모르는 분야는 맛만 본다는 마음가짐으로 간단히 봤다.

#gdc11 #review 늦은 GDC2011 간단 정리

1 minute read

지금은 2012년. 그리고 올해 GDC 행사가 끝난 시점. 작년부터 틈틈이 정리하긴 했지만 질질 끌어오던 GDC2011 정리를 마무리 짓고 싶었다. 그래서 서둘러 마무리. 아직 GDC 2012 볼트가 안 열렸으니. 뭐 오케이.

Back to Top ↑

elixirlang

빈 리스트에 대한 all? 함수의 리턴 값은? - 공허참(vacuous truth)

3 minute read

Enum.all?/1 함수를 사용한 함수 테스트할 때였던 걸로 기억한다. 비어 있는 리스트를 넣어서 테스트했을 때, 기대하지 않은 값이 나와서 의아했다. 비어 있는 리스트를 인자로 넘겼을 때, false 값이 나올 것으로 기대했다. 하지만 true 로 나오는 것이었다. Enum.a...

Testing Elixir (Andrea Leopardi, Jeffrey Matthias, 2021) 독후감

5 minute read

구성이 마음에 들어서 책을 읽었다. otp, ecto schemas, ecto queries, phoenix를 테스트하는 방법이 목차에 담겨있다. 언어만 elixir로 바꾼 일반 테스팅 책이 아니라는 기대가 있었다. 하지만 막 감탄하면서 읽지는 않았다. 주제가 달라진다고 테스트하는...

#elixirlang 매크로 코드 디버깅 팁

2 minute read

Metaprogramming Elixir 책에서 간단한 예제를 가져왔다. HTML DSL(Domain-specific language)를 매크로로 구현하는 예제를 가져오고 싶었지만 멋진 만큼 설명이 많이 필요했다. 그래서 이거 매크로로 만들어서 어디에 쓸 거야? 하는 unless ...

Programming Ecto (Darin Wilson, Eric Meadows-Jonsson, 2019) 독후감

1 minute read

elixir 언어에서 표준으로 쓰는 데이터베이스 래퍼(wrapper)이자 쿼리 생성기 라이브러리인 ecto를 설명한 책이다. 잘못 사용하고 있는 게 있지 않을까? 편한 걸 놔두고 어렵게 사용하고 있지 않을까? 이런 걸 배우고 싶어서 이 책을 선택했다. 생각보단 영양가가 없었다. e...

소스 코드 읽기: prometheus.erl, prometheus.ex

5 minute read

deadtrickster/prometheus.erl은 모니터링 시스템인 prometheus.io의 erlang 클라이언트다. 각종 메트릭(metric)을 프로메테우스가 파싱할 수 있는 포맷으로 텍스트를 만든다. deadtrickster/prometheus.ex는 prometheus...

소스 코드 읽기: erlang telemetry

4 minute read

telemetry는 erlang과 elixir에서 표준처럼 쓰는 메트릭(metric) 및 계측(instrumentation) 용도로 사용하는 동적 디스패치(dynamic dispatching) 라이브러리다.

Programming Phoenix 1.4 (Chris McCord 외 2명, 2019) 독후감

5 minute read

elixir 언어로 만든 웹 프레임워크 phoenix를 설명한다. phoenix에 관심이 없더라도 추천하고픈 책이다. 잘 만든 웹 프레임워크를 내공 짱짱 맨들이 설명해주기 때문이다. elixir 언어를 만든 Jose Valim도 저자 중 한 명이다. 설명도 좋고 예제 코드도 좋다....

#elixirlang 언어로 #telegram 봇 만들기

1 minute read

텔레그램은 훌륭한 메신저이자 클라이언트다. 훌륭한 클라이언트가 된 건 bot api 덕분이다. 간단한 iOS 앱을 만들려고 했는데, 텍스트로 제어가 충분하다고 생각하니 텔레그램 봇으로 만들면 되겠단 생각이 들었다. 혼자 쓸 거라 만들어 본 슬랙(slack) 봇은 과하다.

#elixirlang 언어로 만든 #slack 봇을 #heroku 서비스에 배포하기

3 minute read

다음 사이드 프로젝트는 slack 봇(bot)이다. 관리 시간을 줄일 아이디어가 떠올랐다. 언어는 요즘 쓰고 있는 elixir 언어로 결정했다. 처음부터 만들어야 하는 거 아니야? 노노. 이쪽 생태계를 무시하면 안 된다. 1986년에 발표된 32살 erlang 언어가 뒤를 든든하게...

Programming Elixir 1.3 (Dave Thomas, 2016) 독후감

1 minute read

챕터 배치 신경 많이 썼네. 처음부터 pattern matching을 설명한다. = operator가 다른 것을 본다. 다른 세계에 왔구나. 이걸 처음부터 느낄 수 있었다. 그래서 그런지 아껴서 쓰는 control flow는 미루고 미루다가 뒤에 설명한다.

Back to Top ↑

review

GitLab 팀 안내서(team handbook)를 보고

3 minute read

입사하면 보게 되는 안내서. 안내서만 보면 어떤 회사인지 알 수 있다. 이렇게 호기롭게 지르고 싶지만 내가 본 안내서가 몇 개 안 될뿐더러 안내서를 공개한 회사 내부 사정을 잘 모른다. 회사 구성원은 어떤 소양을 가진 입사자를 원할까? 자기 동료에게 바라는 건 뭘까? 실상과 다르더...

#ndc_14 #review 모에론 - 김용하 (스마일게이트)

less than 1 minute read

모에. 뭔지 모르지만 익숙하다. 왜냐면 내 첫 게임 프로젝트에서 많이 쓰였기 때문이다. 모델 뷰어는 MoeView였고 월드 에디터는 MoeTanz였다. 뭔지는 모르겠지만 일반적이지 않다는 건 느꼈다. 아. 다행히 클래스 이름 접두어는 Moe가 아니었… 아니, 있었던 거 같기도 하고.

#gdc12 #review GDC2012 간단 정리

1 minute read

GDC2012를 간단히 정리했다. 발표하는 분야가 넓어. 이거 다 이해하기는 무리. 잘 모르는 분야는 맛만 본다는 마음가짐으로 간단히 봤다.

#gdc11 #review 늦은 GDC2011 간단 정리

1 minute read

지금은 2012년. 그리고 올해 GDC 행사가 끝난 시점. 작년부터 틈틈이 정리하긴 했지만 질질 끌어오던 GDC2011 정리를 마무리 짓고 싶었다. 그래서 서둘러 마무리. 아직 GDC 2012 볼트가 안 열렸으니. 뭐 오케이.

#review 그림자 생성 - 니시카와 젠지

1 minute read

간략한 shadow volume 소개와 여러 shadow mapping 알고리즘을 소개한 아티클이다. 프로그래머뿐만 아니라 게임에 관심이 있는 사람들도 읽을 수 있도록 쉽게 써서 그림자를 구현하기 전에 살짝 읽기에 좋은 글이다.

#review Google C++ Style Guide

1 minute read

사실 style guide가 나와서 말인데, 나는 조엘이 엄선한 소프트웨어 블로그 베스트 29선에서 본 ’스타일은 언어 요소다 - 켄 아놀드’글을 완전 지지한다. 많은 언어가 무시하는 공백 문자를 언어 요소로 넣자고 주장하는데, 지겨운 스타일 논쟁을 완전 없앨 수 있고 파싱이 쉬워...

#review 디자인은 죽었는가? - 마틴 파울러(Is Design Dead? - Martin Fowler)

1 minute read

종종 어떤 XPers들은 많은 디자인 활동과 디자인 패턴을 쓸모없다고 한다. 또 어떤 XP 비방자들은 XP를 디자인도 없는 짜보고 고치는(code and fix) 개발방식으로 회귀라고 말한다. 마틴 파울러(Martin Fowler)가 “어휴 둘 다 오해하고 자빠졌네.”라며 교통정리...

#review 해커 문화의 뿌리를 찾아서 - developerWorks

less than 1 minute read

최근에 SICP 스터디가 끝났는데 , SICP에서 배우는 리스프(Lisp)의 방언(dialect)인 스킴(Scheme)의 역사와 중요 개념의 소개를 다룬 글이라서 너무 재미있게 읽었다. 관심 없는 역사는 연도와 사건들의 map으로 밖에 안 느껴져서 너무 지겨운데, 관심이 있거나 지...

#review 초보 개발자를 위한 오픈 소스 라이선스 길잡이

2 minute read

특허는 … 알고리즘이 같다면 어떤 컴퓨터 언어로 표현되었는지에 상관없이 침해로 규율할 수 있기 때문이다. … 그러나 출원 및 등록유지 비용이 든다는 점이 단점이다. 이에 비해 저작권은 알고리즘이 표현된 것을 보호하므로 보호받는 범위가 좁고 프로그램 저작물을 의도적으로 보...

#review 이슈 트래커 개발자가 들려주는 이슈 트래커 이야기

2 minute read

맨티스, 버그 질라, 트랙 등 유명한 이슈 트래커가 팀 요구 사항에 맞지 않아 ECUS라는 사내 이슈 트래커를 개발하면서 겪은 경험담을 적어 놓았다. 많이 쓰이는 오픈 소스 기반의 이슈 트래커들의 장단점과 ECUS에서 어떤 걸 버리고 개선했는지에 대한 얘기를 1부에서 다뤘고 이슈 ...

Back to Top ↑

slides

Back to Top ↑

code

#cpp #tr1 shared_ptr, weak_ptr

1 minute read

STL에는 auto_ptr라는 스마트 포인터가 있지만 할당하면 소멸식 복사(destructive copy)로 자원에 대한 소유권을 넘겨주는 동작을 한다. STL 알고리즘은 값에 의한 복사가 기본 동작이라서 컨테이너에 못 넣는 스마트 포인터가 되겠다. 이게 이슈가 많이 돼서 이름도 ...

#review Google C++ Style Guide

1 minute read

사실 style guide가 나와서 말인데, 나는 조엘이 엄선한 소프트웨어 블로그 베스트 29선에서 본 ’스타일은 언어 요소다 - 켄 아놀드’글을 완전 지지한다. 많은 언어가 무시하는 공백 문자를 언어 요소로 넣자고 주장하는데, 지겨운 스타일 논쟁을 완전 없앨 수 있고 파싱이 쉬워...

#cpp #idioms Nifty Counter

1 minute read

목적은 Construct On First Use와 같다. 즉, global static object, global object 초기화 순서가 명확하지 않아서 발생하는 static initialization order fiasco를 막기 위한 idiom이다.

#term memoization, 메모이제이션

less than 1 minute read

계산한 값을 메모리에 저장해서 여러 번 같은 값 계산을 피하는 최적화 기법을 메모이제이션(memoization)이라고 한다. 실행 속도와 공간을 바꾸는 가장 기초적인 기법이기도 하다. 실수로 메모리제이션이라고 하기도 하는데 메모이제이션이 정확한 용어이다.

비디오 메모리 구하기 (DirectDraw, WMI)

2 minute read

PerfHUD나 DirectX Caps Viewer로 볼 수 있지만, 비디오 메모리 사용량을 렌더링하는 게 그리 힘든 일이 아니라 보통 이 정도는 렌더링해준다. 그건 좋은데 문제는 DirectX9 인터페이스로는 사용 가능한 전용 비디오 메모리를 알 수 없는 거다. 그래서 보통 Di...

#cpp Pimpl 관용구

2 minute read

컴파일할때 파일 간의 디펜던시를 줄이려고 사용하는 관용구(idiom)이다. public 접근 권한으로 정의된 함수가 변경될 때, 이 파일을 include 하는 녀석들이 다시 컴파일되는 건 당연한데, 다른 녀석들이 못 보는 private 접근 권한의 멤버 함수나 변수가 변경될 때도 ...

#stl istreambuf_iterator, ostreambuf_iterator : 서식화(formatted)하지 않는 입출력

less than 1 minute read

사용자 입력은 서식화된 입력(공백 문자 무시 등)이 필요하지만 파일 입출력에서는 서식화된(formatted) 입력이 필요 없는 경우가 대부분이다. 서식화된 입출력은 쌩 입출력보다 처리를 하는 게 많아서 속도가 느린 게 당연하다. 공백 문자 무시 옵션을 켜도 되지만 이런 서식화 입출...

#stl 상등 관계(equality)와 동등 관계(equivalence)의 차이 파악

2 minute read

두 값이 같은가를 판단하는 두 가지 방법이 존재한다. 첫 번째 방법은 두 값이 같은지를 바로 판단하는 것이고 두 번째 방법은 작지도 않고 크지도 않다는 것을 확인해서 두 값이 같은지를 판단한다. 이 첫 번째 방법은 operator== 로 판단하는데, A == B 이면 두 값이 같다...

#stl VS 2005의 std::string 구현(딩컴웨어 STL)

1 minute read

Effective STL 항목 15에서 string이 여러 가지 방식으로 구현되어 있다는 걸 상기시키고 있다. 구현 방법까지 표준 문서에 정의하지 않았기 때문에 당연한 결과이기도 하다. VS 2005에 포함된 딩컴웨어 STL은 어떻게 구현되었나 궁금해서 찾아봤다.

#stl copy_if 알고리즘 구현

1 minute read

STL 알고리즘 이름의 _if 접미사는 술어 함수(predicate)를 인자로 받는 것을 의미한다. 이 술어 함수를 알고리즘 안에서 호출해서 돌려받은 반환 값에 따라 동작을 수행할지 말지를 결정하게 된다. 예를 들면 count_if()는 술어 함수 호출결과가 true인 원소들의 개...

#stl 정렬 알고리즘(sort, stable_sort, partial_sort, nth_element)

3 minute read

컨테이너 정렬이 필요할 때, sort를 사용하고 순서가 유지돼야 하면 stable_sort를 사용했다. partial_sort와 nth_element는 한 번도 사용해본 적이 없는데, 일부분만 정렬이 필요하거나 몇 번째 원소를 뽑을 때 유용하게 사용할 수 있을 것 같다. 예를 들면...

#stl accumulate - 수치 알고리즘

1 minute read

for_each 알고리즘으로 대체 구현이 가능한 거라 한 번도 사용해보지 않은 알고리즘이다. Effective STL 37번 항목에서 accumulate알고리즘에 대한 언급이 나오는데, 으.. 읽고 보니 좋은 걸 안 쓰고 있었구나.

#term predicate, 술어

1 minute read

predicate 발음듣기 [미] [prédikət] 【문법】 술부, 술어 (cf. SUBJECT) 【컴퓨터】 술어 구글 사전

#visualstudio - _noop 키워드

1 minute read

NOOP 혹은 NOP 로 사용하는데, NO OPerator의 줄임말이다. 말 그대로 아무런 연산을 하지 않는 명령어를 뜻한다. 표준이 아니라 VC++ 키워드라는 게 걸리는데, 다른 컴파일러에서 동작하도록 쉽게 수정할 수 있으니 포팅 걱정은 안 하고 VC++에서 편하게 써도 된다. ...

EASTL - 할당자(allocator)

2 minute read

EASTL - Electronic Arts Standard Template Library은 거대 게임 개발사인 EA가 C++ 표준 라이브러리인 STL을 게임 개발에 맞게 수정한 라이브러리이다.

Unicode - (3) UTF-8 in Windows

3 minute read

UTF-8 문자의 크기는 그림과 같이 1-byte에서 4-byte까지 가질 수 있다. 가장 큰 특징인 기존 US-ASCII와 호환성을 위해 이런 가변 길이 인코딩을 선택했는데, 덕분에 영어는 1-byte로 표현할 수 있지만 한글은 3-byte가 필요하다. 양키들이 쓰는 US-ASC...

Unicode - (2) UTF-16(wide character) in Windows

1 minute read

Windows에서 Unicode 인코딩은 UTF-16을 기본으로 사용하고 Unicode라고 부르기보다는 wide character라고 부른다. 그래서 Windows에서 wide character는 UTF-16 character라고 생각하면 된다. wide character 자료형인...

#define D3D_DEBUG_INFO

1 minute read

Debugging시 Watch창으로 내부 변수들을 볼 수 있다. 위의 그림은 IDirect3DDevice9를 Watch창으로 본 화면. 어휴! 역시 DirectX 새로운 SDK 나오면 무조건 Document부터 다 훑어봐야 한다. 발견한 지 일주일이 안 됐지만 그전부터 사용 가능한...

#quiz 몬티 홀 문제(Monty Hall problem)

2 minute read

Suppose you’re on a game show, and you’re given the choice of threedoors: Behind one door is a car; behind the others, goats. You pick adoor, say No. 1, a...

Back to Top ↑

testing

Stateful Property-Based Testing 병렬 테스트

4 minute read

속성 기반 테스트 프레임워크인 PropEr, PropCheck를 사용하면 ’Cache 예제코드를 테스트하며 맛보는 Stateful Property-Based Testing’ 예제를 손쉽게 병렬 테스트로 바꿀 수 있다.

예제로 보는 Property-Based Testing (feat. Kata09: Back to the Checkout)

10 minute read

’속성 기반 테스트(Property-based Testing)와 속성 정의에 도움을 주는 네 가지 방법’ 글에서 속성 기반 테스트를 간략히 살펴봤다. 대략 감은 잡겠지만 속성 기반 테스트를 짜라고 하면 막막하다. 이럴 때는 좋은 예제가 도움을 줄 수 있다.

단위 테스트 (블라디미르 코리코프, 2021) 독후감

3 minute read

단위 테스트(Unit Testing)에 관한 책을 한 권만 꼽는다면 이 책을 꼽고 싶다. 늦게 알아서 억울한 책이다. 예제가 C#이지만 자신이 사용하는 언어와 상관없이 읽으면 도움이 되는 내용들로 가득하다.

단위 테스트가 의미 있는 코드 유형은 뭘까? 통합 테스트는?

3 minute read

’단위 테스트 (블라디미르 코리코프, 2021)’ 책의 ’7장 가치 있는 단위 테스트를 위한 리팩터링’을 보고 정리한 내용이다. 모든 코드를 테스트할 수는 없다. 그래서 중요하고 의미 있는 영역부터 테스트를 짜야 한다. 중요한 영역부터 시작해 덜 중요한 영역까지 테스트 커버리지를 ...

Testing Elixir (Andrea Leopardi, Jeffrey Matthias, 2021) 독후감

5 minute read

구성이 마음에 들어서 책을 읽었다. otp, ecto schemas, ecto queries, phoenix를 테스트하는 방법이 목차에 담겨있다. 언어만 elixir로 바꾼 일반 테스팅 책이 아니라는 기대가 있었다. 하지만 막 감탄하면서 읽지는 않았다. 주제가 달라진다고 테스트하는...

#testing #bash 간단한 assert

less than 1 minute read

팀 패스워드 관리 프로그램 tpass 개발하면서 간단하게 만들어서 썼다. 독립된 환경을 가진 유저 2 명으로 테스트를 해야 했기 때문에 테스트 환경에 공을 들였다. 독립된 환경을 구축하는 데 docker를 사용했다. 스크립트 언어로 bash를 사용했다.

xUnit 테스트 패턴 (제라드 메스자로스, 2010) 독후감

1 minute read

테스트 코드도 계속 관리해야 하는 코드다. 릴리즈 빌드에 포함이 안 된다고 해서 악취가 진동하게 놔뒀다가는 하나만 고쳐도 엄청나게 많은 테스트 코드가 깨지는 등 감당을 못하게 된다. 좋자고 하는 건데, 테스트 코드가 오히려 병목이 될 수도 있다. ’Invoice를 테스트하려니깐 C...

Working Effectively With Legacy Code (Michael Feathers, 2004) 독후감

1 minute read

TDD(Test-Driven Development, 테스트 주도 개발)를 처음 접했을 때, 개발 방법이 충격적이었다. 테스트를 먼저 추가하면서 시작되는 TDD의 리듬을 타면 테스트가 바탕이 된 매우 견고한 코드로 갈 수 있을 것 같다. 하지만 낯선 개발 방법에 적용하는 시간과 노력...

Back to Top ↑

patterns

프로그래머의 길, 멘토에게 묻다 (데이브 후버, 애디웨일 오시나이, 2010) 독후감

1 minute read

책 제목 보고 이 책 안 사려고 했다. 책 제목이 마음에 안 든다. 아꿈사 스터디 책으로 선정돼서 어쩔 수 없이 사긴 했지만 그닥 내키진 않았다. 예전에 읽었던 ’사랑하지 않으면 떠나라’와 비슷해 보였고 어디서 긁어모은 멋진 말들로 도배된 책에 질려 있었는데, 제목을 보니 딱 멋진...

xUnit 테스트 패턴 (제라드 메스자로스, 2010) 독후감

1 minute read

테스트 코드도 계속 관리해야 하는 코드다. 릴리즈 빌드에 포함이 안 된다고 해서 악취가 진동하게 놔뒀다가는 하나만 고쳐도 엄청나게 많은 테스트 코드가 깨지는 등 감당을 못하게 된다. 좋자고 하는 건데, 테스트 코드가 오히려 병목이 될 수도 있다. ’Invoice를 테스트하려니깐 C...

Design Patterns (Erich Gamma 외 2인, 1994) 독후감

less than 1 minute read

원조. 뭔 말이 더 필요할까? 읽기가 딱딱해서 그렇지 사실 여기 있는 내용을 이해하기 쉽게 풀어놓은 책이 태반이다. 결국 그 말은 이 책에 있는 내용 이상을 쓴 책이 잘 없다는 뜻. 다른 책을 먼저 읽다가 “아~ 이런 시각을 가질 수 있구나!”라고 생각한 항목이 몇 개 있었는데, ...

#review 디자인은 죽었는가? - 마틴 파울러(Is Design Dead? - Martin Fowler)

1 minute read

종종 어떤 XPers들은 많은 디자인 활동과 디자인 패턴을 쓸모없다고 한다. 또 어떤 XP 비방자들은 XP를 디자인도 없는 짜보고 고치는(code and fix) 개발방식으로 회귀라고 말한다. 마틴 파울러(Martin Fowler)가 “어휴 둘 다 오해하고 자빠졌네.”라며 교통정리...

Head First Design Patterns (에릭 프리먼 외, 2005) 독후감

less than 1 minute read

“IT 서적이 이런식으로 쓰일 수도 있구나!” 처음 한 챕터를 읽고 난 뒤에 충격을 받았다. 기술서적으로는 항상 딱딱한 구성의 책만 보아왔고, 또 당연히 그렇다고 생각했는데 말이다. 이런 구성과 설명이 내 뇌를 어떻게 자극하는지는 모르지만, 분명한 건 이런 구성이 나한테는 꽤 잘 ...

Back to Top ↑

gdc13

#gdc13 #review Loading Based on Imperfect Data

less than 1 minute read

ref graph를 활용한 load list 구축. #gdc12 Data is a Four-Letter Word 참고. 개발할 땐 loose loading, 릴리즈에선 loading list를 만들어서 사용.

Back to Top ↑

stl

#cpp #tr1 shared_ptr, weak_ptr

1 minute read

STL에는 auto_ptr라는 스마트 포인터가 있지만 할당하면 소멸식 복사(destructive copy)로 자원에 대한 소유권을 넘겨주는 동작을 한다. STL 알고리즘은 값에 의한 복사가 기본 동작이라서 컨테이너에 못 넣는 스마트 포인터가 되겠다. 이게 이슈가 많이 돼서 이름도 ...

#stl istreambuf_iterator, ostreambuf_iterator : 서식화(formatted)하지 않는 입출력

less than 1 minute read

사용자 입력은 서식화된 입력(공백 문자 무시 등)이 필요하지만 파일 입출력에서는 서식화된(formatted) 입력이 필요 없는 경우가 대부분이다. 서식화된 입출력은 쌩 입출력보다 처리를 하는 게 많아서 속도가 느린 게 당연하다. 공백 문자 무시 옵션을 켜도 되지만 이런 서식화 입출...

#stl 상등 관계(equality)와 동등 관계(equivalence)의 차이 파악

2 minute read

두 값이 같은가를 판단하는 두 가지 방법이 존재한다. 첫 번째 방법은 두 값이 같은지를 바로 판단하는 것이고 두 번째 방법은 작지도 않고 크지도 않다는 것을 확인해서 두 값이 같은지를 판단한다. 이 첫 번째 방법은 operator== 로 판단하는데, A == B 이면 두 값이 같다...

#stl VS 2005의 std::string 구현(딩컴웨어 STL)

1 minute read

Effective STL 항목 15에서 string이 여러 가지 방식으로 구현되어 있다는 걸 상기시키고 있다. 구현 방법까지 표준 문서에 정의하지 않았기 때문에 당연한 결과이기도 하다. VS 2005에 포함된 딩컴웨어 STL은 어떻게 구현되었나 궁금해서 찾아봤다.

#stl copy_if 알고리즘 구현

1 minute read

STL 알고리즘 이름의 _if 접미사는 술어 함수(predicate)를 인자로 받는 것을 의미한다. 이 술어 함수를 알고리즘 안에서 호출해서 돌려받은 반환 값에 따라 동작을 수행할지 말지를 결정하게 된다. 예를 들면 count_if()는 술어 함수 호출결과가 true인 원소들의 개...

#stl 정렬 알고리즘(sort, stable_sort, partial_sort, nth_element)

3 minute read

컨테이너 정렬이 필요할 때, sort를 사용하고 순서가 유지돼야 하면 stable_sort를 사용했다. partial_sort와 nth_element는 한 번도 사용해본 적이 없는데, 일부분만 정렬이 필요하거나 몇 번째 원소를 뽑을 때 유용하게 사용할 수 있을 것 같다. 예를 들면...

#stl accumulate - 수치 알고리즘

1 minute read

for_each 알고리즘으로 대체 구현이 가능한 거라 한 번도 사용해보지 않은 알고리즘이다. Effective STL 37번 항목에서 accumulate알고리즘에 대한 언급이 나오는데, 으.. 읽고 보니 좋은 걸 안 쓰고 있었구나.

#term predicate, 술어

1 minute read

predicate 발음듣기 [미] [prédikət] 【문법】 술부, 술어 (cf. SUBJECT) 【컴퓨터】 술어 구글 사전

EASTL - 할당자(allocator)

2 minute read

EASTL - Electronic Arts Standard Template Library은 거대 게임 개발사인 EA가 C++ 표준 라이브러리인 STL을 게임 개발에 맞게 수정한 라이브러리이다.

Back to Top ↑

pragmatic

macOS 화면 공유(feat. Tailscale)

1 minute read

맥 미니(Mac mini M2, 2023)를 꺼본 적이 없다. 매직 트랙패드(Magic Trackpad) 2를 손가락으로 간지럽히면 언제든 깨어난다. 팬이 있는지도 모르겠다. 이게 다 조용해서 그렇다.

마음에 드는 #gitlab todos

less than 1 minute read

참 애정하는 기능이다. Todo를 모아서 보여준다. 나를 맨션(@mention) 하거나 담당자로 지정하면 자동으로 Todo 항목이 된다. 물론 이슈에 있는 Add Todo 버튼을 눌러 직접 추가할 수도 있다.

실용주의 사고와 학습 (앤디 헌트, 2010) 독후감

3 minute read

많은 HR은 아직 잘 모르고 있지만 사실 자바, 루비, .NET, 혹은 아이폰 SDK를 아는지 모르는지는 별로 중요하지 않습니다. 배워야 할 신기술이나 예전 기술의 새 버전은 끊임없이 등장합니다. 기술 자체는 별로 중요하지 않습니다. 중요한 것은 지속적으로 배우는 것입니다.

실용주의 프로그래머 (데이비드 토머스, 앤드류 헌트, 2005) 독후감

1 minute read

실용주의 프로그래머는 무엇이 다른가? 우리는 태도와 스타일 그리고 문제와 해법에 접근하는 철학에 차이가 있다고 생각한다. 그들은 직면한 문제 너머를 생각하며, 문제를 항상 더 큰 맥락에 놓으려 노력하고, 항상 더 큰 그림을 보려 한다. 어쨌건 이런 더 큰 맥락 없이 도대체 어...

CapsLock! 자네에게 어울리는 자리는 그곳이 아닐세

less than 1 minute read

사실 이제까지 아무런 불평불만 없이 잘 써왔다. Lisp를 틈틈이 배우고 있는데, 가장 잘 어울리는 환경이 Emacs라서 설치하고 도움말을 찾아봤다. 그런데 얼씨구! 키 입력에 왜 이리 컨트롤 키(Ctrl)가 많은지 모르겠다. 같이 누르기가 너무 불편하다. 단축키를 배정한 사람이 ...

큐브 - 머리가 안 돌아가면 이거라도 돌려야지

less than 1 minute read

머리로 하는 직업인데, 머리가 안 돌아가면 정말 막막하다. XP의 아버지 켄트 벡(Kent Beck)은 머리가 안 돌아갈 때 밖에 나가서 톱질한다고 한다. 육체적인 움직임이 머리를 돌리는데 도움을 준다는 얘기인데, 여기저기 찾아볼 필요없이 내 경험만 들추어봐도 이런 경험을 한 경우...

Back to Top ↑

git

#git merge 커밋 리버트(revert)

2 minute read

merge 한 커밋(commit)이 잘못됐다. push 해버려서 amend는 불가능. amend 가능해도 못하겠네. 꽤 복잡한 문제라서 revert를 하고 찬찬히 봐야겠다.

#git object model을 보니 clojure persistent vector가 생각났다

less than 1 minute read

이런 persistent vector가 있다. 왜 persistent인가 하면 vector가 생성된 후, 변경할 수 없기 때문이다. 즉, 4를 5로 바꾸고 싶다면 5를 생성해 간선(edge)으로 연결하고 4를 연결하는 간선을 제거한 새로운 vector를 생성해야 한다.

Back to Top ↑

github

프로젝트 템플릿을 모아두는 github 저장소를 만들었다

less than 1 minute read

최근 elixir 프로젝트를 몇 개 진행하며 프로젝트 템플릿을 모아두는 github 저장소를 만들어야겠다고 생각했다. 매번 필요한 스크립트를 이전 프로젝트 디렉터리를 뒤져서 복사해서 사용했기 때문이다. 그냥 가져다 쓰는 경우도 있지만 수정하거나 추가하는 경우도 있다. 갱신한 스크립...

Back to Top ↑

game-dev

#graphics The Unique Lighting of Mirror

less than 1 minute read

에디터에서 커브(curve)로 색 보정(color correction)을 할 수 있다. R, G, B, 휘도(luminance) 커브를 지원한다. 결과를 실시간으로 확인할 수 있다. 이게 가장 큰 장점. 인터페이스도 아티스트에게 친숙한 커브다.

Game Engine Architecture (Jason Gregory, 2009) 독후감

less than 1 minute read

게임 엔진에 관한 모든 부분을 다룬다. foundation layer부터 rendering, animation, physics, … 보면서 Real-time Rendering과 Code Complete가 생각났다. 주제는 다르지만, 책 성격이 비슷하기 때문이다. 타겟팅 공격보다는 ...

위대한 게임의 탄생 (Michael Thornton Wyman, 2011) 독후감

4 minute read

살아 있는 교훈이 담긴 게임 개발 포스트모템 모음집. 포스트모템이라도 잘 모르는 게임이면 재미가 덜하다. 구현한 콘텐츠를 예로 들어도 무슨 얘기인지 알아먹기도 어렵고. 하지만 이 책은 그런 걱정 없다. 진짜 유명하고 성공한 게임 이야기가 담겨 있으니. WoW, HL2, Unchar...

Back to Top ↑

clojure

#git object model을 보니 clojure persistent vector가 생각났다

less than 1 minute read

이런 persistent vector가 있다. 왜 persistent인가 하면 vector가 생성된 후, 변경할 수 없기 때문이다. 즉, 4를 5로 바꾸고 싶다면 5를 생성해 간선(edge)으로 연결하고 4를 연결하는 간선을 제거한 새로운 vector를 생성해야 한다.

Back to Top ↑

ux

#ux 초보자에게 너무 편한 구글 크롬 빈 페이지 UI

less than 1 minute read

처음 봤을 때, 그냥 괜찮은 디자인처럼 보였다. 나는 Ctrl+L 로 주소창을 열고 URL 주소를 타이핑해서 사이트를 찾아가기 때문에, 저런 인터페이스는 그냥 예쁜 인터페이스에 불과했다. 키보드에 얹은 손을 마우스로 다시 옮기기도 귀찮아서 키보드로 할 수 있는 건 웬만하면 다 키보...

Back to Top ↑

graphics

#graphics The Unique Lighting of Mirror

less than 1 minute read

에디터에서 커브(curve)로 색 보정(color correction)을 할 수 있다. R, G, B, 휘도(luminance) 커브를 지원한다. 결과를 실시간으로 확인할 수 있다. 이게 가장 큰 장점. 인터페이스도 아티스트에게 친숙한 커브다.

Real-Time Rendering (토마스 아케나인 몰러, 2003) 독후감

less than 1 minute read

이 책은 사이트맵과 같다. 실시간 렌더링에 관한 지식을 참 꼼꼼하게도 군데군데 구석구석 잘 퍼트려 놨는데, 그걸 잘 정리해주기 때문이다. 물론 하나하나 자세하게 설명하진 않는다. 그래 맞아. 사이트맵이 그러면 안 돼. 대신 핵심을 이해할 수 있게 설명한다. 그래서 그런지 설명을 좀...

#review 그림자 생성 - 니시카와 젠지

1 minute read

간략한 shadow volume 소개와 여러 shadow mapping 알고리즘을 소개한 아티클이다. 프로그래머뿐만 아니라 게임에 관심이 있는 사람들도 읽을 수 있도록 쉽게 써서 그림자를 구현하기 전에 살짝 읽기에 좋은 글이다.

Back to Top ↑

gdc11

#gdc11 #review Anti-aliasing from a Different Perspective

less than 1 minute read

blur를 먼저하고 edge를 찾고 마스킹. 여기서 long, short edge를 구분하고 blur 커널 크기를 다르게 적용해서 original layer에 blend한다. 사진으로 보니 MLAA(morphological anti-aliasing)와 비슷한 품질이 나오고 더 빠르...

#gdc11 #review 늦은 GDC2011 간단 정리

1 minute read

지금은 2012년. 그리고 올해 GDC 행사가 끝난 시점. 작년부터 틈틈이 정리하긴 했지만 질질 끌어오던 GDC2011 정리를 마무리 짓고 싶었다. 그래서 서둘러 마무리. 아직 GDC 2012 볼트가 안 열렸으니. 뭐 오케이.

Back to Top ↑

gdc12

#gdc12 #review Solving Rigid Body Contacts

less than 1 minute read

contact solve를 이렇게 설명할 수 있구나. NDC 12에서 발표한 게임 물리 엔진의 내부 동작 원리 이해 발표보다 훨씬 세련되게 설명한다. 한 수 배웠다. 설명 방법이 돋보였던 발표.

#gdc12 #review GDC2012 간단 정리

1 minute read

GDC2012를 간단히 정리했다. 발표하는 분야가 넓어. 이거 다 이해하기는 무리. 잘 모르는 분야는 맛만 본다는 마음가짐으로 간단히 봤다.

Back to Top ↑

asset

#gdc13 #review Loading Based on Imperfect Data

less than 1 minute read

ref graph를 활용한 load list 구축. #gdc12 Data is a Four-Letter Word 참고. 개발할 땐 loose loading, 릴리즈에선 loading list를 만들어서 사용.

#gdc10 #review The Asset pipeline for Just Cause 2: Lessons learned

less than 1 minute read

에셋(asset) 버전 컨트롤에 어떤 포맷을 해야 할까? 게임에서 빠르게 읽을 수 있게 최적화한 game ready data? 만약 이 포맷으로 저장한다면 maya와 같은 저작(authoring) 툴에서 export 하면 이전 변경 내용이 모두 없어진다. 특히 editor에서 ga...

Back to Top ↑

ndc

#ndckr 들은 발표 간단 리뷰 - 2017

2 minute read

관심사가 한쪽으로 몰려있다. 이번엔 가능하면 관심사에서 벗어나는 주제를 다룬 발표를 선택했다. ndc 아니면 언제 듣겠나 싶어서.

#ndc_14 #review 모에론 - 김용하 (스마일게이트)

less than 1 minute read

모에. 뭔지 모르지만 익숙하다. 왜냐면 내 첫 게임 프로젝트에서 많이 쓰였기 때문이다. 모델 뷰어는 MoeView였고 월드 에디터는 MoeTanz였다. 뭔지는 모르겠지만 일반적이지 않다는 건 느꼈다. 아. 다행히 클래스 이름 접두어는 Moe가 아니었… 아니, 있었던 거 같기도 하고.

Back to Top ↑

imo

#jekyll 워드프레스에서 지킬로 본진 이동

1 minute read

본진 programming notes 블로그 툴을 wordpress에서 jekyll로 바꿨다. 덩치가 있어 핫 하다고 무턱대고 바꾸기가 망설여진다. 그래서 개인 프로젝트 개발 일기 블로그 툴로 사용해봤다. 쓸만한가? 만족. 전진기지 안정화에 성공했으니 이제 본진에 신경 쓸 차례다.

#ndc_14 #review 모에론 - 김용하 (스마일게이트)

less than 1 minute read

모에. 뭔지 모르지만 익숙하다. 왜냐면 내 첫 게임 프로젝트에서 많이 쓰였기 때문이다. 모델 뷰어는 MoeView였고 월드 에디터는 MoeTanz였다. 뭔지는 모르겠지만 일반적이지 않다는 건 느꼈다. 아. 다행히 클래스 이름 접두어는 Moe가 아니었… 아니, 있었던 거 같기도 하고.

#yahoopipes 로 여러 #rss 피드 대통합

less than 1 minute read

yahoo pipes를 사용하면 된다. 편하네. 예전에 알았던 야후 파이프를 이제야 써먹어 본다. 복잡하지 않으면 그래프 기반 다이어그램처럼 직관적인 게 따로 없다. 내가 만든 파이프.

Back to Top ↑

naming

소스 코드 읽기: prometheus.erl, prometheus.ex

5 minute read

deadtrickster/prometheus.erl은 모니터링 시스템인 prometheus.io의 erlang 클라이언트다. 각종 메트릭(metric)을 프로메테우스가 파싱할 수 있는 포맷으로 텍스트를 만든다. deadtrickster/prometheus.ex는 prometheus...

Back to Top ↑

naughty-dog

#bts #review 언차티드 4(Uncharted) 메이킹 영상

less than 1 minute read

언차티드 1을 만들기 시작했을 때는 스튜디오에 젊은 사람들이 많았습니다. 대다수가 이 업계에서 일을 시작한 것이 20대 초반 무렵이었습니다. 시작 무렵에 주인공과 인물들 모두 20대 초반의 나이였어요. [.] 게임을 비롯해 예술 분야가 반영하는 것은 창작자의 내면이...

#gdc10 #review Uncharted 2 Art Direction

less than 1 minute read

윤곽을 잡는 방법이 신기했고 overdraw, 자연스러운 길 유도, … “이런 것까지 생각하는구나.” 라며 감탄.

#bts 언차티드 2(Uncharted) 메이킹 영상

1 minute read

저희는 관리와 회의, 장문의 전자우편을 별로 좋아하지 않습니다. 게임에서 뭔가 고치고 싶으면 허락을 받는 게 아니라 일단 멋지게 고쳐놓고 보는 거죠.

Back to Top ↑

game-design

Back to Top ↑

visual-studio

#visualstudio - _noop 키워드

1 minute read

NOOP 혹은 NOP 로 사용하는데, NO OPerator의 줄임말이다. 말 그대로 아무런 연산을 하지 않는 명령어를 뜻한다. 표준이 아니라 VC++ 키워드라는 게 걸리는데, 다른 컴파일러에서 동작하도록 쉽게 수정할 수 있으니 포팅 걱정은 안 하고 VC++에서 편하게 써도 된다. ...

Back to Top ↑

shaderx

Back to Top ↑

math

빈 리스트에 대한 all? 함수의 리턴 값은? - 공허참(vacuous truth)

3 minute read

Enum.all?/1 함수를 사용한 함수 테스트할 때였던 걸로 기억한다. 비어 있는 리스트를 넣어서 테스트했을 때, 기대하지 않은 값이 나와서 의아했다. 비어 있는 리스트를 인자로 넘겼을 때, false 값이 나올 것으로 기대했다. 하지만 true 로 나오는 것이었다. Enum.a...

이산수학 (Judith L. Gersting, 2004) 독후감

less than 1 minute read

정말 오랜만에 보는 이산수학. 책을 보는 내내 연습문제 숙제로 시달리던 대학교 생각이 났다. 이 책도 더럽게 연습문제 많더라. 처음엔 연습문제와 같이 있는 프로그래밍 문제도 같이 풀려고 했는데, 보는데 조급해서 풀어보진 않았다. 예제를 열심히 보는 것에 만족.

게임 & 인터랙티브 애플리케이션을 위한 수학 (James M. Van Verth, 2008) 독후감

less than 1 minute read

간혹 수학이 발목을 잡을 때가 있어서 수학 책을 한 권 봐야겠다 싶었던 차에 눈에 띈 책이다. 선형 대수부터 셰이딩, 조명, 래스터화, 강체 역학까지 게임에 필요한 기초 수학은 다 다루고 있다. 자세히 설명을 안 하고 넘어가는 게 간혹 있지만 대부분 충실히 설명하고 있다. 다행히 ...

Back to Top ↑

gdc10

#gdc10 #review Uncharted 2 Art Direction

less than 1 minute read

윤곽을 잡는 방법이 신기했고 overdraw, 자연스러운 길 유도, … “이런 것까지 생각하는구나.” 라며 감탄.

#gdc10 #review The Asset pipeline for Just Cause 2: Lessons learned

less than 1 minute read

에셋(asset) 버전 컨트롤에 어떤 포맷을 해야 할까? 게임에서 빠르게 읽을 수 있게 최적화한 game ready data? 만약 이 포맷으로 저장한다면 maya와 같은 저작(authoring) 툴에서 export 하면 이전 변경 내용이 모두 없어진다. 특히 editor에서 ga...

Back to Top ↑

jekyll

pass, expect 프로그램과 함께한 #jekyll 블로그 deploy 스크립트

2 minute read

static 블로깅 툴인 jekyll은 직접 빌드를 해야 한다. 빌드 결과물인 html, css 파일을 웹호스팅 서버로 배포한다. 이걸 수동으로 하고 있었다. script/build 스크립트로 빌드하고 filezilla로 업로드하고 있다. 언젠가는 aws로 옮기고 push hook...

#jekyll 워드프레스에서 지킬로 본진 이동

1 minute read

본진 programming notes 블로그 툴을 wordpress에서 jekyll로 바꿨다. 덩치가 있어 핫 하다고 무턱대고 바꾸기가 망설여진다. 그래서 개인 프로젝트 개발 일기 블로그 툴로 사용해봤다. 쓸만한가? 만족. 전진기지 안정화에 성공했으니 이제 본진에 신경 쓸 차례다.

Back to Top ↑

uncharted

#bts #review 언차티드 4(Uncharted) 메이킹 영상

less than 1 minute read

언차티드 1을 만들기 시작했을 때는 스튜디오에 젊은 사람들이 많았습니다. 대다수가 이 업계에서 일을 시작한 것이 20대 초반 무렵이었습니다. 시작 무렵에 주인공과 인물들 모두 20대 초반의 나이였어요. [.] 게임을 비롯해 예술 분야가 반영하는 것은 창작자의 내면이...

#gdc10 #review Uncharted 2 Art Direction

less than 1 minute read

윤곽을 잡는 방법이 신기했고 overdraw, 자연스러운 길 유도, … “이런 것까지 생각하는구나.” 라며 감탄.

#bts 언차티드 2(Uncharted) 메이킹 영상

1 minute read

저희는 관리와 회의, 장문의 전자우편을 별로 좋아하지 않습니다. 게임에서 뭔가 고치고 싶으면 허락을 받는 게 아니라 일단 멋지게 고쳐놓고 보는 거죠.

Back to Top ↑

postmortem

위대한 게임의 탄생 (Michael Thornton Wyman, 2011) 독후감

4 minute read

살아 있는 교훈이 담긴 게임 개발 포스트모템 모음집. 포스트모템이라도 잘 모르는 게임이면 재미가 덜하다. 구현한 콘텐츠를 예로 들어도 무슨 얘기인지 알아먹기도 어렵고. 하지만 이 책은 그런 걱정 없다. 진짜 유명하고 성공한 게임 이야기가 담겨 있으니. WoW, HL2, Unchar...

Back to Top ↑

bot

강렬했던 텔레그램 BotFather와의 첫 만남

less than 1 minute read

BotFather. 크. 네이밍 보소. godfather. 텔레그램 봇을 만드려면 반드시 만나야 하는 봇이다. 처음 텔레그램 봇을 만들 때, BotFather와의 만남은 강렬했다. 만들 봇 이름, 설명 등을 적는 웹페이지를 기대했다. 하지만 텔레그램은 봇을 만들 때, 모범 사례(b...

#elixirlang 언어로 #telegram 봇 만들기

1 minute read

텔레그램은 훌륭한 메신저이자 클라이언트다. 훌륭한 클라이언트가 된 건 bot api 덕분이다. 간단한 iOS 앱을 만들려고 했는데, 텍스트로 제어가 충분하다고 생각하니 텔레그램 봇으로 만들면 되겠단 생각이 들었다. 혼자 쓸 거라 만들어 본 슬랙(slack) 봇은 과하다.

#elixirlang 언어로 만든 #slack 봇을 #heroku 서비스에 배포하기

3 minute read

다음 사이드 프로젝트는 slack 봇(bot)이다. 관리 시간을 줄일 아이디어가 떠올랐다. 언어는 요즘 쓰고 있는 elixir 언어로 결정했다. 처음부터 만들어야 하는 거 아니야? 노노. 이쪽 생태계를 무시하면 안 된다. 1986년에 발표된 32살 erlang 언어가 뒤를 든든하게...

Back to Top ↑

management

몽키 비즈니스 (윌리엄 언컨 3세, 2001) 독후감

4 minute read

매니저(manager)는 개인 기여자(Individual Contributor, IC, 팀원) 여러 명을 관리해야 한다. 일 대 다 관계이다. 그 말인즉슨 항상 병목이 될 수 있다는 걸 명심하고 있어야 한다. 여유 좀 부려서 팀원이 내 결정을 기다리게 했다가는 삽시간에 내가 병목이...

HARD CODE (에릭 브레히너, 2009) 독후감

2 minute read

마이크로 소프트(MS)가 어떻게 프로젝트, 사람을 관리하는지 살짝 엿볼 수 있는 책이다. 어떤 책인고 하니 MS에서 개발 혁신 부서장을 맡은 에릭 브레히너가 사내 웹진에 올린 글들을 묶어 놓은 책이다. 이 사람도 미지근하게 글을 안 쓴다. 한 마디로 깔건 확실하게 까는 스타일이지.

데드라인 (톰 디마르코, 2004) 독후감

less than 1 minute read

“강사님은 지금 사람 선별법, 작업 할당, 동기 부여, 팀 구성 같이 관리에서 가장 필수적인 네 가지 기본사항은 전혀 다루지도 않으면서 관리의 자연과학적인 부분을 우리에게 가르치시겠다는 건가요?” “강사님은 그 네 가지를 빠뜨린 과정을 가지고 ‘프로젝트 관리’라고 부르고...

똑똑하고 100배 일 잘하는 개발자 모시기 (조엘 스폴스키, 2007) 독후감

1 minute read

조엘 온 소프트웨어를 보고 느낀 것이 많아서 새로운 책이 나왔다길래 닥치고 구입했다. 조엘 온 소프트웨어를 읽었을 때의 즐거움을 다시 느껴보고 싶었고 글 제목만 얼핏 보면 개발자를 뽑는 사람에게만 도움이 될 것 같지만 개발자로서 어떤 개발자를 모시고 싶어하는지 아는 것도 무척이나 ...

Back to Top ↑

unicode

Unicode - (3) UTF-8 in Windows

3 minute read

UTF-8 문자의 크기는 그림과 같이 1-byte에서 4-byte까지 가질 수 있다. 가장 큰 특징인 기존 US-ASCII와 호환성을 위해 이런 가변 길이 인코딩을 선택했는데, 덕분에 영어는 1-byte로 표현할 수 있지만 한글은 3-byte가 필요하다. 양키들이 쓰는 US-ASC...

Unicode - (2) UTF-16(wide character) in Windows

1 minute read

Windows에서 Unicode 인코딩은 UTF-16을 기본으로 사용하고 Unicode라고 부르기보다는 wide character라고 부른다. 그래서 Windows에서 wide character는 UTF-16 character라고 생각하면 된다. wide character 자료형인...

Unicode - (1) 개념

1 minute read

모든 문자에 고윳값을 할당하는 테이블을 만드는 프로젝트가 유니코드 컨소시엄과 ISO 10646에 의해 시작됐다. 문제는 하나의 단체가 아니라 두 단체라는 거. 이거 다 편하자고 하는 일인데, 다른 두 개의 테이블이 만드는 것은 모든 사람이 원하지 않는 일이라는 것을 알고 같은 문자...

Back to Top ↑

windows

이메일은 언제 확인하나? / 2018-06

less than 1 minute read

모든 이메일에 데스크톱 알림을 띄우고 이메일이 오는 족족 확인해서 답장을 해주면 다른 업무는 안 하고 메일만 기다리는 사람은 바로 일을 시작할 수 있다. 하지만 이렇게 확인해서야 프로그래밍이 불가능하다. 인터럽트가 너무 많다. 프로그래밍에는 그냥 시간이 아닌 연속된 시간이 필요하다...

비디오 메모리 구하기 (DirectDraw, WMI)

2 minute read

PerfHUD나 DirectX Caps Viewer로 볼 수 있지만, 비디오 메모리 사용량을 렌더링하는 게 그리 힘든 일이 아니라 보통 이 정도는 렌더링해준다. 그건 좋은데 문제는 DirectX9 인터페이스로는 사용 가능한 전용 비디오 메모리를 알 수 없는 거다. 그래서 보통 Di...

Back to Top ↑

term

Elixir 언어에서 Behaviour란?

9 minute read

Elixir에서 Behaviour란 용어가 나온다. Erlang의 어깨 위에 올라서서 만든 언어라 Erlang에서 사용하는 Bahaviour라는 용어를 그대로 가져온 것 같다. C++의 pure virtual function만 정의한 클래스 혹은 C#의 interface와 비슷한 ...

#term memoization, 메모이제이션

less than 1 minute read

계산한 값을 메모리에 저장해서 여러 번 같은 값 계산을 피하는 최적화 기법을 메모이제이션(memoization)이라고 한다. 실행 속도와 공간을 바꾸는 가장 기초적인 기법이기도 하다. 실수로 메모리제이션이라고 하기도 하는데 메모이제이션이 정확한 용어이다.

#term predicate, 술어

1 minute read

predicate 발음듣기 [미] [prédikət] 【문법】 술부, 술어 (cf. SUBJECT) 【컴퓨터】 술어 구글 사전

Back to Top ↑

debugging

WRITING SOLID CODE (Steve Maguire, 2001) 독후감

less than 1 minute read

이 책을 처음 본 게 언젠지 기억나지 않는다. 책에 줄이 그어진 걸 보니, 그 시점 이전인 것 같다. 언젠가부터 책에 메모를 안 하고 포스트잇을 사용하기 시작했거든. 최근 다시 볼 기회가 생겨서 글을 남긴다.

Debug It! 실용주의 디버깅 (폴 부처, 2010) 독후감

1 minute read

정석 맞다. 이런 책이 늦게 나온 게 아쉽다. 읽으니깐 신입 프로그래머 시절에 하던 디버깅 방법이 생각났다. 제대로 재현도 하지 않고 코드를 읽다가 의심되는 곳을 발견하면 수정. 실행해서 버그가 발생하지 않으면 ’고쳤구나!’. 제대로 넘어갈 리가 있나. 당장 다른 곳에서 문제가 안...

실전 윈도우 디버깅 (Mario Hewardt, Daniel Pravat, 2008) 독후감

less than 1 minute read

아꿈사에서 <프로그램은 왜 실패하는가?>라는 디버깅 책을 공부했었다. 이 책이 끝나고 난 뒤, 너무 이론에 치우쳐 있어서 아쉬우니 실전에서 쓸 수 있는 경험들이 담긴 디버깅 서적을 공부하자고 했다. 고르고 고르던 중에 걸린 이 책. 윈도우 시스템에 관한 이야기도 많아서 ...

프로그램은 왜 실패하는가? (Andreas Zeller, 2006) 독후감

less than 1 minute read

프로그래머가 만든 결함(defect)에 의해 프로그램 상태가 감염(infection)되고 이 감염된 상태 때문에 실패(failure)하게 된다. 감염을 따로 격리하고 결함을 찾아서 고치는 과정을 디버깅이라 하는데, 이 책은 짜임새 있고 논리적인 접근법을 가르쳐 주는 이론서이다. 딱...

Back to Top ↑

taocp

The Art of Computer Programming 1 (도널드 커누스, 2006) 독후감

1 minute read

커누스 형님이 지은 책. 감히 art를 붙인 책. 10년 동안 TEX를 만들게 한 책. 빌 게이츠가 다 보면 이력서를 달라는 책. 지금 다 보고 이력서 넣으면 자선 단체에서 일하겠지만. 아 그리고 많이 추천은 하지만 본 소감을 찾아보기 어려운 책이기도 하다. 그리고 또. 다 한번 ...

Back to Top ↑

physics

#gdc12 #review Solving Rigid Body Contacts

less than 1 minute read

contact solve를 이렇게 설명할 수 있구나. NDC 12에서 발표한 게임 물리 엔진의 내부 동작 원리 이해 발표보다 훨씬 세련되게 설명한다. 한 수 배웠다. 설명 방법이 돋보였던 발표.

Game Physics Engine Development (Ian Millington, 2010) 독후감

less than 1 minute read

force generator, integrator, collision detection, contact resolution으로 구성되는 큰 그림을 잘 설명해서 도움이 됐다. 물리 엔진에 관심이 있다면 게임 물리 관련 공식들이 가득 담긴 책보다는 큰 그림을 그려주는 이 책이 나은 선...

Back to Top ↑

side-project

Back to Top ↑

shell

Back to Top ↑

gitlab

이메일 관리법 snapshot / 2018-06

2 minute read

비동기(asynchronous)로 일을 잘하고 싶다. 그 중심에 이메일이 있다. 이메일만 주고받아도 충분히 일을 진행할 수 있는 동료가 있는 반면 꼭 찾아가서 얼굴을 보고 얘기를 해야 일이 진행되는 동료가 있다. 난 이메일처럼 비동기 도구를 사용해도 충분해서 찾아갈 필요 없는 동료...

마음에 드는 #gitlab todos

less than 1 minute read

참 애정하는 기능이다. Todo를 모아서 보여준다. 나를 맨션(@mention) 하거나 담당자로 지정하면 자동으로 Todo 항목이 된다. 물론 이슈에 있는 Add Todo 버튼을 눌러 직접 추가할 수도 있다.

GitLab 팀 안내서(team handbook)를 보고

3 minute read

입사하면 보게 되는 안내서. 안내서만 보면 어떤 회사인지 알 수 있다. 이렇게 호기롭게 지르고 싶지만 내가 본 안내서가 몇 개 안 될뿐더러 안내서를 공개한 회사 내부 사정을 잘 모른다. 회사 구성원은 어떤 소양을 가진 입사자를 원할까? 자기 동료에게 바라는 건 뭘까? 실상과 다르더...

Back to Top ↑

metrics

소스 코드 읽기: prometheus.erl, prometheus.ex

5 minute read

deadtrickster/prometheus.erl은 모니터링 시스템인 prometheus.io의 erlang 클라이언트다. 각종 메트릭(metric)을 프로메테우스가 파싱할 수 있는 포맷으로 텍스트를 만든다. deadtrickster/prometheus.ex는 prometheus...

소스 코드 읽기: erlang telemetry

4 minute read

telemetry는 erlang과 elixir에서 표준처럼 쓰는 메트릭(metric) 및 계측(instrumentation) 용도로 사용하는 동적 디스패치(dynamic dispatching) 라이브러리다.