본문 바로가기

Programming

MFC의 CFileFind를 이용한 파일명 열거 MFC에서는 파일을 찾고 나열하기 쉽도록 CFileFind라는 클래스가 존재합니다.이 클래스를 사용하면 굉장히 편리하게 파일을 나열할 수 있습니다.소스 코드는 다음과 같습니다.찾을 파일의 형식이나 파일명을 지정하고 검색을 하시면 됩니다.이것은 MSDN에 나온 예제입니다. CFileFind finder; BOOL bWorking = finder.FindFile("*.*"); while (bWorking) { bWorking = finder.FindNextFile(); cout 더보기
CRect의 DeflateRect() 메소드 CRect는 사각형의 좌표를 저장하고 이 좌표를 더 유용하게 쓸 수 있는 메소드를 갖고 있는 클래스입니다.이 클래스 중에는 DeflateRect()라는 메소드가 존재합니다.이 메소드는 Deflate의 의미(오므라들다, 수축시키다)와 같이 사각형 정보를 줄이는 역할을 합니다.DeflateRect()가 어떻게 찌그러뜨리는지 확인해 보도록 하겠습니다. 간단하게 다이얼로그 기반으로 만들고 OnPaint() 부분을 조금 수정해 줍니다. void CAlwaysOnTopDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetS.. 더보기
메모리DC를 이용한 더블버퍼링으로 그리기 일반적으로 비트맵을 화면에 출력할 때는 더블 버퍼링이라는 방법을 사용합니다.출력을 할 때 바로 화면에 출력하는 것이 아닌 메모리에 먼저 그리고 그려진 내용을 화면에 출력하는 것입니다.이 방법을 사용하면 그림을 그릴 때 깜빡거리는 현상을 줄일 수 있습니다.계속 화면에 출력하는 것보다 메모리에 다 그리고 그려진 내용을 화면에 한 번에 출력하기 때문입니다.보통 비트맵을 이렇게 그리지만, 그래프 등 출력이 많이 발생하는 경우에 활용이 가능합니다.비트맵이 아닌 일반 선, 도형 등을 더블 버퍼링을 이용해서 출력하는 방법을 설명하도록 하겠습니다.기준은 MFC 기준이고, Win32 API 기반에서도 충분히 활용이 가능합니다.OnPaint()에서 적용하는 방법입니다.WM_PAINT 처리 함수인 OnPaint() 함수를 .. 더보기
SourceTree를 통한 Git 서버 연결 Git을 사용할 때 다양한 클라이언트를 사용 가능하지만 Atlassian의 SourceTree를 사용하는 방법입니다.Atlassian은 JIRA, Confluence 등의 프로젝트 관리도구를 개발하는 업체입니다.Git을 위한 Stash도 제공하며 SourceTree라는 클라이언트를 무료로 제공합니다.Git 클라이언트에는 기존의 버전관리인 SVN으로 유명했던 TortoiseGit도 존재합니다.1. Client Side먼저 SourceTree를 다운받습니다.아래 링크로 이동하면 다운로드가 가능합니다. https://www.atlassian.com/software/sourcetree녹색 버튼(Get it free @ sourcetreeapp.com)을 클릭하면 다운로드할 수 있습니다.다운로드가 완료되면 설치를.. 더보기
[C++11] 새로워진 random number 생성 난수(Random number) 생성은 일반적으로 확률 값이 필요한 경우에 사용이 됩니다.프로그래밍을 처음 배울 때, 로또 번호 생성기를 제작할 때 쓰이기도 합니다.그 외에 난수를 기반으로 하는 암호화에도 활용이 됩니다.기존의 난수 생성은 다음과 같습니다. #include #include #include int main() { srand((int)time(0)); int nRand1 = rand(); int nRand2 = rand() % 11; std::cout 더보기
[C++11] std::pair를 확장한 std::tuple Boost에 존재하던 tuple이 C++ 표준으로 채택되었습니다. C++ TR1부터 사용이 가능해졌지만 C++11에 분류한 것은 이전에 작성한 가변인자 템플릿때문입니다. tuple은 기존의 std::pair를 확장한 자료형입니다. std::pair가 2개의 값을 한 번에 저장할 수 있지만 tuple은 제한이 없습니다. 기존의 C++ TR1에서는 10개까지 저장이 되었습니다. tuple은 2개 이상의 값을 한 번에 반환하거나 전달할 때 사용하면 유용합니다. 물론 구조체를 통해서 가능한 방법이긴 하지만 구조체는 정의를 해서 사용해야 합니다. tuple을 이용하면 간단하게 다양한 값들을 한 번에 전달이 가능하게 됩니다. 예제 코드는 다음과 같습니다. #include #include #include int ma.. 더보기
[Ubuntu] 우분투에 깃 서버(Git Server) 환경 구축 - 3 2015/05/08 - [Programming/Git] - [Ubuntu] 우분투에 깃 서버(Git Server) 환경 구축 - 2Git을 사용할 때는 보통 ssh를 통해서 인증을 하게 됩니다.매번 비밀번호를 입력하는 방법보다 더 간편하게 접속이 가능합니다.먼저 gitolite 계정으로 접속합니다. su - gitolite 다음 명령어로 새로운 ssh 키를 생성합니다. ssh-keygen 그냥 엔터를 누르면 정상적으로 생성이 됩니다.기본 경로는 home/gitolite/.ssh/ 이고 해당 경로 아래에 id_rsa라는 파일이 생성됩니다.간단하게 ssh 키가 생성됩니다. 키는 public과 private 키가 한 쌍으로 생성됩니다.생성된 public 키를 git-repo로 전달합니다. scp /home/g.. 더보기
[Ubuntu] 우분투에 깃 서버(Git Server) 환경 구축 - 2 2015/05/07 - [IT/컴퓨터/Linux] - [Ubuntu] 우분투에 깃 서버(Git Server) 환경 구축 - 1우분투에 Git을 설치하는 과정은 위 링크에서 확인이 가능합니다.Git을 설치한 이후에 관리를 위해서 Gitolite를 설치합니다.먼저 root 계정에 접속한 상태에서 gitolite와 git-repo 계정을 생성합니다. adduser gitolite adduser git-repo 계정을 생성할 때는 사용할 비밀번호를 입력하고 이름 등은 따로 입력하지 않아도 됩니다.이름 등의 정보는 그냥 엔터를 눌러서 스킵하면 됩니다.정보가 맞으면 Y를 눌러서 계정을 생성하면 됩니다. 동일하게 git-repo 계정도 생성합니다.생성된 gitolite 계정은 사용자가 저장소에 접근할 때 사용하게 됩.. 더보기