목록Categories (1099)
KoreanFoodie's Study
부자가 될 수 있는 '진짜 방법'에 대해 알려드립니다 : 부의 추월차선 사실 이책은 정말 정말 유명한 책으로, 나는 이 책을 군대에서 처음 접하게 되었다. 사실 그당시에는 표지를 보고 '뭔가 사짜같은 이야기를 하는 걸까?' '여타 자기계발서처럼 뻔한 이야기를 써놓은거 아니야?' 같은 지레짐작과 함께 책을 펼쳐보지도 않았었다. 하지만 시간이 지나 이 이책을 읽고 난 후로, 내 인생은 상당히 많이 바뀌었다.(수정 : 바뀔 것이라고 생각했지만, 현 시점에서 보면 크게 달라지지 않았다) 부의 추월차선은 부자가 되길 원하지만 마음가짐과 방법론에 대해 어려움을 겪는 사람들이 꼭 읽어봤으면 하는 책이라고 생각한다. 최근에는 자청 추천도서로도 알려져 있는 듯하다. 자세한 내용을 이야기하기 전에, 많은 사람들이 표지만 ..
DirectX 11 2D 게임 프로그래밍 - 10. 행렬을 이용한 공간 생성(view, projection) D3DXMATRIX를 활용한 공간 생성 - D3DXMATRIX는 총 16개의 float형 데이터로 구성되어 있다. (정의 확인) - 행렬은 항상 단위행렬로 초기화해야 한다. (D3DXIdentityMatrix 함수) - 공간이 커지거나 이동하면 내부의 데이터도 동일하게 변형된다. (위치나 벡터 데이터 크기) Projection 알아보기 - 원근투영은 절두체 모양의 시야 공간을 가진다 - 직교투영은 직육면체 모양의 시야 공간을 가진다 단축키 - 영역 지정 후 Ctrl + H 단축키를 누르면 해당 범위의 특정 단어들을 바꿀 수 있다. (Alt + A 누르면 모두 바뀜) 좌표계 - OpenGL : RH..
DirectX 11 2D 게임 프로그래밍 - 9. Index Buffer & 공간 변환 Index Buffer 만들고 세팅하기 : 중복되는 정점을 제거하기 위해 사용한다. 공간이란 무엇인가? : 공간은 행렬로 표현됨. Local - World - View - Projection 순으로 흘러감. 이때 Projection은 3D 데이터를 2D 데이터로 변환시키는 작업임. (더 자세한 내용은 주석으로) 참고 : Index Buffer를 활용해 원 그려보기 index buffer : 요즘은 4바이트, index는 unsinged int 형. 중복 정점을 줄이기 위해 사용. D3D11_USAGE_IMMUTABLE : GPU - Read, CPU - 접근 불가 Execute.cpp 지난 글에서 삼각형 2개를 이용해..
DirectX 11 2D 게임 프로그래밍 - 8. Pixel Shader Stage & 도형 그리기 Rasterizer : 3D 데이터를 2D 데이터로 바꿔주는 것. VS 단계에서 정규화한 공간을 다시 보여줄 영역만큼 다시 늘려준다. 또한 Pixel Shader 단계로 넘어갈 픽셀들을 지정해준다. PixelShader 생성과 연결 : SV_Target 시멘틱을 사용하여 현재 세팅된 메인렌더 타깃을 사용하라고 알려주어야 한다. 화면에 픽셀 단위로 생상을 출력하는데, Pixel Shader는 Rasterizer가 지정한 픽셀 개수만큼 호출된다. 사각형 만들기 : 사각형을 만들기 위해서는 정점 6개가 필요하다. 왜냐하면 삼각형 2개를 붙여 만드는 형태이기 때문! 여러 줄 동시에 편집하기 : Shift + Al..
DirectX 11 2D 게임 프로그래밍 - 7. Vertex Shader Stage 이번 글에서는 hlsl을 이용해 간단한 Vertex Shaer를 만드는 실습을 해 보도록 하겠다. HLSL은 High Level Shader Language로, 예전에 어셈블리어로 만들던 것을 더 사람이 보기 쉽게 표현한 언어라고 보면 된다. 프로젝트에 HLSl탭으로 생성한 후, 프로젝트에서 제외시켜서 사용한다. (컴파일에 용이) 알아두어야 할 개념 : 1. Semantic : Semantic은 데이터의 출처와 역할에 대한 분명한 의미를 부여하기 위한 키워드이다. Color.hlsl struct VertexInput { // float4는 vector4와 같음 // Semantic : 데이터의 출처와 역할에 대한 분명한..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 19. 트랜잭션 모드와 락 은행 시스템 같은 극도의 정밀성을 요구하는 작업의 경우, 속도보다 무결성이 더욱 중요할 수 있다. 트랜잭션은 DML 쿼리들을 모아 원자성(한꺼번에 실행되거나, 아니면 아예 실행되지 않거나), 일관성, 격리성, 영속성을 보장하는 명령의 묶음이다. 트랜잭션은 실행되면 먼저 임시 작업 영역에 데이터를 저장한 후, 커밋을 하면 실제 데이터베이스에 저장되는 식으로 작동하여 안전하다. 모드는 흔히 자동 커밋(Auto Commit)모드와 수동 커밋(Manual Commit Mode)가 있는데, SQL Server와 MariaDB는 자동, 오라클과 DB2는 수동이 디폴트이..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 18. 트리거(무결성, BEFORE/AFTER, 다중, 중첩, DLL) 트리거는 특정 사건이 발생했을 때 자동으로 호출되는 코드로, 직접 호출할 수 없으며 일정한 조건이 되면 자동으로 호출된다. 시스템이 호출하므로 인수를 전달할 수 없고 리턴값도 반환할 수 없다. 주로 테이블이나 데이터베이스에 변화가 발생할 때 실행할 코드를 트리거로 정의한다. 정의는 다음과 같다. CREATE [OR REPLACE] TRIGGER 트리거이름 BEFORE | AFTER | INSTEAD OF INSERT OR UPDATE OR DELETE [OF 컬럼] ON 테이블명 [FOR EACH ROW] BEGI..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 17. 커서와 동적쿼리 커서는 결과셋을 한 행씩 순회할 수 있다. 결과셋을 순회하려면 서버는 결과셋을 메모리에 저장해 두고 커서를 통해 한 줄씩 읽는다. 이런 처리를 하려면 내부적인 준비가 필요하고 다 사용한 후 정리도 해야 한다. 커서를 생성하고 사용하는 절차는 정형화되어 있다. 1. 어떤 결과셋을 순회할 것인지 커서를 정의 : CURSOR 커서 이름 IS SELECT... 2. OPEN 명령으로 커서를 연다. SELECT 문을 실행하여 결과셋을 만들고 커서를 첫 행 이전에 위치시켜 순회 준비를 한다. 3. FETCH 명령으로 다음 행을 읽어 변수에 대입하고 읽은 값으로 원하는 처리..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 16. 저장 프로시저, 인수, 함수 SQL 명령 열개를 모으면 코드가 되며, 이를 텍스트로 저장하면 스크리트, 서버에 저장하면 저장 프로시져가 된다. 형식은 다음과 같다. CREATE [OR REPLACE] PROCEDURE 이름(인수 목록) AS 또는 IS 변수선언 BEGIN 본체 END [이름]; 모든 DB오브젝트는 고유한 이름을 가져야 한다. 또한 프로시져를 Ctrl + Enter로 실행할 때는 코드 블락을 선택해서 실행하는 것이 안전하다. 추후 수정을 용이하게 하기 위해 OR REPLACE를 붙여 주는 것이 좋다. 프로시저 정의문은 항상 단독으로 실행하는 게 좋으며, 전역적으로..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 15. PL/SQL 제어문 (IF, LOOP...), 예외처리(EXCEPTION, RAISE) -- 다음 선언문으로 출력문을 쓰겠다는 선언부터 해야 한다. -- DBMS_OUTPUT.PUT_LINE(출력할 내용) 을 사용할 수 있게 함 SET SERVEROUTPUT ON; BEGIN DBMS_OUTPUT.PUT_LINE('안녕하세요'); END; BEGIN DBMS_OUTPUT.PUT_LINE('안녕하세요') END BEGIN DBMS_OUTPUT.PUT_LINE(2 + 3 * 4); DBMS_OUTPUT.PUT_LINE(POWER(2, 3)); END; -- DECLARE 문 안에 ..