프로그래밍/프로그래밍 관련 검색 결과, 35
RAII (1)
RAII SideCommunity 독학의 한계를 느끼던 도중에 찾은 Youtube의 프로그래밍 강의채널을 보고 있습니다. SideCommunity가 위에 올라간 글과 태그는 해당 강의를 정의한 내용입니다. Resource Acquisition Is Initialization의 약자 생성자와 파괴자가 자동으로 실행되는 기능을 이용하여 리소스를 자동으로 생성/파괴하는 패턴. 리소스 관리에 예외가 발생하는걸 방지하기 위함 boost의 socpe exit 매크로 socpe안에 socpe exit를 선언하면, 해당 socpe를 벗어나기 전에 해당 scope exit를 실행한다. { BOOST_SCOPE_EXT() { //... } //..scope를 실행 //scope를 벗어나기 전에 BOOST_SCOPE_EXT..VS Code로 C++ 디버깅
VS Code로 C++ 디버깅 동기 서버 만드는 도중에 테스트할 때마다 테스트 프로젝트를 키는게 귀찮다. gcc로 하는 것도 나쁘지는 않지만, 가벼운 IDE같은게 있으면 좋겠다. 그리고보니 VS Code로도 가능하겠다. 이용해보자. 계획 VS Code로 디버깅을 해보자. 난관 컴파일은 쉬운데, 디버깅에서 시간을 많이 잡아먹었다. json으로 gcc 쉘을 참조해서 하는 것같은데, 이 설정과 단계가 이해가 안갔다. 과정 컴파일 당연하지만, 우선 gcc를 설치해야한다. 우리는 자주 사용하는 Mingw를 이용할 것이다. Mingw로 gcc를 설치후 환경변수에 gcc를 입력한다. 정상적으로 gcc를 설치했다면, 우리는 vs code에 c++를 이용하기 위한 확장을 설치해야한다. 설치할 확장은 C/C++ 혹은 Co..GitHub와 VS의 연동 문제
GitHub와 VS의 연동 문제 2018년 1월 23일 동기 노트북에 pull받은 버전을 vs로 띄우니 갑자기 에러가 떴다고 메시지가 떴다. 로그는 xml로 남겨놨다갈래 들어가보니... 라는데 무슨 소린지 모르겠다. 그래도 에러는 많이 봤으니 이럴 때에는 침착하게 에러를 읽어야한다는걸 안다. "A MEF Component threw an exception at runtime" 뭔지는 몰라도 MEF라는 컴포넌트가 문제인가보다. 찾아보니... 계획 MEF를 재설치하면 될 것같다. 내 생각엔 파일이 깨진게 아닐까싶다. MEF는 "어플리케이션과 컴포넌트의 재사용성을 높일 수 있는 프레임워크다"라고한다. 기존의 정적어플리케이션은 새로운 빌드버전은 기존 어플리케이션과 확장된 기능간에 종속적인 관계로 이 기존의 어플..VS Code로 Markdown 편집하기
VS Code 사용하기 동기 데탑을 새로 맞췄더니 MarkdownPad가 윈도우 10을 지원해주지 않는다. 새로운 마크다운 에디터가 필요하다. 계획 1.이번에도 마크다운을 지원하는걸로 쓰기로 했다. 마소는 지원을 안하는게 없나? 성능은 둘째치고.. 여튼 이름은 바로 VS Code(Visual Studio Code). 단순히 마크다운 에디터가 아니라, 크로스플랫폼 오픈소스 프로젝트. 비슷한 IDE로는 Vim과 sublime Text가 있다. sublime은 예전에 한 번 써봤는데, VSC와 비슷한 느낌. 마크다운을 편집할 때, 우측에 실시간으로 프리뷰를 제공한다. 이걸 가장 원했다..요새 안해주는 곳이 없긴하지만. 좀 느리거나 불편하면 그냥 sublime이나 atom으로 바꿔버리자. 과정 마소답게 과정이 ..VS를 깃허브에 연동
VS를 깃허브에 연동 데탑을 2주에 걸쳐서 이제 조립을 완성했다... 처음하는 조립이라서 헤맨 부분도 있었지만, 오래걸린 이유는 메인보드 초기불량... 아는 형님의 도움을 받아서 조립의 팁을 몇 개받았다. 그 형님이 아니었으면 난 지금쯤 반쯤 정신놓고 아직도 고치고있지 않았을까? 뭔가 2주동안 짜증은 났지만 그래도 재미는 있었고, 다음에 또 조립해보고 싶다. 동기 집에서는 데탑으로 코딩하고, 밖에서는 노트북으로 코딩하고 싶다. 두 개를 연동해서 어디서든 코딩하고 싶다. 계획 일단 마소에서 VSTS로 Git을 지원해주는 것같다. 이걸 이용해보면 될 것같다. 연동이 잘 안되거나 불편하면 그냥 USB나 외장하드에 저장하고 다녀야겠다. 어쩃든간에 어제 하루는 데탑 조립하고 셋팅하는데에 하루를 보냈다. 특히 이번..Command 패턴 (1)
New Document 2. 커맨드 패턴 (Command Pattern) 2-1. Introduce 요청을 객체로 캡슐화한다. 그렇게함으로서 유저들은 다른 요청, 큐(Queue), 혹은 로그 요청으로 클라이언트를 매개변수화하고, 실행할 수 없는 명령을 서포터한다." -Game Programming Pattern 커맨드 패턴의 핵심은 추상화이다. 이 패턴은 객체의 함수 호출을 리얼 타임에서 구체화해서 실행시킨다. GOF에서는 "커맨드는 콜백의 객체기반 대체품이다"라고 소개한다. 2-2. Motivation 게임에는 여러가지의 입력에 반응하는 코드가 어딘가에는 존재한다. 이 코드들은 유저의 입력을 게임 월드에서 유의미한 액션으로 바꾼다.예를들어, 유저는 A, B, X와 Y버튼을 가지고, 각각 무기변경(Swa..Singleton 패턴
Singleton 패턴 정의 객체가 생성되는 개수를 제한하는 형태 상황던전앤파이터는 MORPG로 한 던전에 최대 4명의 유저가 입장할 수 있다. 이때, 캐릭터는 반드시 플레이어 수만큼만 생성되어야한다. (적당한 이미지를 찾기가 힘들다..남들의 플레이컷을 가져오자니 뭔가 찔리고..그냥 안올리는걸로; 다음에 출타나가면 피방가서 적당한걸로 찍어올리자) 가장 쉽게 생각할 수 있는 방법은 전역변수로 객체의 개수를 관리하는 방법이다. #include #define MAX_PLAYER 4 class GameUnit{public:void Display() { std::cout playernum; for(int i = 0 ; i < MAX_PLAYER ; i++)dungeon.EnterDungeon();dungeon.P..ProtoType 패턴
ProtoType 패턴 정의 객체를 생성할 때, 원본 객체를 복사해서 생성하는 패턴클래스에 멤버함수로 Clone을 만들어둔다. 상황 던전앤파이터의 넨마스터의 스킬중 '분신'은 말그대로 캐릭터의 분신을 만든다. 캐릭터의 스킬 레벨에따라서 일정 %만큼의 HP를 가진 복수개의 분신을 생성한다. 즉, 플레이어 캐릭터보다 단순화된 능력치의 캐릭터 복제가 이루어져야하는데, 캐릭터를 일일히 생성하는 것보다 원본 캐릭터를 복제하고 능력치를 조정하는 것이 더 쉬울 것같다. 코드 #include class Character{public:Character() {}Character(int hp, int mp):HP(hp), MP(mp), XPos(100), YPos(100) { } virtual Character* Clone..Abstract Factory 패턴
Abstract Factory 패턴 정의 제품군의 생성을 전담할 Base Factory 클래스를 정의하고, Base Factory 클래스를 상속받은 제품군별 Factory 클래스를 정의한 형태.어떤 조건에 객체를 생성해야할 때, 직접 객체를 만들기보다는 객체를 생성시키는 클래스를 만들어서 전담시키는 것이 Abstract Factory 패턴의 개념이다 (GOF책의 정의) 특정 제품군에 속하는 제품 객체를 생성하는 프로그램을 한 곳에 모아, 새로운 제품군의 추가가 용이하게 만든 클래스 설계 상황 던전앤파이터에는 아군 APC 소환용 아이템이 있다. 던파의 APC의 종류는 다양하지만, 지금은 솔도로스와 비연이라는 APC만 소환할 수 있다. 솔도로스와 비연을 소환하기위해서는 솔도로스 인형, 비연 인형이 필요하다...Lowpoly
게임 서버 프로그래머 지망생