-
QuickSort
Quick Sort는 Merge Sort와 비슷하게, 아래와 같이 분할 정복을 사용한다.Divide : 배열 A[p..r]을 A[p..q-1]과 A[q+1..r]로 나눈다.Conquer : 재귀를 이용해서 배열A[p..r]과 A[q+1..r]에 대해서 Quick Sort를 시행한다.Combine : 서브 배열들이 이미 정렬된 관계로 딱히 합칠 필요는 없다. 그리고 이는 아래와 같은 의사 코드로 표현해 낼 수 있다.// Let A -> matrix and p,r -> indexPartition(A, p, r) x = A[r] i = p-1 for j = p to r-1 if A[j] 대충 하나를 Pivot으로 잡아서 서브어레이를 만들어 내고, 정렬을 때린 다음 다시 서브 어레이를 돌린다고..
-
Relational Algebra
The relational algebra consists of a set of operations that take one or two relations as input and produce a new relation as their result."인풋으로 1 or 2개의 관계를 가지고 새 관계를 생성하는 것"을 관계 대수라고 한다.사실 DB를 직접적으로 조회/제어함에 있어서 Relational Algebra를 쓸 수 있는건 아니고, 단지 SQL 쿼리를 던지는 데 있어서 Relational Algebra가 폭넓게 사용되는 것 뿐이다. 쨋든 여러가지 Operation과 Relational Algebra에 대해 알아보자. Select Operationselect operation은 말 그대로 주어진 술..
-
Introduction to DB...
데이터베이스 시스템은 큰 용량의 정보를 안전하게 담는데 있어서 적합하게 설계되어 있고, 이러한 데이터베이스를 관리해 주는 프로그램을 Database-management System(DBMS)라고 한다. 대표적인 DB로는 Oracle, MySQL, Porstge, Mongo등이 있겠다. 참고로 Supabase나 Firebase는 BaaS의 축에 들어감으로 DB라 하기에는 조금 거시기한 감이 있다. 쨋든 데이터베이스 시스템은 고가치/고용량/다수에 의해 접근 가능한 정보들을 저장 및 관리하는데 사용된다. 대게는 (상대적으로 작은 데이터를 불러오고 업데이트 하는) 온라인 처리를 하거나, 데이터 분석에 있어서 사용된다. 여기서 문득 드는 생각. 그냥 데이터를 JSON이나 CSV같은 파일에 때려박으면 안되는 것인..
-
[Linux] Permission and Ownership
리눅스 시스템의 모든 파일과 디렉터리에는, Permission과 Ownership이 부여된다. 이때 파일 속성은 ls -l을 사용하여 확인 할 수 있다.- rw-rw-r-- 1 rainyk users 22665 Feb/6/2026 coludflare~~의 경우, 처음 글자는 파일 유형 -> rwxrwxrwx (read/write/execution) 권한 여부 -> 물리적 파일 -> 소유자명 -> 그룹명 -> 크기(바이트) -> 마지막 변경 시간 -> 파일 명 과 같이 해석할 수 있다. 이때 퍼일의 허가권이나 소유권을 설정하려면, chmod/chown/chgrp/umask등을 사용할 수 있겠다. 세부적으로 들어가자면.... 1) 소유권과 관련 명령어소유권은 임의의 파일 또는 디렉터리에 대해 사용자와 그룹..
-
전기산업기사 취득 후기
필자는 26년 1회차 필기시험에 응시했고, 26년 2회차 실기시험에 응시했다.솔직히 필기는 그러려니 하는데, 실기 공부할때는 힘도 들고 왜 해야하는지도 의문이 들어서(단순히 태양광 사업으로 인생을 날로 먹겠다는 망상에서 스타트한 시험이었다.) 대충 봤는데.... 물시험으로 나와서 붙었다.정작 다음에 뭘 해야 할지 모르겠다.국가자격증 시험이 늘 그렇지만 특정 점수를 넘기는 것 자체는 다회 시도하거나 공략만 하면 크게 문제될 소지는 없어 보인다.
-
Heapsort
일단 대충 요약하자면 Heapsort는 O(nlogn)의 시간복잡도를 자랑한다. 근데 그전에 Heap이 뭔지는 설명해야 할거 아닌가? Heap데이터 구조인 Heap은 거의 CBT로 볼수있는 array object라고 할 수 있겠다. 위 사진에서 볼 수 있듯 어떤 노드의 요소는 배열의 어떤 요소에 대응될 수 있을 것이다. 대충 배열 이름을 A라고 해보면, 트리의 루트는 A[1]이 될 것이고 이런식으로 치면 아래와 같이 PARENT/LEFT/RIGHT NODE를 구할 수 있을 것이다. Parent : [ i/2 ]Left : 2iRight : 2i + 1when i is 0>=. 그리고 Binary한 Heap에는 두가지 종류가 있는데, 하나는 max-heap이고 다른 하나는 min-heap이 되..
-
illumination and lighting
CG에서 조명은 빛과 물체간 상호작용을 처리하는 기술로, 일반적으로 local illumination과 global illumination 모델 두가지로 구분된다. local illumination은 광원으로부터 물체에 직접 들어오는 빛만을 고려하는데, 문제는 실세계의 모든 물체는 간접 조명을 받는다. 그러니까 예를 들어서, 광원이 안보여도 어디서 반사되서 들어온 빛이 들어올 수 있다는 것이다. 이걸 반영한게 global illumination이라고 할 수 있겠다. 근데 RTX 드립이 괜히 나온게 아닌게, global 조명 모델은 많은 연산을 필요로 한다. 광원만 때려서 계산하면 편한데, 반사되서 들어오는걸 언제 다 계산해야된단 말인가? 그리고 (일반적인 CUDA같이) GPU 구조는 지역 조명 모델에 보..
-
프래그먼트 처리와 출력 병합
.. 여튼 프래그먼트는 깊이, 노멀, 텍스쳐 좌표, RGB 색상등의 속성을 포함할 수 있게 된다. 이런 속성을 이용해서 각 프래그먼트의 최종 색상을 정하게 되는데 - 대표적으로 조명과 텍스처링이 이 과정이라고 할 수 있겠다. Texturing말 그대로 그림을 가져다가 붙이는 작업이다. 걍 물체의 표면 위에 이미지를 펴 바르는 방식인 셈이다. 그리고 이를 위해서 텍스처와 물체 표면간 대응 관계가 성립되게 한다. 다만 그냥 평범한 index를 쓰게 된다면 - 특정 텍스처에 폴리곤 메쉬가 종속되는 문제가 발생할 수 있을 것이다. 예를 들어서, 마인프래프트의 리소스팩이 16x16으로 고정된다면 고퀄리티의 리소스팩은 나오지 못할것이다. 이러한 문제를 해결하기 위해서 각 정점마다 정규화(Normalized)된 텍..