인공지능 개발자 수다(유튜브 바로가기) 자세히보기
반응형

분류 전체보기 168

[FastAPI] SSO 로그인과 OAuth 2.0 (7-2)

1. SSO 로그인SSO(Single Sign-On)는 사용자가 한 번의 로그인으로 여러 애플리케이션이나 시스템에 접근할 수 있도록 해주는 인증 방식중앙 집중식 인증주로 OAuth 2.0과 OpenID Connect와 같은 프로토콜을 사용사용자는 먼저 IdP에 로그인하고, 해당 로그인 정보가 포함된 인증 토큰(보통 JWT)을 받는다.일반적으로 여러 서비스가 붙어있는 거대한 환경에서 쓴다. 2. OAuth 2.02.1. OAuth 2.0 개념권한 위임(Authorization Delegation)유저는 비밀번호 등의 자격증명을 애플리케이션에 직접 제공하지 않고, 신뢰할 수 있는 권한 서버(Authorization Server)를 통해 자원에 접근할 권한을 위임함역할(Role)Resource Owner ..

Fastapi 2025.01.19

[FastAPI] JWT 기반 인증 (7-1)

1. 인증(Authentication) 이란인증(Authentication)은 시스템이나 서비스가 사용자가 누구인지 확인하는 과정사용자가 주장하는 신원이 실제로 그 사람인지 확인. FastAPI에서는 두 가지 인증 방식을 모두 지원할 수 있습니다.세션 기반: Depends와 같은 의존성 주입을 통해 쉽게 구현할 수 있으며, 쿠키 기반의 세션 관리를 사용합니다.토큰 기반: OAuth2PasswordBearer와 같은 인증 스키마를 사용해 JWT 기반 인증을 구현하는 것이 일반적입니다.그 중에서 이번 시간에는 토큰 기반 인증인 JWT(Json Web Token)에 대해 공부해 봅시다.2. JWT 2.1. JWT 란?JWT는 주로 인증 목적으로 사용되며, 토큰 안에 사용자의 인증 정보를 포함하고 있어 서버가 ..

Fastapi 2025.01.19

[FastAPI] SQLAlchemy 상세 - Join (6-6)

1. Join 기본 사용 방법join() 메서드를 이용해 직접 정의해 준다.기본은 내부 조인(inner join) 이다.with Session(engine) as session: # User와 Address 테이블을 조인하여 데이터를 조회 stmt = select(User, Address).join(Address, User.id == Address.user_id) result = session.execute(stmt).all() for user, address in result: print(user.name, address.email_address) outerjoin() 메서드는 left join이다.with Session(engine) as session: # U..

Fastapi 2025.01.19

데이터사이언스 업계에 대한 고찰(취업, 이직, 업무) (2025.01)

필자는 데이터사이언스 분야에서 5년 넘게 일하고 있는 직장인이다. 즉, 데이터사이언스가 사람인에 처음 나올때 쯔음 신입사원으로 시작한 사람이다. GPT가 등장한 이후 많은 것들이 변한 지금 데이터사이언티스트의 회사 업무가 어떻게 변했는지 적어본다.최근 몇년동안 상당히 성능이 좋은 모델들이 많이 등장했고, 특정 분야를 제외하고 새로운 모델을 설계하는 업무는 거의 사라진 것 같다. 음성분야(STT, TTS), Vision 분야, LLM 분야, 머신러닝 분야 등은성능을 더 좋게 하기 위해 연구를 하는 것 보다이미 존재하는 모델을 더 잘 활용하는 방향으로 나아가는 것으로 보인다. 물론 더 좋은 모델을 만들기 위한노력이 있긴 하지만그런 업무를 실질적으로 하는 것은큰 비용이 들 뿐만 아니라비용 대비 효과가 크지 않..

[FastAPI] SQLAlchemy 상세 - ForeignKey, relationship (6-5)

SQLAlchemy 에서 두 테이블 간의 관계를 표현할 때에는ForeignKey(), relationship() 두가지를 이용한다.관계를 설정하는 상세 옵션에 대해 알아보자 1. ForeignKey1.1. 기본 설명ForeignKey 설명부모테이블의 기본키와 자식테이블의 컬럼을 연결한다.두 테이블간의 관계에서, 자식 테이블에서 설정해 준다.해당 옵션은 데이터베이스에서 테이블을 생성할 때 실행해야 의미가 있다. ( Base.metadata.create_all(engine) )즉, ForeignKey에서 정의한 내용은 데이터베이스 스키마에 반영된다.여기서 설정한 옵션은 데이터베이스 레벨의 설정이다.예시 테이블 코드ForeignKey('parent.id') 를 이용해 외래키 정의Base = declarativ..

Fastapi 2025.01.09

Pyenv로 Python 설치하고 가상환경 만들기

1. Pyenv 설치1.1. 윈도우 (Window)Git에서 Pyenv를 설치하는 명령어를 받을 수 있다. (링크)Power shell 에서 명령어를 입력한다.Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"  1.2. Mac os pyenv 설치 명령어brew install pyenv 2. pyenv 버전 관리pyenv 버전확인pyenv --versionpyenv 업데이트 (Mac OS)brew upgr..

[Poetry] 파이참(Pycharm)에 Poetry 세팅

0. Pyenv 설치Poetry는 Pyenv 와 함께 사용하면 좋아요.Pyenv를 이용해 원하는 Python 버전을 설치합니다.설치 방법은 이전 글에서 확인하세요 : Pyenv로 Python 설치하기1. Poetry 설치poetry 설치 명령어는 아래와 같다.pip install poetry  2. Poetry Pycharm 연동먼저 Pycharm에서 새로운 인터프리터를 추가해 준다오른쪽 하단에 Python을 클릭새 인터프리터 추가 클릭왼쪽에서 Poetry Environment(Poetry 환경)를 선택해 준다.그리고 한번 더 Poetry Environment(Poetry 환경)를 선택해 준다.그리고 Base interpreter에서 필요한 python 버전을 선택한다. (Pyenv에서 설치한 파이썬 버..

[conda env] conda 가상환경 만들기, 파이썬 설치하기

1. conda 버전 관리conda 버전 확인conda --version버전 업데이트conda update conda2. conda 가상환경사용 가능한 파이썬 버전 확인conda search python가상환경 생성conda create -n python=3.12# 예시conda create -n my_env python=3.12생성한 가상환경 리스트 확인conda env list가상환경 이동conda activate # 예시conda activate my_env가상환경 벗어나기conda deactivate

[FastAPI] SQLAlchemy 상세 - Delete (6-4)

1. SQL 방식delete 함수 사용from sqlalchemy import deletestmt = delete(User).where(User.id == 1)await db.execute(stmt)await db.commit() 2. ORM 방식ORM을 사용하는 경우, 먼저 객체를 조회한 후 삭제stmt = select(User).where(User.id == 1)result = await db.execute(stmt)user = result.scalars().first()if user: await db.delete(user) await db.commit() 3. ORM 관계 삭제ORM 관계에서 하위 테이블의 데이터 삭제는 Cascading을 설정하여 자동으로 처리 가능class User(B..

Fastapi 2025.01.01

[FastAPI] SQLAlchemy 상세 - Update(6-3)

update는 조건에 따라 값을 변경해주는 것이기 때문에, 복잡한 개념이 필요가 없어서 편하다. 여기서도 마찬가지로, SQL 방식과 ORM 방식으로 나눠서 공부해보자 1. SQL 방식1.1. 기본 사용 방법update() 함수를 사용where() 함수로 필터링values() 함수에 변경할 값을 입력from sqlalchemy import updatestmt = ( update(User) .where(User.id == 1) .values(name="New Name", email="new_email@example.com"))await db.execute(stmt)await db.commit() Json 데이터 이용 하기stmt = ( update(User) .where(User...

Fastapi 2025.01.01
반응형