엘키의 주절 주절

소소한 개발 이야기

유니티3D 개발에 대한 단상

많은 분들이 이사다시피 저는 서버 프로그래머입니다만, 습작이나 오픈 소스로 공개한 SDK등에서 간단한 게임들을 공개해온적이 있습니다. 기본적인 클라이언트 작업 이해도는 있는 편이지만, 실무에서 클라이언트 코딩을 해온 기간은 짧은편이지요. (렌더링을 제외한 로직 구현이나 네트워크 코드를 주로 작성해왔죠. UI와 인게임 코딩은 습작에서 해온게 대다수입니다...

상향식 코드 분석과 하향식 코드 분석

꽤나 많은 상황에서 우리는 기존 코드를 분석해야 한다. 빌드업이라 불리는 프로젝트에 필요한 기능들을 만져나가는 과정에서도 우리는 라이브러리나, 오픈소스 코드등을 통해서 기존 코드를 분석해나가야 한다. 물론 이 과정은 섬세하게 만져나갈 여지가 있고, 그간의 결합도를 조절해나갈 여지가 있으므로 상대적으로 코드 분석의 여지가 적다. 심지어 사용하는 라...

버그 노트

버그는 프로그래머의 숙명이다. 그 섬세하게 만들려한 IOS, OS X에도 버그는 종종 있으며, 사실 많은 사람이 M$라 부르지만 나의 경우는 매우 감사하고 있는 MS의 경우에도 버그는 많다. 구글도 예외는 아니고. (구글 apps 초창기 패치할 때 마다  언어 관련, IME 관련 문제를 겪게 했던 일은 나름 유명한 일화다.) 이러한 회사는 분명히 ...

코딩 컨벤션

내가 코드를 작성할 때 신경쓰는 코딩 규약들을 정리해본다. 소유권 객체의 소유 주체는 (생성과 소멸의 관리 주체는) 하나로 규정한다. 객체의 생성,소멸 스레드도 하나로 규정한다. 다른 클래스에서 호출되어야만 하는 메소드를 만들지 말라. Has a 관계가 명확하다면, 이 관계를 혼란 시킬 수 있는 메소드는 절대 만들지 마라. 진입점...

레거시 코드 활용 전략

최근 레거시 코드 활용 전략이라는 책을 읽고 있다. 업계에서 흔히 레거시 코드라 불리는 코드를 많이 만져보게 되죠. 굳이 라이브팀이 아니더라도, 자주 만나게 된다. 내 주변에서도 흔히 사용하는 용어로써의 레거시 코드는 복잡한 코드, 결합도 높은 코드, 제약이 많은 코드, 너무 긴 메소드 등을 통칭하는 용도로 쓰인다 대략 외국에서도 낡은 코드, 유...

로직의 네트워크 동기화 처리

실시간 게임이라 하더라도, 내부적으로는 모든 게임의 구성은 턴으로 구성하는 것이 좋다. (실제 초당 n프레임 같은 개념에서 각 프레임은 턴과 같은 개념이기 때문이다.) 이 턴의 동작 주기를 입력, 렌더, 로직 등을 잘 구분지어 처리하는 것이 좋다.   예를 들면, 입력은 1초에 5번, 렌더는 1초에 30번, 로직은 1초에 5번 등의 턴 기준을 명확히...

Thread design 01 - 우리는 이미 알고 있었다

제가 프로그래밍을 처음 배울 때의 CLI 프로그래밍과 WIN32 프로그래밍으로 넘어왔을 때 큰 괴리를 느꼈습니다. 그 이유는 바로 EVENT-DRIVEN(message based)프로그래밍 때문이었죠. 현재는 reactor라는 패턴이란 이름으로 더 알려진 이 메시지 기반 프로그래밍은, DOS 시절의 동기 프로그래밍에 익숙한 많은 프로그래머를 괴롭게...

웹 로그 서버 구축기 with rails V2

개발 목표 자동으로 파일로 남겨져 있는 로그를 분석해, 시스템에 영향을 주는 작업을 알려주기 위해 개발 됐다. 파일로 남겨져 있는 log를 db으로 밀어 넣는 작업은 log_shipper가 담당한다. db에 있는 데이터를 조건에 맞게 검색해서 보여주는 역할을 하는 web_server를 만들고자 의도했다. 실제 쿼리 작성...

non-blocking multithread programming

클럭도 물론 중요하지만, 코어가 몇갠지 부터 보는 일이 자연스러워진지도 몇년. 다들 병렬 프로그래밍 잘 하고 계시나요? 서버 프로그래밍을 시작한 2006년부터 지금까지… 멀티 스레드를 다뤄오며, 느낀 것에 대해 이야기해보고자 한다. lock 말그대로 잠금. 이 데이터 unlock 될때 까지 쓰지말라는 거다. non-blocking...

유닛 테스트의 진짜 효과와 역할

유닛 테스트를 내가 접한 지도 어언 10년이 다 되간다. 그간 내가 거쳐온 많은 회사에서 사용되기도, 무시되기도, 우선 순위에 밀리기도 하더라.   이 과정에서 제안도 여러 번 해보고, 설득 과정에서 자주 나왔던 질문이 있었다.   유닛 테스트하면 뭐가 좋은가요?   처음 이 질문을 받았을 당시, 내 답변은   테스트야 하면 당연히 좋은 거다   라...