Archive. NVIDIA Physical AI 생태계 정리 노트

최근 NVIDIA의 피지컬 AI 생태계를 접할 기회가 있었는데, Omniverse, Isaac Sim, Cosmos, GR00T처럼 처음 보는 용어가 한꺼번에 등장해서 각각이 어떤 역할을 하는지 궁금해졌다. 조금 찾아보니 개별 기술을 각각 봐서 이해하긴 어렵고, 전체 구조를 보면서 어떤 역할을 하는지 이해하는 것이 중요하다는 생각이 들었다. 그래서 나중에 다시 봐도 흐름을 빠르게 떠올릴 수 있도록 핵심 개념을 간단히 정리했다. 피지컬 AI 현실 세계를 인식 → 판단 → 물리적으로 행동하는 AI 시스템 전체를 의미한다. 디지털 AI와 달리 센서 불확실성, 실시간 제어, 물리 상호작용이 핵심 난이도다. (현직자도 단순히 소프트웨어로 처리하는 것 만으로는 충분하지 않다고 했다.) ...

February 6, 2026

Algorithm. Kadane's Algorithm

소개 1차원 배열이 주어졌을 때, 연속된 구간의 최대 합을 구하는 알고리즘을 카데인 알고리즘이라고 한다. 예를 들어 다음 배열이 있다면, [-2, 1, -3, 4, -1, 2, 1, -5, 4] 연속된 구간 [4, -1, 2, 1]의 합인 6이 가장 크다. 카데인 알고리즘은 앞에서 계산한 결과를 재활용하여 배열을 한 번만 순회한다. 따라서 시간 복잡도 O(n), 공간 복잡도 O(1)로 문제를 해결할 수 있다. 아이디어 현재 원소에서 끝나는 연속 구간의 최대 합을 유지하고 다음 원소를 만났을 때 기존 구간을 이어가는 것과 현재 원소부터 새로운 구간을 시작하는 것 중 더 큰 값을 선택한다. ...

November 25, 2025

Docker. 이미지 Build하고 Push하기

사전준비하기 & Docker Hub Docker Hub Docker 이미지를 공유하기 위해서는 이미지를 저장할 공간이 필요하고, 이 때 Docker Hub가 이미지 저장소로 사용된다. 다른 사람들이 올린 이미지를 검색하여 실행하거나 자신의 이미지를 기반으로 사용할 수 있는 공간을 제공한다. 컨테이너 이미지 컨테이너 이미지는 애플리케이션을 실행하기 위한 파일, config, 종속성을 모두 포함한 표준화된 패키지이다. 이미지를 배포하면 다른 사람과 공유할 수 있다. Docker Hub에 이미지 푸시하기 GitHub가 소스 코드를 저장하는 것처럼 Docker Hub는 컨테이너 이미지를 저장한다. ...

October 9, 2025

Docker. 내 애플리케이션 Dockerizing 하기

0. 기반 파일 https://github.com/nice-card/express-example 1. 프로젝트 위치 확인 현재 경로를 프로젝트 경로로 설정하고 확인하기 2. Dockerfile, .dockerignore 추가 프로젝트 루트에 Dockerfile을 새로 만들기. Dockerfile 프로젝트 루트에 만들기. # === build stage === FROM node:20-alpine AS build WORKDIR /app COPY package*.json ./ RUN npm ci # dev 포함 (tsc 사용) COPY . . RUN npm run build # dist/ 생성 # === runtime stage === FROM node:20-alpine WORKDIR /app ENV NODE_ENV=production COPY package*.json ./ RUN npm ci --omit=dev # 런타임에 필요한 것만 # 빌드 결과만 가져오기 COPY --from=build /app/dist ./dist EXPOSE 3000 CMD ["npm", "start"] # package.json의 "start": "node dist/index.js" .dockerignore 불필요한 파일이 이미지에 안 들어가게 막는 용도 ...

October 9, 2025

Docker. Dockerfile 작성하기

컨테이너를 실행하려면 먼저 이미지가 필요하고, 이미지는 Dockerfile이라는 파일을 통해 생성한다. 예제 Dockerfile을 기준으로 각 명령어가 어떤 역할을 하는지 살펴본다. Dockerfile 구조 살펴보기 먼저 예제 Dockerfile을 보자. FROM python:3.13 WORKDIR /usr/local/app # Install the application dependencies COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # Copy in the source code COPY src ./src EXPOSE 8080 # Setup an app user so the container doesn't run as the root user RUN useradd app USER app CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"] 이제 위 Dockerfile을 한 줄씩 살펴보자. ...

October 9, 2025

Node. TypeScript 프로젝트 초기화하기

새로운 노드 프로젝트 생성하기 npm 초기화부터 npm init -y Node 프로젝트를 초기화한다. 이 명령을 실행하면 현재 디렉터리에 package.json 파일이 생성되고, Node와 npm은 이를 기준으로 프로젝트를 관리한다. npm install npm install -D typescript tsx @types/node @types/express npm install: 필요한 패키지를 설치하는 명령이다. 뒤에 패키지 이름을 지정하면 해당 패키지를 설치하고, package.json에도 자동으로 기록한다. -D: --save-dev의 약자이다. 개발 과정에서만 사용하는 패키지를 devDependencies에 추가한다. TypeScript처럼 빌드 과정에서만 필요한 도구들이 여기에 해당한다. 패키지 typescript: TS 컴파일러 (tsc 명령어 제공) tsx: TS 파일을 빌드 없이 바로 실행하게 해주는 도구 (dev 서버용) @types/node: Node.js의 타입 정의 @types/express: Express 라이브러리의 타입 정의 Note. ...

October 8, 2025

Docker. 컨테이너와 이미지

컨테이너 애플리케이션의 구성 요소(프론트엔드, API, DB 등)을 각각 격리된 프로세스로 실행하는 환경. 특징 호스트의 어떤 환경에도 의존하지 않고, 필요한 라이브러리와 설정을 모두 포함한 독립된 환경으로 존재한다. 서로 다른 컨테이너는 격리되어 있어서 하나가 망가져도 다른 컨테이너에 영향을 주지 않는다. 컨테이너 vs. VM VM은 자체 커널, 드라이버, 프로그램을 갖춘 완전한 운영체제이기 때문에, 단일 애플리케이션을 분리하기 위해 VM을 사용하는 것은 오버헤드가 크다. 컨테이너는 실행에 필요한 모든 파일을 갖춘 고립된 프로세스이다. 여러 컨테이너를 실행하더라도 모두 동일한 커널을 공유하므로, 더 적은 인프라에서 많은 애플리케이션을 실행할 수 있다. ...

October 8, 2025

Docker. Docker 시작하기

Docker 애플리케이션 개발, 배포 및 실행을 위한 개방형 플랫폼 특징 Note. 컨테이너는 개발 환경 자체가 아니라 애플리케이션를 실행하는 격리된 프로세스다. 일반적으로 개발은 호스트 환경에서 이루어지고, 컨테이너는 실행 및 테스트 환경으로 사용된다. -> 그런데 vscode에서 쓰는 dev container는…? 컨테이너를 사용한 앱 개발 Docker 컨테이너 안에서 앱을 띄우기 때문에 “환경이 달라서 동작하지 않는다”와 같은 문제 해결 ex. Node, Python, MySQL같은 것을 도커로 묶어서 개발 컨테이너는 완전한 실행 단위 컨테이너 하나는 완전한 실행 단위이기 때문에 QA, 테스트, CI/CD 환경에서 그대로 사용 같은 이미지 → 같은 코드, 같은 환경 → 어디서든 일관된 실행이 가능하다. 애플리케이션을 컨테이너 형태로 배포 클라우드나 로컬 서버로 그대로 옮겨서 실행하면 된다. 수명 주기 관리 build, run, stop, rm, push 모든 것을 Docker가 명령어 단위로 관리해준다. 반응형 배포 및 확장 Docker는 어디서나 똑같이 돌고, 원하면 즉시 늘리거나 줄일 수 있다. ...

October 8, 2025

Docker. Docker Desktop 실습해보기

설치하기 공식 문서에 설치 가이드 설명 잘 되어있으니 알아서… 첫 번째 컨테이너 실행하기 docker run -d -p 8080:80 docker/welcome-to-docker http://localhost:8080 에서 이 컨테이너의 프론트엔드 방문 가능. Docker Desktop 사용해보기 컨테이너 탭 Logs — docker logs <container-name> 컨테이너 내부에서 실행 중인 프로세스의 표준 출력을 그대로 보여줌. 디버깅할 때 많이 사용하는 부분 Inspect — docker inspect <container-name> 컨테이너의 환경 변수, 포트 바인딩, 실행 명령, 마운트 경로, 네트워크, 상태 등 메타데이터를 JSON으로 보여줌 Bind mounts 로컬 호스트와 컨테이너 사이의 폴더 연결 정보를 보여줌 ex) -v ~/project:/app → 내 컴퓨터의 ~/project 폴더가 컨테이너 내부 /app에 연결됨. 로컬 파일 수정 시 컨테이너에 즉시 반영되기 때문에 개발할 때 자주 사용 Exec — docker exec -it <container-name> 실행 중인 컨테이너 내부에 직접 명령어를 입력할 수 있는 쉘 세션을 엶. 컨테이너 내부 구조 탐색, 빠른 테스트, 수동 디버깅에 사용 Files — docker cp, docker exec ls 컨테이너 내부의 파일 시스템 탐색 호스트 ↔ 컨테이너 간 파일을 복사할 수 있음 Stats: docker stats <container-name> 컨테이너의 실시간 리소스 사용량(CPU, 메모리, 네트워크, I/O) 등을 모니터링 성능 문제나 리소스 병목을 추적할 때 사용 여러 컨테이너 동시 모니터링 가능 직접 컨테이너를 사용해서 개발해보기 0. 프로젝트 클론 우선 Docker에서 제공하는 예제 앱 가져오기 ...

October 8, 2025

JavaScript. 모듈 시스템

프로젝트가 커질수록 모든 코드를 하나의 파일에 작성하기는 어렵다. 그래서 JavaScript는 기능별로 코드를 여러 파일로 나누어 관리하며, 각각의 파일을 모듈(Module)이라고 한다. 모듈 시스템은 이러한 모듈을 다른 파일에서 가져오고 내보내는 방법을 정의한다. 주요 모듈 시스템 CommonJS (CJS) CommonJS는 Node.js 초창기부터 사용된 모듈 시스템이다. require로 다른 모듈을 가져오고, module.exports로 외부에 공개할 값을 내보낸다. // math.js function add(a, b) { return a + b; } module.exports = { add }; // main.js const math = require('./math'); console.log(math.add(2, 3)); 위 예시에서 module.exports는 add 함수를 다른 파일에서도 사용할 수 있도록 내보낸다. main.js에서는 require를 통해 해당 모듈을 가져와 math.add()를 호출한다. ...

October 7, 2025