본문 바로가기

분류 전체보기23

[RabbitMQ & Celery] AI 모델 결과 비동기 처리 기존 FastAPI에서는 CLIP과 Mediapipe 모델을 사용하고 있다.CLIP 모델은 텍스트-이미지의 멀티모달 모델로 응답 속도가 오래 걸려 개선이 필요하다 판단했다. 모델의 결과를 비동기 처리하기 위해 RabbitMQ와 Celery를 사용했다. (Django 환경) - 핵심 목표ChallengeAttemptView가 시간이 오래 걸리는 작업(FastAPI 호출, 여러 DB 레코드 저장 등)을 백그라운드로 넘기고, 사용자에게는 즉시 응답("제출을 접수했습니다!")을 보내는 것 - 기존 방식사용자 요청 -> API View -> (FastAPI 응답 대기) -> (DB 저장 대기) -> 최종 응답 - 개선 후 사용자 요청 -> API View (빠른 처리) -> 즉각적인 "처리 중" 응답 -> Rab.. 2025. 9. 7.
[Openstack] glance(이미지) 관련 functional test 코드 기여 목표OpenStackClient의 소스 코드에 'openstack image stores info'와 'openstack image import info' 명령어에 대한 새로운 기능 테스트(Functional Test)를 추가하고, 이를 성공적으로 실행시키는 것 1. 테스트 코드 작성 test_image_stores_info:Glance의 multi-store 기능 활성화 여부를 먼저 확인기능이 비활성화된 환경에서는 오류를 내는 대신, self.skipTest를 호출하여 테스트를 '건너뛰기(SKIPPED)' 처리stores info 명령어가 없는 구형 버전을 위해 stores list 명령어로 폴백(fallback)하는 기능을 포함다양한 JSON 출력 형태(list 또는 dict)를 모두 처리test_i.. 2025. 8. 30.
[자료구조2] Map, Set, Priority Queue 개념 정리 자료구조 중 Map, Set, Priority Queue에 대한 개념 정리를 담고 있습니다. MapKey–Value 쌍을 저장하고 Key로 매우 빠르게 값을 찾는 자료구조.내부 원리Hash 기반(Map, HashMap, unordered_map)hash(key) -> bucket 인덱스로 가서 저장/탐색.충돌은 체이닝(연결리스트/트리) 또는 오픈어드레싱으로 해결.평균 O(1), 최악 충돌 쌓이면 O(n) (자바8은 체이닝이 트리로 바뀌어 최악 O(log n)).Tree 기반(TreeMap, std::map)균형 이진 탐색 트리(Red-Black)에 (key, value)를 정렬 상태로 저장.항상 O(log n) 탐색/삽입/삭제.정렬/범위 쿼리(lower_bound, subMap) 가능.핵심 연산 & 복.. 2025. 8. 11.
django & FastAPI 연결 과정 및 AI 모델 선정 과정 #1. 프로젝트 소개 프로젝트 진행 과정 중, AI 팀원이 따로 없어 백엔드를 맡은 필자가 AI 레포를 따로 만들어 기존 백엔드(django)와 AI(FastAPI)를 연동했다. 상용화된 LLM 모델(예. GPT / Gemini)를 사용하지 않은 이유는, AI가 해야 하는 역할이 다음과 같기 때문이다.프로젝트에서 AI 모델이 분석해야 하는 것1. 사진의 배경 장소 구분 (이 사진은 경복궁에서 찍은 사진인가? 한강에서 찍은 사진인가? 에 대한 판단)2. 사진 속 인물의 포즈 구분 (사진 속 인물은 어떠한 포즈를 하고 있는가? 브이? 하트?)3. 기타 조건 들.. 이 조건을 만족해야했다. 유저가 사진을 찍거나 불러와 그에 대한 판단을 하는 것이 이 프로젝트의 주요 기능이다.그러나, GPT나 Gemini에게 .. 2025. 7. 13.
Google Cloud API [OCR] 구현 구글 공식 문서를 이용해 구현https://cloud.google.com/vision/docs/ocr?hl=ko 이미지의 텍스트 감지  |  Cloud Vision API  |  Google Cloud의견 보내기 이미지의 텍스트 감지 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 스캔된 문서에서 텍스트를 감지하는 경우 광학 문자 인식, 구조화된 양식cloud.google.com 로컬 이미지 분석 vs. 원격 이미지 분석사용자가 사진을 찍으면, 사진 안에 있는 텍스트를 읽어들여 다음 화면에서 보여주면 되는 거라, 로컬 이미지 텍스트 감지 방법을 선택 를 하려다가, 문서화된 글씨가 아닌 손글씨를 분석해야할 때 더 적합한 API를 사용하기로 했다. https://cloud.go.. 2025. 3. 18.
문자 sms 인증 + db 활용 고민 내가 구현해야 할 것문자인증 시 들어오는 값은 [국가번호 + 전화번호]국가번호는 3개 중 하나로 파싱 후 이에 따라 국적 분류해야함문자인증 연결은 1. 회원가입 2. 전화번호 수정mysql에 sms_code 속성 추가한 후 이를 저장한 뒤, 비교해서 같은 값이면 인증 성공 (시간 초과 시 실패)인증 다시 할 때마다 db에 있는 값 갱신1. sms 인증 코드 구현 (mysql 코드 저장 포함)2. 국가번호 파싱 -> 국가 저장 포함 -> sms 인증 연결  1. [국가번호 + 전화번호] 파싱// 국가 번호별 국적 매핑public static final Map COUNTRY_NATIONALITY_MAP = Map.of( "+82", "South Korea", // 대한민국 "+1".. 2025. 3. 10.