| "Building Data Science Applications with FastAPI"를 읽고 정리한 글입니다. Tortoise ORM 사용하기 ORM 툴을 사용하는 이유: 관계형 DB를 다룰 때, SQL 개념을 추상화하고, 오직 python의 object만 다뤄서 복잡도를 낮추고 싶기 때문이다 Tortoise ORM: Modern and asynchronous ORM Django ORM과 유사하다. 각 DB 엔진에 따른 설치법은 링크에서 확인할 수 있다. DB 모델 생성하기 Tortoise ORM의 역할은 파이썬 객체와 DB의 entity를 연결(link)하는 것이다. class PostTortoise(Model): id = fields.IntField(pk=True, generated=True)..
Chapter 10: FastAPI 프로젝트 배포하기 이 단원에서는 FastAPI 프로젝트를 배포하는 Best Practice에 대해 배운다. 먼저 환경 변수를 사용해서 configuration을 진행하고, dependency들을 pip로 잘 관리될 수 있게 한다. 그 후 세 가지 방법으로 배포를 진행해 본다. 서버리스 클라우드 플랫폼 이용해서 배포 도커 컨테이너를 이용한 배포 리눅스 서버를 이용한 배포 또 다른 주제들은 아래와 같다 환경변수를 설정하고 사용하는 방법 파이썬 종속성 관리하기 환경변수를 설정하고 사용하기 배포에 대한 방법을 배우기 전에, 먼저 우리가 구현한 앱을 신뢰할 수 있고, 빠르고, 안전하게 배포할 수 있도록 만들어야 한다. 그 과정에 있어서 핵심적인 것이 configuration 관..
학교에서 제공하는 클라우드 스토리지가 구글 드라이브 무제한 -> 5GB 제한이 생겼을 때, 학교 원드라이브 계정으로 마이그레이션을 진행했다. 원드라이브 또한 이용자 수가 많아지고, 비용 최적화를 위해서인지 5TB 제공에서 1GB 제공으로 바뀐다고 한다. 그래서 MS 365 Office Family 계정을 결제해서 사람들과 공유하기로 마음먹고 이전을 진행했다. 6명이서 2만원 가량씩 나눠서 내면, 시중에 판매되고 있는 클라우드 스토리지 서비스 중 제일 착한 가격이라고 생각한다. 결제가 진행될 때, 해외 원화결제가 이루어지므로 미리 차단을 해제해두는 것이 좋다. 해외결제이기 때문에 결제 수수료가 2000원 가량 발생한다. 하지만, 토스 카드로 결제할 경우 해외수수료보다 더 많은 캐시백이 있어서, 이 부분은 ..
Chapter 8: 양방향 통신을 위한 웹소켓 in FastAPI | “Building Data Science Applications with FastAPI”의 챕터 8을 공부하며 정리한 내용입니다. HyperText Transfer Protocol (HTTP)는 서버에 데이터를 보내고 받기에 간편하지만 강력한 기술이다. 하지만 채팅과 같은 양방향 소통이 중요한 경우 HTTP로 구현한다면 상당히 불편함이 따른다. 짧은 시간 내에 많은 요청과 응답을 만들어야 하기에, 자원 낭비가 심할 것이다. 이러한 HTTP 단점 때문에 새로운 프로토콜 웹소켓(WebSocket)이 인기를 끌고 있다. 이 프로토콜의 목표는 client와 server 사이에 communication channel을 열어서 그들이 실시간으로 ..
Chapter 7: FastAPI에서의 인증과 보안 “Building Data Science Applications with FastAPI”의 챕터 7을 공부하며 정리한 내용입니다. API에는 모든 이가 접근할 수 있는 Public API도 있지만, 인증된 사용자들만 접근 가능한 API가 대부분이다. 따라서 private token으로 접근성을 낮추거나, 적절한 인증 시스템을 구축해야 한다. 이 챕터에서는 FastAPI가 제공하는 보안과 관련된 의존성에 대해 다룬다. 또한 웹 브라우저에서 발생하는 CORS와 CSRF 공격에 대해서도 다룬다. 세부적인 내용들은 아래와 같다. Security dependencies in FastAPI Retrieving a user and generating an acces..
react-native-svg 오늘 리액트 네이티브 개발을 하던 중, 아이콘을 앱에 넣어야하는 상황이 있었다. 앱 디자인은 이미 피그마로 해두었기에, 피그마에서 svg로 export한 아이콘을 앱에 넣는 방법을 알아보았다. 아직 프로젝트 초창기이기 때문에, 관련 세팅이 필요했다. 이번 프로젝트에서는 react-native-svg를 사용하였다. react-native-svg 설치 1. npm 혹은 yarn으로 라이브러리 설치 yarn add react-native-svg 2. React native와 autolink하기(RN 버전 0.60 이상부터 가능) cd ios && pod install 0.60 이하의 버전인 경우 react-native link react-native-svg 커멘드를 터미널에 입력..
CSS 복습 React native(typescript 이용)로 앱 프로토타입을 만드는 중 매번 헷갈리는 내용이 있어서 정리. Align vs Justify Align Align이 들어간 css는 flex 축에 수직으로 적용된다. 즉 flow-direction이 row라면 Align은 column방향으로 정렬함. Justify Justify가 들어간 정렬은 flex 축에 평행하게 적용됨. 매우 강추하는 flexboxfroggy (연습용 예제 사이트) Flexbox Froggy A game for learning CSS flexbox flexboxfroggy.com *-content > *-items > *-self align-content determines the spacing between lines..
왜 윅스를 선택하였는가? 진행 중인 프로젝트에서 윅스로 홈페이지를 만들었다. 실제 시장에서 프리토타이핑을 진행하기 위한 테스트 및 홍보용 웹사이트여서, 실제 코드로 구현하는 것보다는, 노코딩으로 구현할 수 있는 윅스를 선택했던 것이다. 윅스말고도 아임웹이라는 한국 회사가 제공하는 서비스도 있었다. 아임웹이라는 서비스가 현재 우리나라 스타트업들이 사용하는 웹 템플릿과 더욱 잘 어울리고, 많이 활용되는 듯 하였으나, 녹음 파일 재생 기능이 필요했던 우리는 윅스를 선택했다. 시장에 배포하기 위해 준비한 것들. 윅스와 노션을 통해 페이지 디자인. 윅스 디자인은 내가 맡아서 하진 않았고, 친구가 전담하여 진행했다. 보통의 블로그 꾸미듯이 진행하는 것으로 보였다. 그리고 팀 소개 페이지는 노션으로 만들었는데, 노션..
다시 보기 위해 적는 vscode Vim extension 키 사용법. Normal Mode Motion h 커서를 왼쪽으로 j 커서 아래로 k 커서 위로 l 커서 오른쪽으로 i Insert mode Go to Normal mode 단어별 이동 word는 괄호 문자 포함 X, WORD는 포함 O w move to the beginning of next word b move to the beginning of the previous word e move to the end of the next word ge move to the end of the previous word W move to the beginning of next WORD B move to the beginning of the previou..