일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Two Points
- Dijkstra
- binary search
- 다익스트라
- DP
- Hash
- 스토어드 프로시저
- Stored Procedure
- MYSQL
- String
- Trie
- 이진탐색
- two pointer
- 그래프
- Brute Force
- SQL
- union find
- Today
- Total
목록분류 전체보기 (425)
codingfarm

수신 대기열의 가장 앞에 있는 연결 요청을 가져온다. 연결 요청을 성공적으로 가져오면 클라이언트와의 통신을 위한 연결 소켓을 생성한다. accept 함수의 원형은 아래와 같다 1 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); cs 매개변수 sockfd : socket 함수 호출시 반환된 소켓 식별 번호 addr : accept 함수 성공시, 연결된 client의 주소와 포트 정보가 담기는 구조체 addrlen : sockaddr 구조체의 크기 반환값 0 이상 : 성공, 소켓 지정 번호 -1 : 실패 함수자체의 컨셉은 bind 함수와 유사하다. 반환값은 socket 함수로 만든 듣기 소켓과는 전혀 다른 별개의 소켓이다. 듣기 소켓 :..

학습 목표 listen 함수의 사용법에 대해 배운다 클라이언트 요청에 대한 처리가 끝나기 전에 새로운 클라이언트가 요청하는 상황이 온다면, 해당 요청을 잠시동안 대기시키기 위한 대기열을 만들 필요가 있다. 이 대기열을 생성하기 위해 listen 함수가 쓰인다 수신대기열은 queue와 같은 FIFO 형태의 자료구조이다. 파란색과 초로색의 클라이언트가 서버측에 연결을 요청하면, 이 요청은 대기열에 들어가게 되며 먼저 요청이 들어간 파란색이 먼저 출력됨을 볼 수 있다. listen 함수의 원형은 아래와 같다. 1 int listen(int sockfd, int backlog); cs 매개변수 sockfd : socket 함수로 만들어진 소켓 지정 번호 backlog : 수신대기열의 크기 반환값 0 : 성공 -..

학습 목표 bind 함수로 소켓을 설정하는 방법을 배운다 socket 함수로 특정 도메인과 타입, 프로토콜에 맞는 소켓을 생성하고 나면, bind 함수로 소켓에 IP와 포트를 할당한다. server : bind 함수를 통해 소켓에 IP와 포트를 할당함 client : 연결할 인터넷 서비스(server)의 포트만 알면 됨 (자신의 포트는 몰라도 됨) bind 함수의 원형 int bind( SOCKET sockfd, const sockaddr *my_addr, int namelen ); cs 함수의 매개변수 sockfd : 앞서 socket 함수로 생성된 endpoint 소켓의 식별 번호 my_addr : IP 주소와 port 번호를 저장하기 위한 변수가 있는 구조체 namelen : 두 번째 인자의 데이터..

학습 목표 socket 함수를 이용하여 소켓을 생성하는 방법을 터득 앞서 일반적으로 소켓통신에서는 버클리 소켓을 사용한다고 앞서 설명했다. 하지만 이 버클리 소켓은 windows와 linux OS에서 각기 다른 헤더파일에 존재한다. windows : winsock2.h linux : sys/socket.h docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket int socket(int domain, int type, int protocol); cs endpoint 소켓 socket 함수에 의해 생성되는 종점 소켓 서버와 클라이언트의 연결을 받기 위함 2가지 용도로 쓰임 client : 연결 요청 server : (client의 요청..

학습 목표 네트워크 프로그래밍을 위한 가장 기초적인 개발도구인 소켓을 공부 네트워크와 네트워크 프로그램 개발에 대한 직감 터득 소켓을 활용한 네트워크 프로그래밍 과정 숙지 소켓 네트워크 프로그래밍을 위한 함수 모음(라이브러리) 네트워크 프로그래밍 과정 socket 함수 : 소켓을 생성 bind 함수 : 소켓의 특성을 정의 listen 함수 : 수신 대기열 형성 시스템간에 연결한다 connect 함수 : 클라이언트 : 연결 시도 accept 함수 : 서버 : 연결 수락 read함수, write함수 : 데이터 통신 close 함수 : 소켓 폐쇄 빨간색 : client만 수행 파란색 : server만 수행 수신대기열은 없어도 된다. 하지만 수신대기열이 있음으로써 통신을 요청한 클라이언트가 얼마간 기다린후에 자..

일반적으로 프로젝트를 빌드하면 그때 나오는 결과물들은 $\$$(SolutionDir)$\$$(Platform)\$\$$(Configuration)\ 위 경로에 저장된다. 하지만 출력 디렉토리를 조절하면 빌드의 결과물들을 개발자들이 원하는 디렉토리에 저장되게끔 할 수 있다. 빌드 결과물들이 저장될 디렉토리를 구성속성 $\rightarrow$ 일반 $\rightarrow$ 출력 디렉토리에 설정하면 된다.

ko.wikipedia.org/wiki/C%2B%2B_%ED%91%9C%EC%A4%80_%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC 정의 소프트웨어 개발 시 사용되는 프로그램의 구성요소 공통으로 사용될 수 있는 특정한 기능(들)을 모듈화한 것 대상 환경(플랫폼)에서 바로 실행될 수 있는 형태로 제공됨 $\therefore$ 라이브러리는 동작하는 완전한 프로그램이 아닌, 특정한 부분 기능만을 수행하도록 제작된, 컴파일되어 기계어의 형태로 (또는 대상 플랫폼에 따라서는 바이트코드로) 존재하는 프로그램이다. 정적라이브러리 만들기 docs.microsoft.com/ko-kr/cpp/build/walkthrough-creating-and-using-a-static-librar..

noirstar.tistory.com/12 gamedevforever.com/134 docs.microsoft.com/ko-kr/cpp/build/creating-precompiled-header-files?view=msvc-160 정의 미리컴파일된 헤더(precompiled header)는 이름 그대로 헤더를 미리 컴파일 하는것이다. 자주수정되지 않는 거대한소스(ex : windows.h)를 미리 컴파일하여 컴파일결과를 별도의 파일에 저장하여, 다시 똑같은 헤더를 컴파일시 해당파일을 처음부터 컴파일하지않고 미리컴파일된 헤더 파일을 사용해 컴파일 속도를 월등히 향상시켜준다. 도입 배경 코딩을 하다 보면 프로젝트의 몸집이 커지게 되고, 그에 비례하여 컴파일 타임도 기하급수적으로 늘어나게 된다. 단지 코드 ..

1. 비트맵 출력 비트맵 컴퓨터 분야에서 디지털 이미지를 저장하는 데 쓰이는 이미지 파일 포맷 또는 메모리 저장 방식의 한 형태 화면 상의 각 점들을 직교좌표계를 사용하여 화소 단위로 나타냄 가로 곱하기 세로 만큼의 픽셀 정보를 다 저장해야 하기 때문에 벡터 방식의 이미지나 텍스트 자료에 비해 상대적으로 용량이 크고 처리 속도가 느림 GDI 오브젝트로 취급됨 파일저장형식 : JPEG, GIF, PNG winapi는 gdi+를 추가하지 않으면 PNG를 출력할 수 없다. 윈도우에 비트맵 출력하기 비트맵을 선택하고 가져오기를 눌러, PC에 저장된 파일 중 리소스로 쓸 BMP 파일을 가져온다. 우리는 아래의 파일을 쓸것이다. 추가된 리소스의 ID를 확인한 후 아래 코드를 작성한다. 1 2 3 4 5 6 7 8 ..

1. 흑백에서의 그리기 모드 그리기 모드 : 도형이 그려질 때 원래 그려져 있던 그림과 새로 그려지는 그림과의 관계를 정의하는것 ex : 예전 그림 위에 새그림 덮기, 적절히 혼합하기 가령 2개의 흑백 그림을 4가지 비트 연산으로 합처보면 아래와 같다. 2. 그리기 모드의 종류 그리기 모드를 변경하는 함수와 현재 설정된 그리기 모드를 구하는 함수는 아래와 같다. 1 2 int SetROP2( HDC hdc, int rop2 ); int GetROP2( HDC hdc); cs hdc : 그리기 모드를 변경(또는 조사) 하고자 하는 DC의 핸들 rop2 : 변경할 그리기 모드 값 그리기 모드 설명 R2_BLACK 항상 검정색이다. R2_WHITE 항상 흰색이다. R2_NOP 아무런 그리기도 하지 않는다. R..

1. GDI 오브젝트 GDI(Graphic Device Interface) 3장에서 간략히 설명한 적 있다. 윈도우즈 프로그램을 구성하는 세가지 DLL 중 하나 KERNEL, USER, GDI 화면, 프린터 등의 출력장치를 통제하는 윈도우즈의 핵심 모듈 윈도우즈 프로그램에서 모든 출력은 GDI를 통해서 화면과 프린터로 나가게 되어 있음 GDI Object GDI가 그래픽 출력 및 출력조정에 사용되는 도구 ex : 펜(선 그리기), 브러시(면 채우기), 비트맵, 폰트(문자열 출력)... 사용자는 그래픽을 그리기전에 DC에 원하는 오브젝트를 선택해줌으로써 원하는 모양과 속성으로 그래픽을 출력할 수 있다. GDI 오브젝트는 모두 핸들로 관리되므로 사용자는 GDI 오브젝트 생성 함수를 부르고, 이 함수가 리턴하..

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 #include #include "resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT("StrTable"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance , LPSTR lpszCmdParam, ..

흔히들 말하는 단축키이지만 윈도우즈에서 단축키(ShortCut)라는 말은 다른 의미로 사용되므로 엄격히 구분지어야 한다. ShortCut Accelerator $\bullet$ 메뉴 이름에 &을 넣어 Alt키와 함께 사용하는 키 $\bullet$ 메뉴에 있는 항목을 키보드로 선택하는 방법 $\bullet$ 메뉴와 상관없이 사용 가능 액셀러레이터 만들기 우선 리소스뷰에서 메뉴 리소스 파일을 더블클릭하여 편집기를 연다. 메뉴만 봐도 한눈에 단축키가 무엇인지 알 수 있도록 이름 옆에 단축키 값을 입력해준다. 그러기위해 각 메뉴 항목들의 캡션을 아래처럼 바꾼다. 이제 실행해보면 Alt + F 키를 누르면 File 메뉴가 열리는것을 볼 수 있다. 아직은 이름만 수정한것이므로 실제 단축키가 작동하진 않는다. 엑셀러..

0. 메뉴 윈도우즈용 프로그램이 제공하는 가장 표준적인 UI 구조와 기능, 내부적인 운용 방법은 간단치 않지만, 개발툴을 활용하면 비교적 쉽게 구현 가능하다. 프로젝트 내의 리소스파일 폴더를 우클릭하고 새항목을 클릭한다 좌측의 리소스 탭에서 리소스 파일(rc)을 선택한다. 솔루션 탐색기에서 생성된 rc파일을 볼 수 있으며, 리소스 뷰에서 프로젝트에 포함되어 있는 리소스들의 목록을 계층적으로 보여준다. 리소스뷰의 Menu.rc 폴더를 우클릭하여 Menu 리소스를 추가해본다. 솔루션 탐색기 툴바에서 Menu.rc와 resource.h가 추가되었으며 리소스 뷰 툴바에서 메뉴 리소스가 추가된것을 볼 수 있다. 메뉴 리소스를 더블클릭하여 파일을 열면 작업영역 메뉴창의 모습을 볼 수 있다. 작업영역을 아래처럼 수정..

1. 리소스의 분리 프로그램은 코드와 데이터로 구성된다. 코드 : 데이터를 처리하는 수단, 프로그램의 동작을 제어 데이터 : 프로그램의 처리 대상, 코드가 아닌 모든것 ex : 비트맵 아이콘, 메뉴, 문자열... 리소스 : 코드의 논리와 무관한 데이터 ex : 메뉴, 비트맵, 단축키, 문자열, 아이콘, 커서... 별도의 편집기로 만들어져 컴파일되며 링크시에 실행파일에 결합됨 컴파일 과정은 API에서나 MFC에서나 동일하다 도스와 달리 윈도우는 리소스를 만드는 과정과 코딩 과정이 분리되어서 생기는 강점들 디자이너와 프로그래머의 분업이 편리 리소스의 수정과 소스의 컴파일이 분리됨 리소스와 소스를 따로 컴파일하고, 실행파일 생성시에만 함께 링크되면됨 모듈 분할 컴파일의 장점과 비슷 리소스의 재사용이 용이 리소..

Enumerating Adapters docs.microsoft.com/en-us/windows/win32/direct3ddxgi/d3d10-graphics-programming-guide-dxgi Adapter 정의 : 컴퓨터의 HW와 SW이 기능을 추상화 한것 machine에는 수많은 adapter가 존재 일부는 HW로, 일부는 SW로 구현 HW : 비디오 카드... SW : Direct3D reference rasterizer 역할 : graphic application에 의해 사용되는 기능을 구현 현재 시스템에 있는 어댑터와 출력장치에 대해 출력하는 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30..

docs.microsoft.com/en-us/windows/win32/direct3ddxgi/d3d10-graphics-programming-guide-dxgi#enumerating-adapters DXGI(DirectX Graphics Infrastructure) Overview 차세대 그래픽스 구성요소(Components)를 위한 공통 프레임워크를 제공 탄생 배경 : 여러 그래픽 API들에 공통적으로 쓰이는 그래픽 관련 작업들을 한데 묶기 위해 DirectX10, 11, 12와 함께 사용 됨 역할 : swap chain, 페이지 전환, 감마 조절 그래픽 어댑터 열거, 디스플레이 모드 열거, 버퍼 포맷 선택, 프로세스간 자원 공유, 윈도우 혹은 모니터로 display하기 위한 렌더링된 프레임 prese..

우리는 앞선 과정에서 수차례 메시지를 사용했다. 앞서 메시지가 생성되는 조건은 2가지라고 배웠다 사용자의 입력에 의해 시스템이 변화를 감지했을때 메시지는 윈도우에 들어오는 여러가지 상황 변화를 통보하기 위해 쓰여진다. 상황변화 : 명시적인 입력이 될 수도 있고, 윈도우에 관한 기본적인 관리도 포함된다. 윈도우에 들어오는 여러가지 메시지에 대해 알아보겠다. 1. 생성 및 파괴 WM_CREATE와 WM_DESTROY는 윈도우가 생성 및 파괴 댈때 보내지는 메시지이다. 각 메시지들은 윈도우 생성시 해야할 일회적인 초기 및 종료 처리에 사용할 수 있다. 가령, 윈도우에서 사용하기 위한 1M의 메모리를 동적으로 할당하고자 하면 아래의 방법을 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 ..
github.com/tony9402/baekjoon/tree/main/graph_traversal