프로그래밍
-
처음 참가해본 해커톤일상/잡담 2018. 9. 5. 00:25
해커톤에 늘 관심은 있었지만 웹 개발자분들이 많다보니 기술 스택이 겹치지 않아 참가를 망설였는데,경쟁이 없다는 Planet Hackathon 2018은 그런 부담감을 덜어낼 좋은 조건이었다. 팀은 주니어 개발자 2명, 시니어 개발자 2명, 디자이너 1명으로 구성이 되었는데 우리팀은 주니어로 웹 백엔드를 하는 대학생, 웹 프론트엔드를 하는 대학생이,시니어로 안드로이드 개발자, 그리고 c++로 게임 서버 프로그래머로 일하고 있는 나로 구성 되었다. 처음엔 굉장히 당황했다.기술 스택이 하나도 안 겹치는 나와 안드로이드 개발자분이 시니어라니 그리고 난 주니어 년차인데? 여기에 주니어 개발자로 오신 우리 대학생 분들은 무슨 잘못.. -_-..;; 여튼 본격적인 해커톤이 시작되고 해커톤 주제로 뽑은 카페인을 바탕으..
-
c++17 if statement with initializer프로그래밍/c++ 2018. 8. 22. 12:58
if(init; statement){ // ...} 이런식으로 쓸 수 있다.using namespace std; map m = { {1, "a"}, {2, "b"}, {3, "c"}}; if(auto i = m.find(1); i == m.end()){ // not found} for문에 초기화 구문이 있는 것처럼, if문에도 초기화 구문을 지원하는 것이다. 반환값이 iterator인 것이 많은데 이 부분에서 좀 더 깔끔한 코드 작성이 가능해질 것이라 생각한다.
-
Visual Studio 2017에서 google test를 사용하기프로그래밍/c++ 2018. 8. 20. 11:52
vs2017 15.5 버전에서 google test가 visual studio ide에 통합되었다. 덕분에 google test를 손쉽게 사용할 수 있다. 0. 새 프로젝트 추가 -> Visual C++ 탭에서 테스트 -> Google Test로 프로젝트를 생성한다. visual studio installer를 실행하고, c++를 통한 데스크탑 개발 (desktop development with c++)에서 test adapter for google test를 내려받는다. 1. 테스트할 프로젝트를 선택한다. 2. 테스트 할 모듈을 정의를 include하고, 빌드 Google Test가 기본적으로 제공하는 콘솔 창도 있지만, 비주얼 스튜디오의 테스트 탐색기로도 테스트 결과를 확인할 수 있다. 콘솔로 테스트..
-
논블럭 소켓으로 connect 시 EAgain만 발생하던 현상프로그래밍/의문 2018. 7. 3. 08:38
if (IsOpen()){ return false;} m_nativeSocket = nn::socket::Socket(static_cast(GetProtocolFamily()), Type::Sock_Stream, Protocol::IpProto_Tcp); const bool opened = m_nativeSocket != SocketError; if (opened){ SetSocketOptions();} return opened; 소켓을 열고, 소켓 옵션을 적용한다. 적용할 소켓 옵션은 Nonblock으로, Poll api와 함께 사용될 것이었다. 그런데 connect를 진행했을 때, 항상 EAgain 에러가 나오더라. 하지만 에러와 무관하게 연결이 맺어졌고, 때문에 WouldBlock 같은 건가 싶어서..
-
stl 컨테이너 환형 순회프로그래밍/c++ 2018. 5. 23. 08:41
UI 프로그래밍을 담당하시는 하시는 분이 Form 안의 UI들을 환형으로 순회하는 걸 간단하게 표현하고 싶은데 어떻게 하면 심플하게 할 수 있을지 여쭤보셨다. 사용처는 컨테이너의 맨 끝 요소에 있는 상태에서 우측 방향키를 누르면 다시 처음 위치의 UI에 위치하도록 하는 게 목적이다.기존에 이미 작성된 코드가 있었기에 해당 부분을 별다른 변경 없이 사용할 수 있도록 값으로 회전할 수 있어야 했고,난 다음과 같은 코드를 만들어줬다. iterator로template inline typename Container::iterator GetNextIteratorCircular(const Container& container, typename Container::iterator..