전체 글 295

[트렌드매거진] 25.03.24 개발일지/ 아티클 작성 프로세스 최적화 및 트랜잭션 적용

📚 Article 작성 로직 고민  💡 현재 로직:아티클 생성 (3.62s) → 태그 5개 및 아티클과의 연관성 분석 및 테이블 생성 (9.16s)   → 기존 태그들과의 유사도 분석 및 테이블 생성 (1m 30s) 문제: 시간이 많이 걸린다. 1. 우선 태그를 5개에서 3개로 줄여야겠다. ai 가 5개를 뽑으면서 태그가 너무 다양해지고 의미는 같고 단어만 조금 다른 태그들이 생겼다. 2. 연관성 분석을 꼭 해야할까? 라는 생각을 했다. 어차피 연관이 있는 태그를 ai 가 뽑아주는건데 그걸 수치화로 더 자세히 할 필요가 있을까. 3. 기존 태그들을 전체 조회하면서 생성된 태그들과의 유사도를 분석하고 저장하는 로직을 게시글 등록과는 분리시켜야겠다. 시간이 많이 걸리고 이는 점점 태그가 많아질수록 증가될..

[트렌드매거진] 25.03.22 개발일지/ 카테고리별 아티클 조회 알고리즘 고민

📚 서비스 개요와 설계 목표⚡ 고민메인 카테고리만으로 글을 나열하면 사용자가 세부 관심사를 반영하기 어렵다. 예를 들어, "스포츠" 안에 "축구"와 "농구"가 섞이면 사용자가 원하는 주제를 필터링하기 힘들다. 나는 AI가 상세 카테고리를 동적으로 생성해 이를 해결하고자 했다.  Grok3 는 상세 카테고리를 초기에는 최대 5개로 제한하고, 최소 2개 글이 있어야 생성하도록 제안했다. 이는 콘텐츠 부족 문제를 피하면서도 유연성을 유지할 거 같지만 더 생각해봐야겠다.📚 상세 카테고리 설계와 문제 해결🚨 동적 상세 카테고리 도입상세 카테고리(태그)는 게시글당 5개까지 동적으로 생성된다. 나는 이를 AI가 글 내용을 분석해 자동으로 분류하는 방법을 생각했다.예를 들어, "손흥민 골 기록" 글은 "유럽축구"..

[CS] Hexagonal Architecture

✅  3-Layer Architecture & Hexagonal Architecture더보기1. 3계층 아키텍처 (3-Layer Architecture)🏗 구조3계층 아키텍처는 애플리케이션을 세 개의 논리적 계층으로 나누는 전통적인 설계 방식입니다.Presentation Layer (UI Layer)사용자 인터페이스 담당 (웹, 모바일, API 컨트롤러 등)HTTP 요청을 받아 비즈니스 로직을 호출하고, 응답을 반환Business Layer (Service Layer)핵심 비즈니스 로직 담당데이터 처리 및 도메인 규칙 적용Data Access Layer (Repository Layer)데이터베이스 및 외부 저장소와의 상호작용ORM (JPA, MyBatis 등) 또는 직접 SQL 쿼리를 사용✅ 장점이해하..

[FastAPI] Redis 를 활용해 otp 기능 구현

💡 개요FastAPI 프로젝트에 Redis 를 연결한 후 email OTP 인증 기능을 추가하고자 했다.key : email, value : otp 로 설정을 해놓고 만료시간을 3분으로 설정을 했다. 💡 실행docker run -p 6379:6379 --name redis -d --rm redis 위 명령어를 통해 docker 로 부터 redis 최신 버전을 다운 받는다. pip install redis tests > cache.pyimport redisredis_client = redis.Redis( host="127.0.0.1", port=6379, db=0, encoding="UTF-8", decode_responses=True) host 와 port, db 는 0번째 등등 옵션을 설정해준..

[Alembic] Alembic

💡 개요FastAPI + SQLAlchemy 를 사용하고 있는 프로젝트에서 데이터베이스 스키마를 쉽게 관리하기 위해 Alembic 을 사용하려했다.  1️⃣ Alembic 설치pip install alembic  2️⃣ Alembic 초기화alembic init alembic 이 명령어를 실행하면 alembic 디렉터리가 생성되며, 기본 설정 파일과 마이그레이션 파일을 저장할 versions/ 폴더가 만들어진다. 📁 프로젝트 구조 예시:my_project/│── alembic/│ │── env.py # 마이그레이션 환경 설정│ │── script.py.mako # 마이그레이션 파일 템플릿│ │── versions/ # 마이그레이션 파일 저장 위치│── alembic.i..

[FastAPI] DB 연결 및 orm 설정

pip install sqlalchemyorm 다운pip install pymysql파이썬과 mysql 을 연동할 때 사용하는 드라이버pip install cryptography pymysql 을 통해 mysql 접속할 때 인증이나 암호 관련 처리를 해주는 라이브러리  ✔️ Database 연결database > connection.pyfrom sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerDATABASE_URL = "mysql+pymysql://root:todos@127.0.0.1:3306/todos"engine = create_engine(DATABASE_URL, echo=True)SessionFactory = sessio..

[FastAPI] Status_code Error 처리

from fastapi import FastAPI, Body, HTTPException HTTPException 클래스를 사용하기 위해서 import 해준다.✔️ 성공 시 status_code 지정@app.get("/todos/{todo_id}", status_code=200)@app.patch("/todos/{todo_id}", status_code=200) ✔️ 실패 시 status_code 지정@app.get("/todos/{todo_id}", status_code=200)def get_todo_handler(todo_id: int): todo = todo_data.get(todo_id) if todo: return todo raise HTTPException(statu..