📝SCons
오픈 소스 소프트웨어 빌드 도구로 Python으로 작성되었으며, Python 스크립트를 사용해 빌드 파일을 정의합니다. 즉, 빌드 스크립트를 작성할 때 Python의 모든 기능을 사용할 수 있다는 뜻입니다. (C/C++, Python에서 자주 사용된다고 한다)
📝PL/SQL (Procedural Language/Structured Query Language)
CREATE OR REPLACE PROCEDURE UpdateSalary (emp_id IN NUMBER, new_salary IN NUMBER) IS
BEGIN
UPDATE employees
SET salary = new_salary
WHERE employee_id = emp_id;
END;
SQL의 기능에 더해, 조건문(IF, ELSE), 반복문(LOOP, WHILE), 변수 선언, 예외 처리 등의 절차적 제어 구조를 추가로 제공합니다. 이를 통해 복잡한 논리나 데이터 처리 작업을 보다 효율적으로 수행할 수 있습니다. PS라고도 부르는데 PS로만 구성되어있는 백엔드의 경우는 유지보수가 어렵습니다. → 추천하지 않고 적재적소로 활용 해야함
📝Direct3D
- Direct3D는 마이크로소프트가 개발한 3D 그래픽 API로, 주로 윈도우 운영 체제에서 사용됩니다.
- 이는 게임 개발과 실시간 3D 애플리케이션을 위한 고성능 그래픽 및 비디오 처리를 목표로 합니다.
- DirectX의 일부로 통합되어 있으며, Xbox 게임 콘솔에도 사용됩니다.
📝Vulkan
- Vulkan은 크로스 플랫폼 3D 그래픽 API로, OpenGL의 후속 제품으로 개발되었습니다.
- 이는 고성능 및 고수준의 하드웨어 제어를 제공하여 개발자가 GPU(그래픽 처리 장치)를 더 효과적으로 활용할 수 있게 돕습니다.
- Vulkan은 다양한 플랫폼(윈도우, 리눅스, 안드로이드 등)에서 사용할 수 있으며, 특히 게임과 같은 리소스를 많이 요구하는 애플리케이션에 적합합니다.
📝OpenGL
- OpenGL은 널리 사용되는 크로스 플랫폼 3D 그래픽 API입니다.
- 이는 1992년에 처음 출시되어 비디오 게임, CAD(컴퓨터 지원 설계), 가상 현실 등 다양한 분야에서 사용되었습니다.
- OpenGL은 고수준의 추상화를 제공하여 다양한 하드웨어와 운영 체제에서의 호환성을 유지합니다.
📝 DOD
데이터 지향 디자인 (Data-Oriented Design, DOD)은 데이터의 구조와 효율적인 데이터 처리에 중점을 두는 프로그래밍 패러다임입니다. 이 방식은 특히 게임 개발과 같은 성능이 중요한 응용 프로그램에서 유용합니다. DOD는 데이터를 메모리에 연속적으로 배치하여 CPU 캐시 활용을 최적화하고, 데이터 처리를 병렬화하기 쉽게 만듭니다
전통적 객체지향 설계
class Entity {
public:
float x, y; // 위치
float vx, vy; // 속도
void update(float dt) {
x += vx * dt;
y += vy * dt;
}
};
int main() {
std::vector<Entity> entities(1000);
float dt = 0.016; // 가정: 60 FPS에 해당하는 시간 간격
for (auto& e : entities) {
e.update(dt);
}
}
데이터 지향 설계
struct Position {
std::vector<float> x, y;
};
struct Velocity {
std::vector<float> vx, vy;
};
class EntityManager {
public:
Position position;
Velocity velocity;
void update(float dt) {
for (size_t i = 0; i < position.x.size(); ++i) {
position.x[i] += velocity.vx[i] * dt;
position.y[i] += velocity.vy[i] * dt;
}
}
};
int main() {
EntityManager manager;
manager.position.x.resize(1000);
manager.position.y.resize(1000);
manager.velocity.vx.resize(1000);
manager.velocity.vy.resize(1000);
float dt = 0.016; // 가정: 60 FPS에 해당하는 시간 간격
manager.update(dt);
}
📝BI (Brand Identity)
특정 브랜드의 개성과 정체성을 시각적, 상징적 요소로 표현하는 것을 의미합니다. 브랜드가 어떤 가치를 지향하는지, 소비자들에게 어떻게 인식되기를 원하는지를 보여주는 시각적, 감정적 요소의 집합체입니다.
- 스타벅스
- 녹색과 인어 로고는 커피와 편안한 라이프스타일을 상징.
- 나이키(Nike)
- 로고인 스우시(swoosh)는 스피드와 역동성을 시각적으로 표현.
📝CI (Company Identity)
기업 자체의 정체성을 나타내는 시각적, 상징적 요소들을 말합니다. 기업이 갖고 있는 철학, 미션, 비전과 같은 근본적인 가치를 표현하는 방법이며, BI와 달리 기업 전체를 대상으로 한다는 점에서 차이가 있습니다.
- 삼성
- 파란색 로고와 ‘Samsung’을 사용하여 세계적인 기술 혁신 기업으로의 이미지를 구축.
📝JIT(Just-In-Time),
프로그램 실행 시 실행 중에 필요한 부분만 즉시 컴파일하는 방식입니다. 한번 변환된 코드는 캐시되어, 같은 부분이 다시 호출될 때는 재컴파일 없이 빠르게 실행됩니다. JIT 컴파일은 프로그램이 실행되는 동안 동적으로 이루어지며, 성능 최적화를 위해 실행 시간에 따라 코드의 특정 부분을 최적화할 수 있습니다.
💗장점
- 초기 실행 속도가 빠름
- 필요한 부분만 실행 즉시 컴파일하므로 프로그램을 빨리 시작할 수 있습니다.
⚠️단점
- 초기 실행 속도가 느려질 수 있음
- 실행 중간에 컴파일 작업이 추가되므로 일부 작업에서 오버헤드가 발생할 수 있습니다.
📝 AOT(Ahead-Of-Time)
실행하기 전에 미리 기계어로 변환하여 실행하는 방식입니다. JIT와는 반대로, 컴파일 과정이 실행 전에 완료됩니다. 정적인 데이터에 처리하기 좋습니다.
💗장점
- 코드가 미리 컴파일되어 있어 메모리 효율성이 높아질 수 있습니다.
- 실행 전에 모든 컴파일이 완료되기 때문에, 실행 시간 동안 성능이 매우 빠릅니다.
- 런타임전에 버그가 있으면 잡아낼 수 있습니다.
⚠️단점
- 컴파일된 코드는 실행 환경의 변화에 적응하지 못하기 때문에 JIT처럼 동적인 최적화는 어렵습니다.
📝 HashCode
객체를 고유하게 식별하기 위해 사용하는 숫자 값을 의미합니다. 주소값이 아닌 실제 객체의 값을 의미합니다.
'[CS 지식]' 카테고리의 다른 글
[CS 지식] 고가용성, 온프레미스, 거버넌스, 데이터 파편화, Materialized View, 티어드 스토리지 (Tiered Storage), 카프카 미러메이커, 멱등성 (0) | 2024.07.16 |
---|---|
[CS 지식] HTTP1.1, HTTP2.0, RPC, RPC vs REST API, GRPC (0) | 2024.06.19 |
[CS 지식] MVC, MVP, MVVM, 단방향 데이터 바인딩, 양방향 데이터 바인딩 (1) | 2024.06.07 |
[CS 지식] CommonJS, ECMAScript, Flux 패턴 (0) | 2024.04.01 |
[CS 지식] 이미지 확장자 형식 (JPG, JPEG, GIF, PNG, SVG, WebP, Avif) (0) | 2024.03.25 |