본문 바로가기

개발24

OpenGL & C++ - 셰이더 컴파일에러 잡다가 CS 공부 왕창한 썰 예전 블로그에서 옮겨온 글입니다. 저 OpenGL도 꽤 열심히 했네요... 0(1) : error c0000: syntax error, $undefined at token "" 평화롭게 Learn OpenGL의 Basic Lighting 튜토리얼을 따라하고 있던 나는, 셰이더를 컴파일하던 도중 뜻밖의 문제와 마주치게 된다. 바로 위의 c0000 shader compilation error였다! 잠깐, 사전설명을 하고 가자면, OpenGL에서 점과 면을 처리하는 셰이더(shader)는 C++로 구현하는 것이 아니라, GLSL이라는 OpenGL 전용 소스코드에 구현해서 C++에서 이를 읽은 다음 추상화해서 사용한다. 따라서 셰이더 GLSL 소스를 작성 후에 C++ 소스에서 이를 런타임에 컴파일하는 와중에 에.. 2022. 9. 13.
C++/CMake 복잡한 패키지 구조를 위한 CMakeLists.txt 작성법 예전 블로그에서 옮겨온 글입니다. 지금은 두 번째 회사를 다닌지 2년이 다 되어가네요... 감개무량 회사를 다닌지 6개월, 제일 많이 성장한 부분은 패키징, 또는 아키텍처 설계다. Python은 무적의 import로 어떤 폴더에 있는 어떤 코드의 어떤 모듈, 어떤 클래스, 어떤 메소드도 불러올 수 있지만, C++은 그게 아니라서 공부 초반에 고생을 했던 기억이 있다. 사실 지금도 초반이다...ㅠ 최근 들어 가장 고생한건, CMake를 여러 계층으로 패키징된 라이브러리에 적용하는 것이었다. GNU make를 쓸 때는 폴더 이름을 그냥 쓰면 되는 것이었는데, 도대체 튜토리얼들에서 얘기하듯이 그냥 CMakeLists.txt를 폴더에 만들어주기만 하는 것만으로는 빌드가 되지 않는 것이다;; 이 문제점을 해결하기.. 2022. 9. 13.
일급객체란? https://blog.hexabrain.net/347 일급객체란, 다른 객체들에서 일반적으로 쓰는 연산을 지원하는 객체를 말합니다. 따라서 일급객체는 다른 객체에 인자로 넘겨지거나 반환값으로 사용될 수 있으며, 파이썬의 함수는 일급객체, 즉 일급함수로 사용됩니다. 객체 안에 다른 객체가 정의될 때 지역변수가 선언되면 전역으론 쓸 수가 없습니다. def func1(arg1): global arg2 return arg1 + arg2 arg2 = 1 print(func1(2)) # 3 지역에서 선언된 변수를 전역에서 쓰려면 위처럼 global을 선언해야 하는데, 당연히 어떻게 정의됐는지 불분명한 변수를 코드 스코프 전체에서 쓰면 불안정합니다. 이를 해결하기 위해 클로저를 쓸 수 있습니다. 클로저란, 반환값으.. 2022. 9. 13.
NumPy & Pandas 자주 쓰는 문법 요약 빅데이터분석기사 실기 시험을 준비하면서, NumPy와 Pandas에서 자주 쓰는 문법들을 요약해 외우고자 cheatsheet처럼 정리해보았습니다. 문법과 그에 따른 결과를 최대한 한 줄로 보기 쉽게 만들었습니다. NumPy import numpy as np a1 = np.array([[1, 2, 3], [4, 5, 6]]) print(a1) # [[1 2 3] [4 5 6]] print(a1.shape) # (2, 3) print(a1.ndim) # 2 ## Array a2 = np.arange(1, 20, 3) # [1 4 7 10 13 16 19] a3 = np.zeros((2, 3)) # [[0. 0. 0.] [0. 0. 0.]] a4 = np.ones((3, 2)) # [[1. 1.] [1. 1... 2022. 9. 13.
Flask 블로그 제작기 (6) - 검색 기능 플라스크로 서비스되던 구버전 블로그에서 옮겨왔습니다. 검색(search)과 정렬(sort)은 알고리즘계의 양대산맥입니다. 자료구조에 따라 다양한 방식으로 검색과 정렬을 구현할 수 있지만, 그 때 그 때마다 메모리적으로나 시간적으로 적합한 알고리즘은 따로 있죠. 이 블로그와 같은 플라스크 블로그에서도 1) 직접 검색 알고리즘을 데이터베이스 상대로 구현하거나, 2) 처음부터 Elasticsearch같은 검색 전문 데이터베이스에 데이터를 저장하는 등 복잡한 방법들이 있겠지만, 사실 가장 쉬운 방법은 RDBMS에 LIKE SQL 쿼리를 날리는 방법입니다. 한 번 쉽게 구현해보도록 합시다. HTML view 일단 html 부분입니다. 저는 블로그 랜딩 페이지에서만 검색 기능이 있으면 충분하다고 생각해서 templ.. 2022. 9. 13.