🌏 AIGOYA란?✅ 프로젝트 개요AIGOYA는 AI 개발에서 발생하는 비효율성을 해결하기 위한 AI 개발 생산성 플랫폼입니다. AI 개발 과정에서 반복되는 전처리, 모델 정의, 학습, 시각화, 평가 등을 프리셋 모듈로 제공하며, 자체 웹 기반 IDE에서 GUI를 활용한 drag-and-drop 개발 환경을 지원합니다. 또한 사용자가 쿠버네티스 기반 클라우드에서 독립된 OS을 점유 사용할 수 있도록 하여, 개발 환경을 손쉽게 구축할 수 있습니다. 부가적으로는 학습 파라미터, 코드 버전, 결과를 함께 저장 관리할 수 있어 프로젝트 추적이 용이하고, 코드 모듈을 공유하고 자신만의 AI 개발자 포트폴리오를 구성할 수 있는 커뮤니티 기능을 제공합니다.해당 프로젝트는 2024년 4월 시작되었으며, 인공지능융합사..
분류 전체보기
웹에서 3D 그래픽을 그리려고 WebGL을 써보려고 하면, “셰이더가 뭐지?”, “버퍼는 왜 써야 하지?” 같은 질문부터 들게 됩니다.이 글에서는 WebGL 셰이더(Shader)에 대해 다룹니다.🌏 Shader✅ WebGL은 Low Level APIWebGL은 GPU를 직접 제어할 수 있게 해주는 API의 구현체입니다. 다양한 구현 방식 중에 WebGL은 Low-Level API라서, 우리가 GPU에게 모든 걸 직접 지시해야 하는 방식입니다.예를 들어서, "삼각형을 이렇게 이렇게 그려줘!" 라고 명령하기 위해서는 내가 그리고 싶은 삼각형을 화면 상에 어떤 점에 세 가지 꼭지점을 표시하고 각 픽셀을 어떤 색으로 칠할 지 일일이 명령해야 합니다. (추가로, 각 꼭짓점을 GPU에 전송하고 연결, 렌더링 방식..
🌏 인트로서비스를 개발할 때 종종 마주하게 되는 문제 중 하나는 외부 API 호출과 데이터 저장을 어떻게 함께 처리할 것인가이다. 특히 LLM이나 외부 시스템과의 연동은 언제든지 실패하거나, 지연될 수 있는 잠재적 위험을 내포한다. 내 애플리케이션을 아무리 잘 만들더라도, 외부 서버가 다운 되어있거나, 데이터의 형식이 변경된다던가 무튼 아무리 내가 잘 개발하더라도 언제든 호출이 제대로 되지 않을 수 있다는 말이다.이번 글에서는 Kotlin + Spring Boot 환경에서, LLM 응답 처리와 DB 저장을 분리하여 트랜잭션을 효율적으로 관리한 경험을 소개하려고 한다.🌏 문제 상황: 모든 처리를 트랜잭션으로 묶은 경우@Transactionalfun processAllAtOnce(input: Input)..
🌏 WebGL: Canvas, Viewport, 그리고 렌더링까지WebGL을 처음 접하면 가장 먼저 만나는 개념은 canvas, gl, 그리고 render() 함수다. 이 글에서는 처음으로 WebGL로 그래픽을 그릴 때 꼭 이해해야 하는 요소들을 하나하나 짚어보며, 실제로 어떻게 동작하는지도 함께 알아보자.✅ HTML Canvas: 픽셀을 담는 공간HTML5에서 제공하는 요소는 브라우저 안에서 그림을 그릴 수 있는 공간을 제공한다. 이 공간은 비트맵 형식의 2D 또는 3D 그래픽을 표현할 수 있다.자바스크립트로 접근할 수 있으며, 이렇게 사용할 수 있다:const canvas = document.getElementById('myCanvas');canvas.width, canvas.height: 캔버스..
🌏 차등 프라이버시 (ε-Differential Privacy)데이터셋 D=(x1,x2,…,xn) 이 있고, 이로부터 어떤 통계값 f(D)를 공개하고 싶다고 가정합니다. 그런데 직접 f(D)f(D)를 공개하면 개인정보가 유출될 수 있기 때문에, 노이즈를 섞는 방법(무작위화, randomization)을 사용합니다.✅ Neighboring datasetD와 D′는 단 한 사람의 데이터만 다른 데이터셋이라고 가정합니다. 아래와 같이 n번 데이터 하나만 다르고 1~n-1 의 데이터는 모두 같습니다.이 둘을 neighboring datasets라고 부릅니다.✅ DP의 수식적 정의어떤 메커니즘 M이 다음을 만족하면, 이를 ε-차등 프라이버시라고 부릅니다. ε은 프라이버시 손실 허용 정도를 의미하는 파라미터입니다..

🌏 Reconstruction Attack데이터 프라이버시의 보장은 오늘날 데이터 기반 시스템에서 가장 중요한 이슈 중 하나입니다. 그중에서도 재구성 공격(Reconstruction Attack)은 개인 데이터를 보호하는 데 있어 심각한 위협이 됩니다.이번 글에서는 이러한 재구성 공격이 어떻게 이루어지는지, 그리고 이를 막기 위해 랜덤성을 활용한 기법이 어떻게 작동하는지를 수학적으로 자세히 살펴보겠습니다.✅ Reconstruction Attack(재구성 공격)이란?개인 정보가 담긴 데이터를 그대로 공개하면 심각한 문제가 생길 수 있습니다. 각각의 정보를 직접 공개하지 않는다고 하더라도 통계만 가지고도 특정 데이터가 어떠한 데이터인지 알아낼 수 있다는 것이 문제입니다. 예를 들어서 2명의 몸무게 평균을 ..
자바에서 리스트 만드는 다양한 방법이 존재합니다.각각은 그냥 대충 사용하자면 신경 안쓰고 사용할 수 있지만 실은 결과에 꽤 큰 차이를 가져올 수 있습ㄴ디ㅏ.각각의 차이에 대해 알아보죠.🌏 List 생성 방법✅ 1. Arrays.asList(...)List list = Arrays.asList(1, 2, 3);고정 크기 리스트 (배열 기반)get(), set() 가능❌ add(), remove() 불가 → 크기 변경 시 UnsupportedOperationException 예외 발생list.set(0, 100); // ✅ 가능list.add(4); // ❌ 에러 발생✅ 2. List.of(...) (Java 9 이상)List list = List.of(1, 2, 3);진짜 불변 리스트❌ ..
이 문제는 이분 탐색(Binary Search) 을 이용해서 해결할 수 있는 전형적인 최적화 문제입니다.전체적인 아이디어는 다음과 같습니다.✅ 문제 요약n명의 사람이 입국심사를 기다림각 심사관이 한 사람을 처리하는 시간은 times 배열에 있음모든 사람이 심사를 받는 데 걸리는 최소 시간을 구하기💡 핵심 아이디어어떤 시간 t가 주어졌을 때, 그 시간 내에 n명을 처리할 수 있는지를 판단할 수 있다면,t를 이분 탐색으로 줄여가며 최소의 시간을 구할 수 있습니다.만약 28분이라는 시간이 있다고 치면?각 심사관이 28분 안에 몇 명 처리할 수 있을까요?28 / 7 = 4명 (첫 번째 심사관)28 / 10 = 2명 (두 번째 심사관)총 6명 처리 가능근데 더 짧은 시간에도 가능할 수도 있잖아요?🔍 여기서 이..
🌏 GAN(Generative Adversarial Networks)의 기본 개념Generative Adversarial Networks(GAN)는 Ian Goodfellow에 의해 처음 제안된 생성 모델로, 두 개의 신경망, Generator와 Discriminator가 경쟁적으로 학습하며 고품질 데이터를 생성하는 강력한 딥러닝 모델입니다.✅ GAN의 구조와 학습 원리GAN은 Generator와 Discriminator로 구성됩니다.Generator(G)잠재 공간(latent space) z에서 샘플을 입력받아 실제 데이터와 유사한 데이터를 생성합니다.목표: Discriminator를 속여 가짜 데이터를 진짜로 인식하도록 만듭니다.Discriminator(D)실제 데이터와 Generator가 생성한 ..

🌏 SSL 인증서란? 해당 도메인이 https로 인증을 받기 위한 인증서입니다. 인증서를 받기 이전에 해당 도메인으로 들어가보면 아래와 같이 https로 접근이 불가함을 볼 수 있습니다. SSL 인증서(Secure Sockets Layer Certificate)는 웹사이트와 사용자의 브라우저 간에 주고받는 데이터를 암호화하여 안전하게 보호하는 역할을 합니다. 이를 통해 데이터가 중간에 가로채이거나 변조되는 것을 방지할 수 있습니다.🌏 SSL 인증서의 주요 역할데이터 암호화: 사용자와 서버 간에 주고받는 데이터를 암호화하여, 민감한 정보가 중간에서 유출되지 않도록 보호합니다. 예를 들어, 로그인 정보나 신용카드 정보 같은 데이터가 암호화됩니다.서버 신뢰성 검증: SSL 인증서는 서버의 신원을 증명..