목록분류 전체보기 (368)
민프
보호되어 있는 글입니다.
Blender 3D 구조 이해하기MESH (메시) - 3D 모델의 "껍데기"MESH = 3D 모델의 형태 (geometry)MESH = 점(Vertex) + 선(Edge) + 면(Face)예시: 사람 캐릭터사람 3D 모델├─ Body (MESH) ← 몸통의 형태 (삼각형들로 구성)├─ Head (MESH) ← 머리의 형태├─ Eyes (MESH) ← 눈의 형태├─ Hair (MESH) ← 머리카락의 형태└─ Clothes (MESH) ← 옷의 형태실제 데이터:Body (MESH)├─ Vertices (점들): [(0.5, 0.2, 1.0), (0.6, 0.3, 1.1), ...] # 수천 개├─ Edges (선들): [(0, 1), (1, 2), ...]├─ Fa..
보호되어 있는 글입니다.
Agentic Design Patterns: A Hands-On Guide to Building Intelligent "Systems" 도서에 대한 내용 입니다. AI Agent란?요즘 'AI Agent'라는 이야기가 많이 들리는데AI Agent란 무엇일까요? Google Cloud에서 정의한 AI Agent는 아래와 같습니다.AI 에이전트는 AI를 사용해 사용자를 대신하여 목표를 추구하고 태스크를 완료하는 소프트웨어 시스템입니다. AI 에이전트는 추론, 계획, 기억이 가능하며 일정 수준의 자율성을 갖고 의사 결정, 학습, 조정을 처리합니다.이러한 기능은 주로 생성형 AI와 AI 파운데이션 모델의 멀티모달 역량을 통해 가능해집니다. AI 에이전트는 텍스트, 음성, 동영상, 오디오, 코드와 같은 멀티모달 ..
저번 편에서는 CICD 자동배포를 제외한 나머지를 구축하였고,이번에는 아래에서 CICD 자동배포를 구현해보겠습니다.사용자/클라이언트 ↓ (HTTPS, 도메인)AWS Route53 (사전준비) ↓NCP L7 LoadBalancer (Public Subnet, SSL 종단) ↓Github Actions CICD 자동배포 ↓애플리케이션 서버 (Private Subnet, Docker Compose) 이번에 제가 구축할 CI/CD흐름은 아래와 같습니다.로컬 개발개발자가 로컬에서 코드를 수정하고 GitHub main 브랜치에 PUSHGitHub Actions (CI/CD)main 브랜치에 PUSH 이벤트 감지 → GitHub Actions 실행.GitHub Actions Runner가 Bastion..
개발자들이 MVP 제품을 위한 빠르게 개발하기 하려고 처음에 “Public Subnet + 공인 IP”로 인프라를 구축해놓는데 이후 고치지 않으면 보안에 취약인 것은 다들 알고계시죠? 상용 환경에서는 서버를 Private Subnet에 두고, 외부에는 LB만 노출하는 구조가 권장하고 있습니다.AWS에서는 해보았지만, NCP에서는 해본적이 없어서 간단하게 적용해보려고 합니다. 이번 글에서는 NCP 환경에서 Private Subnet 아키텍처를 적용한 과정을 공유합니다. 아키텍쳐 개요사용자/클라이언트 ↓ (HTTPS, 도메인)AWS Route53 (사전준비) ↓NCP L7 LoadBalancer (Public Subnet, SSL 종단) ↓CICD 자동배포 ↓애플리케이션 서버 (Private..
이전 포스팅에서는 BLoC 패턴에 대해 다뤄봤습니다.사내 프로젝트에서는 BLoC-Cubit을 적용해 보았는데, 확실히 러닝 커브가 BLoC 대비 낮아 다른 팀원들도 빠르게 적응하고 활용할 수 있었습니다. BLoC 패턴을 사용한 결론은 보일러 플레이트 코드가 존재하긴 하지만 대규모 프로젝트에서 유지보수성에는 큰 강점이 있을 것 같다.Cubit과 비교하면 초반에는 코드량이 많아 복잡하게 느껴질 수 있지만, 이벤트와 상태가 명확히 분리되어 있기 때문에 협업과 테스트, 장기적인 코드 관리 측면에서는 훨씬 유리하다.(그치만... 팀원들이 BLoC을 잘 이해하지 못하고 사용한다면 제앙이 시작될 것 같다.. 실제로 러닝커브가 있는 MVVM 패턴을 적용한 프로젝트에서 여러 개발자들이 거쳐간 곳은 거의 뭐.. 암호문..
회사에서 동료가 나에게 "이거 왜 이런 결과를 내주는거에요?" 라고 했을 때 AI에 대한 아키텍쳐를 비유를 들어가며 설명을 해줬었는데문득 아래와 같은 생각이 들었다. 인공지능의 Blackbox를 어떻게 쉽게 설명할 수 있을까...? 알아 보던중 블랙박스 모델을 해석하는 방법론이 있어서 알아보았다. 내가 알아본 방법론은 LIME, SHAP, VSW가 있고,사내 프로젝트에 대한 해석 방법론은 VSW를 택하여 진행하고 있다. 그 중 하나인 LIME을 먼저 소개해보려고 한다.0. Abstract머신러닝 모델은 점점 더 강력해지고 있지만, 그만큼 내부 구조를 이해하기 어려운 블랙박스가 되고 있습니다.특히 딥러닝이나 앙상블 모델 같은 경우는 높은 정확도를 보여주지만, "왜 이런 결과가 나왔는가?"를 설명하기가 어렵..
1. 들어가며백엔드 개발을 하다 보면 ORM(Object Relational Mapping)을 사용하게 됩니다.ORM은 객체지향 언어에서 데이터베이스를 다루기 쉽게 해주는데, 이 과정에서 가장 많이 언급되는 두 가지 패턴이 바로 Active Record 패턴과 Data Mapper 패턴입니다. NestJS에서 TypeORM을 사용할 때도 이 두 패턴을 이해하고 선택하는 것은 중요합니다. 이번 글에서는 두 패턴의 차이와 특징, 그리고 NestJS에서 어떤 식으로 활용할 수 있는지 정리해보겠습니다. 2. ORM과 TypeORM2-1. ORM(Object Relational Mapping) 이란?ORM은 객체지향 언어(클래스)와 관계형 데이터베이스(테이블) 사이의 불일치를 해결하기 위한 기술이고,즉, 테이블 ..
1. 서론 : 왜 Mapper를 고민하게 되었나?실무에서 API를 만들다 보면 이런 고민을 하게 되었습니다. 클라이언트 입장에서 같은 데이터(예: User 정보)를 받을 때마다 항상 동일한 형식으로 받아야 한다.그런데 API가 여러 개 있다 보니, 응답 안에 유저 정보가 들어갈 때마다 응답 포맷을 매번 새로 만들어야 하는 불편함이 생긴다.더 큰 문제는, 유저 정보에 새로운 필드(예: profile_image)가 추가되면,모든 API 응답 로직을 하나하나 다 수정해야 한다는 점이다.이런 문제를 해결하기 위해 저는 Mapper 패턴을 도입했습니다.Mapper는 Entity ↔ DTO 변환을 전담하는 계층으로, 덕분에 모든 API에서 일관된 리턴값을 보장할 수 있었습니다. 또한 NestJS에서는 Reposit..