일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MYSQL
- binary search
- Two Points
- 다익스트라
- 이진탐색
- union find
- 스토어드 프로시저
- 그래프
- two pointer
- String
- DP
- Stored Procedure
- Brute Force
- Trie
- Hash
- Dijkstra
- SQL
- Today
- Total
목록분류 전체보기 (418)
codingfarm
progtrend.blogspot.com/2017/03/deleted-functions.html C++ deleted functions (함수의 삭제 선언) C++ deleted functions. progtrend.blogspot.com 어떤 함수를 삭제하면 그 함수에 대한 어떠한 호출도 불가능해진다. C++ 11이전에서는 그런 메서드를 private로 선언하여 사용을 막았으나, C++ 11부터는 함수 삭제 기능을 지원한다. 그렇다면 함수를 처음부터 안만들면 되는것 아닐까? 문제는 컴파일러가 자동으로 만드는 함수들에 있다. C++ 컴파일러는 클래스의 생성자, 파괴자, 대입연산자를 자동으로 생성한다. 이때, 그런 함수들을 일정 사용하지 못하게끔 하기 위해서 함수를 delete 시킨다. 1 2 3 4 5 ..
my.cnf MySQL 서버를 설정하기 위한 유일한 설정 파일 경로 리눅스 : /etc/my.cnf mysqld --verbose --help 명령어로 경로 확인 가능 (verbose와 help 옵션중 하나라도 제외하면 서버가 가동된다.) mysql --help 명령어로도 경로 확인 가능 (실수로라도 서버를 가동하지 않는다.) 윈도우 : /etc/my.ini MySQL 서버가 시작될때 참조하는 설정파일 서버 실행시, 지정된 여러 개의 디렉터리를 순차적으로 참조하다 처음 발견된 my.cnf 파일을 사용하게 된다. my.cnf 파일 경로 확인하기 위 그림을 보면 my.cnf 파일(또는 my.ini 파일)을 찾는 순서를 볼 수 있다. /etc/my.cnf /etc/mysql/my.cnf /usr/local/m..
자바스크립트가 제공하는 데이터 타입은 7가지이다. 숫자 문자열 불리언 null undefined 심벌 객체 타입 이 데이터 타입들은 크게 원시 타입(primitive type)과 객체 타입(object/reference type)으로 구분된다. 원시 타입과 객체 타입은 크게 세 가지 측면에서 다르다. 원시 타입(primitive type) 객체 타입(object/reference type) 변경 불가능한 값(immutable value) 변경 가능한 값(mutable value) 변수에 실제 값이 저장된다. 변수에 참조 값이 저장된다. 값에 의한 전달(pass by value) 참조에 의한 전달(pass by reference) 1. 원시 값(primitive type) 1.1 변경 불가능한 값(immu..
nodejs.org/ko/ Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다. Node.js는 이벤트 기반, 논블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다. Node.js는 서버로 주로 사용되지만, 그이외의 용도로도 사용이 가능하다. 1. 서버 Node.js를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있지만, node.js는 서버 어플리케이션을 실행하는데 주로 사용됩니다. 서버 : 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 or 프로그램 클라이언트 : 서버로 요청을 보내는 주체(ex : 브라우저, 어플리케이션, 또 다른 서버...) 우리가 웹서..
cc0textures.com/
이 책의 예제 프로그램들은 d3dUtil.h, d3dUtil.cpp, d3dApp.h, d3dApp.cpp 파일의 코드를 사용한다. d3dUtil 파일 : 유용한 편의용 코드가 포함됨 d3dApp 파일 : direct3D 예제 응용 프로그램을 캡슐화 하는데 스이는 핵심 Direct3D 응용 프로그램 클래스 코드가 들어 있다. Win32 프로그래밍 지식은 이미 있다고 가정한다. 이 프레임워크는 창 생성 코드와 Direct3D 초기화 코드를 숨기는것이 목적이다. 개요 본격적으로 분석하기에 앞서 프로젝트의 class diagram과 sequence diagram을 통해 클래스 관계와 실행 흐름에 대해 살펴보겠다. 1. Sequence Diagram InitDirect3D와 D3DApp의 관계를 눈여겨 볼만하다..
정확한 애니메이션의 수행을 위해선 인접한 두 프레임 사이에 흐른 시간의 양을 측정할 수 있어야 한다. 프레임률이 높은 경우 프레임간 경과 시간이 상당히 짧으므로, 정밀도가 높은 타이머를 사용할 필요가 있다. 1. 성능타이머 이 책의 예제들은 Windows가 제공하는 성능 타이머(performance timer)를 사용한다. 이를 성능 카운터(performance counter) 라고도 부른다. 성능 타이머를 조회하는 Win32 함수를 사용하려면 반드시 Windows.h를 포함시켜야 한다. 성능 타이머의 시간 측정 단위는 '지나간 클릭 틱(tick)들의 갯수(count)' 즉, 틱수 이다. 성능 타이머로부터 틱 수 단위의 현재 시간을 얻을 때에는 QueryPerformanceCounter 함수를 사용한다...
anglenara.kr/product/420-%EA%B2%BD%EB%9F%89%EC%95%B5%EA%B8%80-%ED%9A%8C%EC%83%89-%EA%B0%9C%EB%8B%B9-%ED%8C%90%EB%A7%A4/107/category/51/display/1/ 앵글나라 공식사이트 앵글,조립식앵글,철제선반,선반,조립식선반,스피드랙,중량랙,경량랙,경량앵글,중량앵글,셀프랙,파렛트랙 www.anglenara.kr www.youtube.com/watch?v=GMNAmdZwGFQ&ab_channel=tomthomas21 www.youtube.com/watch?v=9xhsdXZ_GrU&ab_channel=AgaYuditraStudio www.youtube.com/watch?v=Snbkv_mvt8Q&ab_channel..
이제 Direct3D를 초기화하는 구체적인 방법을 살펴본다. Direct3D의 초기화 과정은 꽤 길지만, 응용 프로그램 실행시 한 번만 해 주면 된다. 이 포스팅에서 다루는 Direct3D 초기화 과정은 다음과 같은 단계들로 구성된다. 1. Device 생성 2. Fence 객체 생성, 서술자들의 크기 확보 3. 4X MSAA 품질 수준 지원 여부 점검 4. command queue와 command allocator 그리고 command list를 생성한다. 5. 교환사슬을 서술하고 생성한다. 6. 응용 프로그램에 필요한 서술자 힙들을 생성한다. 7. 후면 버퍼의 크기를 설정하고, 후면 버퍼에 대한 렌더 대상 뷰를 생성한다. 8. 깊이$\cdot$스텐실 버퍼를 생성하고, 그와 연관된 깊이$\cdot$스텐..
Direct3D 12는 다중 스레드를 효율적으로 활용할 수 있도록 설계되었다. Command List의 설계는 Direct3D가 multi thread 적용의 장점을 취하는 한 방법이다. 물체가 많은 큰 장면을 다룰 때, 장면 전체를 하나의 명령 목록으로 그리려 한다면 Command list를 구축하는 데 시간(CPU 시간)이 오래 걸린다. 이에 대한 자명한 해결책은 여러 개의 command list을 병렬로 구축하는 것이다. 가령 thread 네개를 띄워서 각자 하나의 command list를 구축하데 하면, 전체적인 시간이 기존의 25%로 줄어든다. 다음은 Command list 구축에 다중 스레드를 적용할 때 주의해야 할 점 몇가지이다. 1. Command list는 자유 스레드(free-threa..
https://ssinyoung.tistory.com/40 자원 상태 전이 자원 위험 상황(resource hazard) GPU가 자원에 자료를 다 기록하지 않거나 기록을 시작하지 않은 상태에서 자원의 자료를 읽으려 하는 상황 ex) 한 단계에서 GPU가 자원 $R$에 data를 기록하고, 이후의 한 단계에서 그 자원 $R$의 자료를 읽어서 사용하려는데, 읽기전에 자원 $R$에 다른 data를 기록하려 할 경우 이를 해결하기 위해 Direct3D는 자원들에 상태를 부여함 어떤 리소스에 대해 특정 상태가 되기 전까진, 해당 리소스를 실행할 수 없게 만듬 자원 상태 모든 리소스는 하나의 상태(state)를 꼭 가저야 함 어떤 그래픽 명령이 특정 리소스를 사용해서 실행되기 위해선, 그 명령에 필요한 상태로 리..
www.slideshare.net/ImseongKang/ndc15-imseong-pdf
그래픽 프로그래밍에는 CPU와 GPU 2개의 장치(프로세서)가 작동한다. CPU : 로직제어 GPU : 화면표시 이들은 병렬로 작동하지만 동기화를 할 필요가 있다. 하지만 최적의 성능을 얻으려면 1. 최대한 둘다 바쁘게 돌아가야한다. 2. 동기화를 최소화 해야한다. 2가지 조건을 만족해야한다. 동기화는 한 처리 장치가 작업을 마칠 때까지 다른 한 처리 장치가 놀고 있어야 함을 의미하며, 따라서 성능에 바람직하지 않다. 즉, 동기화는 병렬성을 망친다. 1. 명령 대기열(Command Queue)과 명령 목록(Command List) GPU에는 명령 대기열(Command Queue)가 있고, CPU에는 명령 목록(Command List)가 있다. CPU는 그리기 명령들이 담긴 Command List를 Dir..
기능수준은 Direct3D 11에서 도입되었다. 코드에서 D3D_FEATURE_LEVEL 이라는 열거형으로 대표되는 이 기능 수준은 대략적으로 버전 9에서 11까지의 여러 Direct3D 버전들에 대응된다. typedef enum D3D_FEATURE_LEVEL { D3D_FEATURE_LEVEL_1_0_CORE, D3D_FEATURE_LEVEL_9_1, D3D_FEATURE_LEVEL_9_2, D3D_FEATURE_LEVEL_9_3, D3D_FEATURE_LEVEL_10_0, D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_11_1, D3D_FEATURE_LEVEL_12_0, D3D_FEATURE_LEVEL_12_1 } ; 기능 수준..
모니터의 픽셀들이 무한히 작지는 않기 때문에, 모니터 화면에 임의의 선을 완벽하게 나타내는것은 불가능하다. 선을 픽셀들의 배열로 근사할 때 생기는, 계단현상이라고도 하는 앨리어싱(aliasing)의 예가 아래그림에 나타난다. 위와같은 픽셀을 제거하기 위한 앨리어싱 제거(antialiasing) 기법들이 존재하며, 이를 통해 아래와 같은 개선된 효과를 얻을 수 있다. 여기서 소개하는 안티애얼리싱 기법은 총 2가지가 있다. 초과 표본화(supersampling) 후면 버퍼와 깊이 버퍼를 화면 해상도보다 4배(가로, 세로 2배씩) 크게 잡는다. 후면 버퍼에 렌더링하고, 이미지를 화면에 제시할 때 후면 버퍼를 원래 크기의 버퍼로 환원(resolving) 한다. 하향표준화(downsampling) 이라고도 하는 ..
자원 GPU가 data를 기록하거나 읽어들이는 대상 ex : back buffer, depth buffer, stencil buffer, 표면의 모습을 서술하는 texture, 장면안의 기하 구조의 3차원 위치들을 담는 버퍼... 렌더링 시 GPU의 주요 작업 자원들에 data를 write 자원들에서 data를 read 바인딩(Binding) 그리기 명령 제출 전, 해당 그리기 호출이 참조할 자원들을 렌더링 파이프에 묶는(bind)것 이를 가리켜 "자원을 파이프 라인에 연결(link)한다 또는 바인딩(binding)한다 라고 말하기도 한다. 그리기 호출마다 달라지는 자원도 있으며, 필요에 따라 그리기 호출마다 그런 자원들의 binding을 갱신해 주어야 한다. GPU 자원들이 직접 파이프 라인에 묶이는게..
깊이문제 해결하기 카메라는 자신에게 가까운 물체가 멀리있는 물체를 덮는 방식으로 풍경이 보이게된다. 이런 깊이문제를 해결하는 방법은 크게 2가지다. 1. 거리 순서대로 그리기 장면의 물체를 먼것에서 가까운것 순서로 그리는 것 단점 물체를 그리는 순서를 정렬해야 한다 맞물린형태를 제대로 처리하기 힘들다(ex : 두 물체가 꽈배기 형태로 꼬인 경우) 2. 깊이 버퍼링(Depth Buffering) 관찰자를 기준으로 물체들 간의 거리차로 인해 서로 가리는지 여부를 판정하는 기법 깊이 버퍼링을 쓰면 그리는 순서에 관계없이 물체들이 제대로 가려진다. 깊이 버퍼(Depth Buffer) 관찰자를 기준으로 buffer내의 각 element쪽으로 바라볼때 제일 앞에있는 물체 까지의 상대적인 거리를 저장한다. 각 픽셀의..
하나의 프레임 버퍼를 가지고 게임 화면을 표현하면 화면 깜빡임(Screen Flickering) 및 화면 찢어짐(Screen Tearing) 현상이 나타난다. 화면 깜빡임 : 버퍼를 지우고 그릴경우 발생 화면 찢어짐: 이미 그려진 화면 위에 덮어 쓸 경우 발생 더블 버퍼링(Double Buffering) 화면 깜빡임 및 찢어짐 현상을 피하고자 사용되는 방법 후면 버퍼(Back Buffer)와 전면 버퍼(Front Buffer) 2개의 프레임 버퍼의 교환을 통해 프레임 전환을 구현하는 기술 전면 버퍼 : 화면을 표현 후면 버퍼 : 다음 화면이 될 장면을 미리 저장 후면버퍼는 텍스처 이므로 그 원소를 텍셀(texel)이라 부르지만 여기서는 그냥 픽셀(pixel)이라 부름 shader input이나 rende..
2차원 텍스처 data element들의 행렬(2차원 배열) 텍셀(texel) : 텍스처의 원소 응용 이미지 자료의 저장 : 픽셀의 색상 픽셀(pixel) : 색상 정보를 저장하는 원소(정보를 담고만 있어도 픽셀이라 할때도 있다.) 법선 매핑 : 3차원 벡터 DXGI_FORMAT 이라는 열거형으로 지정된 특정 형식(format)의 자료 원소들만 담을 수 있음 정점 및 색인 자료 형식의 서술에 쓰임 data element format들을 나열하면 아래와 같음 docs.microsoft.com/en-us/windows/win32/api/dxgiformat/ne-dxgiformat-dxgi_format 위 열거형 자료가 뜻하는바는 아래와 같다. _FLOAT 실수, 32비트, 16비트 _SINT 2의 보수, 부..
COM $\bullet$ 정의 : 어떤 프로그램이나 시스템을 이루는 컴포넌트들이 상호 통신할 수 있도록 하는 메커니즘 $\bullet$ COM을 이용하면 DirectX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 할 수 있다. $\bullet$ COM 객체는 흔히 인터페이스라 부르지만, C++ 클래스로 간주해도 무방하므로 흔히 COM 객체라고 부른다. $\bullet$ C++로 DirectX 응용프로그램을 프로그래밍 할 때 COM의 세부사하은 대부분 프로그래머에게 드러나지 않는다. $\bullet$ 프로그래머가 알아야 할 것 -필요한 COM 인터페이스를 가리키는 포인터를 특별한 함수들을 이용해서, 또는 다른 COM 인터페이스의 메서드를 이용해서 얻는 방법 뿐이다. $\bullet$ COM 인터페이스..