프로그래밍 검색 결과, 45
Epoll
1. Epoll 1. Epoll 1.1. 목적 1.2. epoll이란 1.3. epoll과 IOCP 1.3.1. epoll_event 1.3.1.1. union 1.3.2. 레벨 트리거 vs 엣지 트리거 1.3.2.1. 엣지 트리거 1.4. 세마포어 1.1. 목적 2주간 Epoll로 에코 서버를 만들었다. 그 과정에서 알아낸 것들을 정리한다는게 목적. 쓰다보면 epoll과는 무관한 것들이 나올 수 있겠지만, 서버를 만들다보니 알게 된 것들을 정리하는게 이 글을 쓰는 목적이니 그냥 넘어가줬으면 좋겠다. 1.2. epoll이란 epoll은 linux에서 지원하는 입출력 이벤트 통지(?) 모델이다. 1.3. epoll과 IOCP 큰 차이가 없다. 사용하는 함수에서의 차이만이 있을 뿐. 입출력 이벤트 통지의 개..함수포인터로 함수명 변경하기
1. 함수포인터로 함수명 변경하기 1. 함수포인터로 함수명 변경하기 1.1. 동기 1.2. 계획 1.3. 문제점 2. 클래스 멤버 함수 포인터 2.1. (c.*funcArray[0])() 2.2. static_cast 1.1. 동기 클래스 A를 상속받은 B. A의 함수명을 바꾸고 싶다. 1.2. 계획 내가 원하는 함수의 이름으로 된 함수포인터로 함수명을 바꾼 것처럼 할 수 있지 않을까? 1.3. 문제점 그냥 함수포인터로 쓰면 되겠지하고... template class Container { public: virtual T* Push() { //... } protected: //.... }; class Object { public: //... }; class ObjectContainer :public Con..declspec에 대해
declspec에 대해 declspec에 대해 동기 계획 declspce란? 형식 정의 property 원형 C#의 Getter/Setter 프로퍼티 흉내내기 단점 참조한 포스트 dll의 Export와 Import dllimport의 작동원리 참조한 포스트 동기 C#의 Getter/Setter 프로퍼티를 C++에서 쓰고 싶어짐 define을 응용을 어떻게 해야될지를 고민 계획 1. 일단 내 머리로는 안되겠다. 도움이 될만한 사이트를 찾아서 검색! 2. 찾아보니 declspec와 property를 사용하면 손쉽게 만들 수 있다고 한다. 3. declspec와 property를 알아보자. declspce란? 형식 _declspec (extened -attrubute) declarator 정의 함수에 대한 정..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나 외장하드에 저장하고 다녀야겠다. 어쩃든간에 어제 하루는 데탑 조립하고 셋팅하는데에 하루를 보냈다. 특히 이번..Close()와 Shutdown() 함수 차이
close와 shutdown ㄱClose()와 Shutdown()의 차이 Close와 Shutdown, 둘 다 Socket을 닫고 통신을 종료하는 함수이다. 차이점은 소켓을 닫는 방식에 있다. int close(int sockfd) 소켓을 닫고 통신을 종료하는 함수다. 매개변수는 닫을 소켓이다. 성공하면 0을, 실패하면 -1을 반환한다. 내부적으로는 소켓에대한 참조카운트를 1감소하고, 참조카운트가 0이 되면 소켓을 닫는다. 만약 당신이 다중스레드 서버에서 close를 사용할 때, 이 참조카운트를 신경써야한다. 게임서버는 대부분 recv한 후에 send하는 에코서버가 아니기에(recv없이 send할 수 있다), 언제든지 참조카운트가 2이상이 될 수가 있다. 만약 참조카운트가 2이상이라면, 소켓을 close..Lowpoly
게임 서버 프로그래머 지망생