Loading...
2021. 3. 14. 16:53

[FastAPI] 8. 비동기 처리에서 SQLAlchemy의 scoped_session이 문제가 되는 이유

아래의 포스트에서 FastAPI가 SQLAlchemy와 연동하였을 때 비동기적으로 처리하는 부분이 미흡하다는 단점에 대해 이야기했었던 적이 있습니다. 2020.12.27 - [Programming/Python] - [FastAPI] 2. SQLAlchemy를 이용한 간단한 CRUD API 만들기 [FastAPI] 2. SQLAlchemy를 이용한 간단한 CRUD API 만들기 이번 글에서는 ORM에 대한 사용 방법에 대해 알아보도록 하겠습니다. ORM은 Object Relation Mapping의 약자로 객체를 이용해서 데이터베이스 Entity에 접근하는 방법입니다. 보통 애플리케이션 레벨에서 blog.neonkid.xyz 이 부분에서 다룬 SQLAlchemy의 scoped_session에 대해 좀 더 ..

2021. 3. 6. 19:22

[RxJava] 5. Reactive 연산자 파헤쳐보기 3편 (수학 연산자 및 기타 연산자)

2021/02/21 - [Programming/Java] - [RxJava] 4. Reactive 연산자 파헤쳐보기 2편 (결합, 조건 연산자) [RxJava] 4. Reactive 연산자 파헤쳐보기 2편 (결합, 조건 연산자) 2021/02/07 - [Programming/Java] - [RxJava] 3. Reactive 연산자 파헤쳐보기 1편 (생성, 변환 연산자) [RxJava] 3. Reactive 연산자 파헤쳐보기 1편 (생성, 변환 연산자) 2021/01/23 - [Programming/Java] - [RxJ.. blog.neonkid.xyz 지난 포스트에 이어서 RxJava의 기본을 다루는 연산자 마지막 편 수학 연산자 및 기타 연산자에 대해 알아보겠습니다. 이번 포스트에서 다룰 수학 연산..

2021. 2. 27. 16:39

[FastAPI] 7. Google-auth 및 PyJWT를 이용한 OAuth2 인증 구현 2

지난 글에 이어서 이번 포스트에서는 OAuth2 인증 토큰을 API에서 받아 처리하는 방법에 대해 알아보도록 하겠습니다. HTTP Header 우리가 REST API를 통신하는 데 사용하는 HTTP 프로토콜은 Header와 Body라는 구조로 이뤄져 있습니다. Header와 Body 모두 개발자가 다룰 수 있는 데이터 구조로 되어 있으며 Header에는 전송하고자 하는 서버 혹은 클라이언트의 정보 내지 전송하고자 하는 대상에 부가적인 메타데이터를 넘겨줄 떄 사용합니다. 쉬운 예시로 위와 같이 로컬 서버에게 GET 메소드를 이용해서 리소스를 가져오는 호출을 전달했을 경우 데이터를 받는 대상자에게 부가적인 메타 데이터를 가져올 수 있도록 Key-value 형태의 데이터 구조를 가지고 있습니다. 이 중에서 가..

2021. 2. 21. 18:20

[RxJava] 4. Reactive 연산자 파헤쳐보기 2편 (결합, 조건 연산자)

2021/02/07 - [Programming/Java] - [RxJava] 3. Reactive 연산자 파헤쳐보기 1편 (생성, 변환 연산자) [RxJava] 3. Reactive 연산자 파헤쳐보기 1편 (생성, 변환 연산자) 2021/01/23 - [Programming/Java] - [RxJava] 2. Reactive 기본 연산자(Operator) - map, filter, reduce [RxJava] 2. Reactive 기본 연산자(Operator) - map, filter, reduce Reactive Programming에서 꽃이라고.. blog.neonkid.xyz 이번 포스트는 지난 포스트에 이어 결합, 조건 연산자에 대해 알아보겠습니다. 결합 연산자 결합 연산자는 여러 개의 Obser..

2021. 2. 13. 13:26

[FastAPI] 6. Google-auth 및 PyJWT를 이용한 OAuth2 인증 구현 1

이번 포스트에서는 인증에 대한 이야기를 해보고자 합니다. Spring에서는 Spring Security라는 모듈을 제공하여 개발자가 인증에 대한 구현을 개별적으로 하지 않고도 쉽게 구현할 수 있는 방법이 존재했습니다. 이를 통하여 Google 개발자 콘솔에서 Client ID를 미리 발급받은 후 구현되어 있는 구현체만 잘 사용하면 어렵지 않게 OAuth2 인증을 구현할 수 있었죠. FastAPI도 이와 비슷하게 OAuth2 인증을 구현하지만 JWT를 사용하는 것에는 별도의 구현 처리를 해줘야 합니다. 이번 포스트에서는 이 두 라이브러리를 가지고 OAuth2 인증을 어떻게 구현할 수 있는지에 대해 알아보겠습니다. [Spring boot] Spring boot Security로 시작해보는 인증 Spring ..

2021. 2. 7. 17:17

[RxJava] 3. Reactive 연산자 파헤쳐보기 1편 (생성, 변환 연산자)

2021/01/23 - [Programming/Java] - [RxJava] 2. Reactive 기본 연산자(Operator) - map, filter, reduce [RxJava] 2. Reactive 기본 연산자(Operator) - map, filter, reduce Reactive Programming에서 꽃이라고 할 수 있는 Reactive Operator에 대해 알아보도록 하겠습니다. 만약 여러분들이 Java 8을 사용하고 있다면, 이러한 Reactive 연산자가 매우 익숙하실 수도 있습니다. RxJava에. blog.neonkid.xyz 지난 포스트에서 Reactive의 기본 연산자를 다뤘습니다. 기본 연산자를 다루면서 RxJava에서 제공하는 수많은 연산자가 있고 그 중에 기본적인 연산자..

2021. 2. 6. 15:07

[Algorithm] - 2021 카카오 신입 1차 온라인 코딩 테스트 (Kakao Newbie Primary Online Coding Test) for Tech Developers 문제 풀이

지난 주, 2021년 카카오 신입 온라인 코딩 테스트 문제 풀이가 카카오 공식 블로그에 올라오게 되면서 풀이를 해보게 되었습니다. 개인적으로 인턴십 문제나 이런 문제들도 많이 봤었는데, 신입 문제를 풀이한 것은 거의 없었는데요. 먼저 짤막하게 요점을 말씀드리자면 인턴십 코딩 테스트와 신입 코딩 테스트의 문제 난이도가 조금 차이가 있었습니다. DFS나 BFS 문제들이 가끔 한 문제 정도 나오는 인턴십 코딩 테스트에 비해 신입 코딩 테스트에서는 백트래킹이나 다익스트라 알고리즘과 같은 Computer Science의 기본 알고리즘 구현 문제도 같이 있어서 이러한 부분도 조금 준비를 해두는 게 좋을 것 같다라는 생각을 했습니다. 그럼 문제 풀이를 시작해보도록 하죠. Question 01. 아이디 추천 문제 원문..

2021. 1. 31. 00:11

[FastAPI] 5. pyyaml을 이용한 FastAPI 환경 나누기

FastAPI로 기본적인 API와 문서를 만드는 작업 그리고 데이터베이스를 연동하는 것까지 해봤다면 이제는 본격적인 애플리케이션 배포를 위해 환경을 나누어야 합니다. 여기서 환경이라는 것은 무엇일까요? 개발 환경? 개발 환경이라면 우리는 PyCharm을 사용하고 Python을 설치했고 이미 다 작업한 것이 아닌가요? 2021/01/16 - [Programming/Python] - [FastAPI] 4. SQLAlchemy + Alembic 조합을 이용한 Database Migration 가이드 [FastAPI] 4. SQLAlchemy + Alembic 조합을 이용한 Database Migration 가이드 웹 서비스를 개발하고 배포한 뒤에 반드시 한 번 쯤 따르는 업데이트 사항이 바로 데이터베이스 마이..

2021. 1. 23. 11:13

[RxJava] 2. Reactive 기본 연산자(Operator) - map, filter, reduce

Reactive Programming에서 꽃이라고 할 수 있는 Reactive Operator에 대해 알아보도록 하겠습니다. 만약 여러분들이 Java 8을 사용하고 있다면, 이러한 Reactive 연산자가 매우 익숙하실 수도 있습니다. RxJava에서는 Reactive Programming에 맞춰, 이러한 Reactive Operator를 제공합니다. 그러나 여러분들이 아셔야할 것은 이런 Reactive 연산자가 단연 RxJava, Java 8에서와 같이 "Java"에서만 볼 수 있는 것은 아닙니다. Python에서도 Javascript에서도 Reactive Programming만 지원한다면 이러한 연산자는 어디서든 볼 수 있습니다. 이번 글에서는 RxJava에서 Reative Operator가 어떤식으..

2021. 1. 16. 13:55

[FastAPI] 4. SQLAlchemy + Alembic 조합을 이용한 Database Migration 가이드

웹 서비스를 개발하고 배포한 뒤에 반드시 한 번 쯤 따르는 업데이트 사항이 바로 데이터베이스 마이그레이션입니다. 데이터베이스를 마이그레이션하는 경우는 보통 아래의 3가지가 대표적입니다. 인스턴스의 이전 클라우드를 사용한다면 다른 인스턴스, 혹은 다른 리전으로의 이전 특정 Entity에 대한 변경 요청 우리 부서 혹은 우리 서비스에는 이 기능을 넣기 위해 이 칼럼이 더 추가로 필요할 것 같아요. 일부 영속된 데이터를 특정 데이터로 변경 이제는 이 명칭을 이 명칭으로 바꿀거에요. 모든 사항에 적용되었으면 좋겠어요. 간단하게 생각한다면 이러한 작업을 수동으로 처리할 수도 있습니다. 다른 데이터베이스 인스턴스를 하나 테스트용으로 만들고, SQL 쿼리를 짜본 다음 쿼리 테스트하고, 확실한 쿼리가 작성되었다면 이를..