Loading...
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 쿼리를 짜본 다음 쿼리 테스트하고, 확실한 쿼리가 작성되었다면 이를..

2021. 1. 10. 17:13

[RxJava] 1. RxJava의 기본 - Observable

지난 포스트에서 Observable에 대해 간단히 다뤄봤고, 이에 따른 리액트 함수에 대해 알아보며 각 차이를 알아봤습니다. 이번 포스트에서는 Observable을 좀 더 심오하게 다뤄보고, 이에 응하는 Single, Maybe 등 다양한 클래스 등을 공부하면서 RxJava와 좀 더 친숙해지는 시간을 가져보도록 하겠습니다. Observer Design Pattern RxJava의 근간이 되는 Observable 클래스는 소프트웨어 디자인 패턴인 Observer Pattern을 근간으로 되어 있습니다. 옵서버 패턴 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 ..

2021. 1. 9. 16:38

[RxJava] RxJava로 시작하는 Java Reactive 프로그래밍

Java에서 여러 가지의 일을 동시에 수행하기 위한 방법에는 스레드를 사용하는 방법과 비동기 처리를 이용하는 방법이 있습니다. Java에서도 C++와 마찬가지로 select 함수를 제공하고, Thread 객체를 제공하기 때문에 이를 이용해서 동시 처리를 하는 것은 그리 큰 고민이 될 문제는 아닙니다. 그러나 Java로 스레드를 사용한 프로그래밍은 Python이나 Go와 같은 다른 프로그래밍 언어에 비해 사용하기가 무척 어렵습니다. 그냥 단순하게 Thread 객체를 생성하고 사용하는 것만 고려한다면 그리 큰 문제가 되는 것은 아니지만 메모리에 저장된 자원을 동시에 사용하는 이슈 등 처리해줘야 할 일들이 굉장히 많을 뿐더러 코드를 간략하게 짠다하더라도 내가 만든 메소드나 함수가 스레드 위에서 동작하는지 그렇..

2020. 12. 31. 15:41

[FastAPI] 3. SQLAlchemy + Graphene 조합으로 GraphQL 서버 만들기

이번 포스트에서는 GraphQL에 대한 이야기를 해보도록 하겠습니다. What is GraphQL ? GraphQL에 대한 이야기는 그리 길지 않기 때문에 여기서 간단하게 다뤄보도록 하겠습니다. GraphQL은 Facebook에서 개발한 데이터 표현 언어로 여기서 QL이 Query Language에 해당합니다. 우리는 서버에서 데이터를 가져오기 위해 REST API를 사용하였고, REST API는 메소드와 요청 데이터 혹은 응답 데이터로 구분하여 원하는 데이터를 가져오거나 데이터를 적재하는 등을 수행하였습니다. 그러나 GraphQL은 메소드 없이 오직 Query Language만을 이용하여 원하는 모델을 적재하고, 가져올 수 있습니다. 또한 원하는 항목을 클라이언트가 직접 명시함으로써 서버에서 제공해주는..

2020. 12. 27. 12:14

[FastAPI] 2. SQLAlchemy를 이용한 간단한 CRUD API 만들기

이번 글에서는 ORM에 대한 사용 방법에 대해 알아보도록 하겠습니다. ORM은 Object Relation Mapping의 약자로 객체를 이용해서 데이터베이스 Entity에 접근하는 방법입니다. 보통 애플리케이션 레벨에서 DB에 접근할 때는 데이터베이스 드라이버를 이용하여 SQL Query를 던져 실행하는 방법을 사용하지만 SQL Query는 소프트웨어 엔지니어에게 있어 러닝 커브를 증가 시키고, 소프트웨어 코드 가독성을 저하시키는 원인이 되었습니다. 하지만 ORM을 이용하면 기본적인 CRUD를 포함한 간단한 쿼리에 대해 SQL Query를 프로그래밍 코드에 질의하지 않아도 프로그래밍 코드 안에서 처리할 수 있는 이점을 얻을 수 있습니다. Python 언어에서의 대표적인 ORM 라이브러리로 SQLAlch..

2020. 12. 25. 16:42

[FastAPI] 1. GET, POST, PUT, DELETE 등 기본 API 만들고 문서 자동화 해보기

지난 글에 이어서 FastAPI를 이용해서 기본적인 REST API 개발 이야기 두 번째를 이어가보도록 하겠습니다. 우리가 REST API를 개발하면 주요 메소드 종류 5가지가 있는데요. 바로 GET, POST, PUT, DELETE, PATCH 이렇게 5가지 입니다. 물론 이 외에도 OPTIONS가 있지만 이 글에서는 다루지 않겠습니다. 기본 API 만들기 (GET) REST API의 기본 API는 먼저 GET 메소드부터 시작됩니다. GET 메소드는 서버로부터 리소스를 가져올 때 쓰는 READ API 입니다. FastAPI에서는 아래의 두 가지 방법으로 작성할 수 있습니다. from fastapi import FastAPI app = FastAPI() @app.route('/health') async ..