728x90
반응형

Programming 53

Fastapi와 svelte를 이용한 게시판 개발 #2

데이터베이스 연결 데이터베이스에 연결하여서 게시판에서 생성되는 내용을 mysql에 저장하도록 할 것이다. 앞에 Setup.md에서 Database에 연결하기 위한 설정을 해두었다. 이제 관련 내용을 하나씩 채워나가보도록 하겠다. alembic 초기화 alembic을 사용하기 위해서 다음 명령어를 통해서 초기화를 진행한다. alembic init migrations 이 명령어를 입력하고 나면 migrations라는 디렉토리가 생성되며 그 디렉토리 안에 alembic을 사용하기 위한 내용들이 채워진다. alembic 코드 수정 alembic을 사용할 준비를 하였다. 위의 명령어에서 migrations라는 디렉토리를 생성하였고 여기에 필요한 코드와 이후 마이그레이션에서 사용되는 생성 코드들이 저장된다. ale..

Fastapi와 svelte를 이용한 게시판 개발 #1

초기화 본 코드는 python 3.9 환경에서 구성되었다. 프로젝트 생성 프로젝트는 다음 코드로 생성한다. poetry new fastapi-bbs 위의 명령어를 입력하면 fastapi-bbs라는 디렉토리가 생성된다. poetry 라이브러리를 통해서 파이썬 패키지 의존성을 관리하도록 할 것이다. 이제 디렉토리 이름을 변경한다. 처음에 poetry 명령어로 디렉토리를 생성하면 하위에 같은 이름으로 디렉토리가 더 생성된다 여기서는 fastapi-bbs로 생성하였기 때문에 fastapi-bbs 디렉토리 아래 fastapi-bbs라는 디렉토리가 생성된다. 이 디렉토리 이름을 app으로 변경한다. 그럼 디렉토리 구조가 아래와 같다. fastapi-bbs |- app | |- __init__.py |- tests ..

[가계부 만들기] 지출입 기록 - 설계

제일 많이 사용하고 제일 중요한 자료가 되는 것이 바로 지출입 자료일 것이다. 가계부에서 사실 이게 전부라고 할 수 있다. 어쨌든 근본적으로 이 기록을 남기기 위한 기본 설정을 지금까지 해왔다고 할 수 있다. 가계부를 만들기로 한 이유는 바로 형태가 마음에 딱 맞는 것이 없었기 때문이다. 예를 들어서 대형마트에 가서 장을 본다고 했을 때, 이를 세부적으로 분류해서 기록할 수가 없다. 마트에서 장을 보면 장남감을 살 수 있고, 식재료를 살 수 있고, 또는 생활용품을 구매할 수도 있는데 이를 세부적으로 기록할 수 있는 툴을 제공하는 프로그램이 없다. 그래서 일단은 엑셀로 정리해서 사용했는데 아무래도 파일로 기록하다보니 부족함을 느끼게 된다. 그래서 일단 프로그램을 만들어서 사용해보기로 한다. 기록 형태 우선..

[가계부 만들기] Category 생성/수정/삭제

이전 포스팅에서 카테고리에 관련된 기능을 구현하기 위해 설계한 구조와 리스트를 가져오는 내용을 정리하였다. 이번 포스팅에서는 생성/수정/삭제와 관련된 기능을 기록하려고 한다. 사실 생성/수정/삭제 기능은 이전에 회원 정보를 관리할 때 사용한 기능과 거의 동일하다. 테이블이 바뀌니 모델이 달라지고 패스워드가 없으니 암호화되는 과정이 생략되는 정도로 생각하면 된다. 카테고리 생성 먼저 생성하는 코드를 먼저 구현한다. 이전과 동일하게 로직은 services 아래 category_service.py에서 구현하고 라우팅만 연결하도록 할 것이다. 로직을 먼저 구현한다. 코드는 아래와 같다. # 카테고리 생성 async def create_category( db: AsyncSession, member_no: int,..

[가계부 만들기] 카테고리 설정 - 구조/리스트조회

가계부에서 수입/지출 항목을 입력하는 기능을 만들기 전에 먼저 카테고리 설정에 관련된 기능을 구현하고자 한다. 모든 수입/지출 내역은 카테고리로 정리할 수 있을 것이다. 물론 카테고리 항목이 비어있을 수도 있겠지만 카테고리를 정리해두면 추후에 통계 자료를 만들 때 활용할 수 있는 여지가 많다. 다년간 개발을 하다보니 원 데이터가 상세하면 이를 가공해서 만들 수 있는 통계도 훨씬 다양하게 만들 수 있다. 이전 내용에서 회원 가입시 기본 카테고리를 자동으로 생성해주는 코드를 붙여두었다. 기본적인 카테고리 정보가 있으니 먼저 카테고리 리스틑 가져오는 것부터 시작해서 카테고리를 새로 생성하고, 수정하고, 삭제하는 기능을 구현하도록 할 것이다. 카테고리는 하나의 카테고리 정보가 때어내어서 관리하는 일보다는 리스트..

Sqlalchemy를 통한 postgresql timezone 설정

개발을 하다보면 날짜를 다루는 일을 꽤 많이 하게 된다. 그만큼 중요한 업무이기도 하다. 보통 테이블을 설계할 때 Row 단위로 해당 Row가 생성된 일시와 수정된 일시, 그리고 삭제된 일시를 자동으로 남기도록 한다. 이 때 각 데이터베이스마다 날짜를 다루는 컬럼 타입이 조금씩 상이하다. mysql에서는 timezone이라는 개념이 없이 timestamp, datetime, date 등의 형태로 지정한다. 이와 다르게 postgresql에서는 timestamp에 timezone을 같이 저장하는 형태와 저장하지 않고 timestamp만 저장하는 형태 두 가지로 구분하여서 생성한다. 국내용으로 개발할 때는 굳이 timezone을 저장할 필요없이 timestamp만 저장하면 될 것이고 해외도 같이 서비스를 할..

Programming/Python 2023.05.08

[가계부 만들기] Category Table 구조 변경

카테고리 관련 기능을 구현하려고 보니 카테고리 관련 테이블 구조가 잘못된 것을 알게 되었다. 최초에는 시스템에서 정의한 카테고리만 보이도록 하고 시스템에서 정의한 카테고리는 변경을 할 수 없도록 하려고 했다. 그러나 출력되는 순서를 변경하고 싶거나 시스템 카테고리에 서브로 카테고리를 더 추가하고 싶을 수도 있을 것이라고 판단된다. 그럼 회원이 가입할 때 시스템 정의 카테고리를 회원별로 정의해 주고 회원별로 정의된 카테고리는 각 회원이 자신의 필요에 맞춰 수정할 수 있도록 해야 할 것이다. 그리고 최초 정의한 테이블에는 지출에 대한 카테고리만 생각하고 정의했는데 수입에 대해서도 카테고리를 정의하고 싶을 수 있으므로 카테고리 테이블에 수입/지출에 대한 구분 값을 넣을 것이다. 마지막으로 순서를 변경할 수 있..

[nextjs] 서버 설정 파일 읽기

Nextjs는 서버 사이드 렌더링임에도 불구하고 기본적으로는 스크립트 대부분의 동작은 Client 브라우저에서 작동되게 된다. 그래서 nextjs에서는 fs 라이브러리를 사용할 수 없고 따라서 프로젝트 포함되어 있는 별도의 설정을 읽어올 수가 없다. 별별 꼼수를 다 사용해 봤지만 특별히 아 이런 방법이면 좋겠구나 이런 내용은 찾기 힘들었다. 그러던 중에서 가장 그럴듯한 방법을 찾아서 기록을 남겨두고자 한다. 먼저 왜 이런 변수가 필요한지 설명하고자 한다. 개발을 하던 중에 특정 사용자에 대해서는 Backend에 오는 정보를 살짝 바꾸어주어야 하는 필수가 발생했다. 그래서 이 사용자들의 아이디를 기준으로 이렇게 정보를 바꿔주고 싶은데 Frontend이다 보니 DB에 연결할 수도 없다. 그래서 이 리스트를 ..

Programming/Nextjs 2023.04.27

[가계부 만들기] DB 비동기 처리

프로그램을 구현하다 보면 좀 더 효율적이고 빠르게 동작하는 프로그램으로 계속 수정해나가야 한다. 이렇게 프로그램의 퍼포먼스를 증가시켜서 더 사용자들에게 프로그램이 진화하고 있다는 것을 보여주는 것이 중요하다. 프로그램을 개발하다 보면 보편적으로 가장 많은 리소스를 차지하는 것이 결국에는 IO 처리이다. 파일을 읽고 쓰고, 네트워크로 데이터를 주고 받고 하는 일련의 과정들이 결국에는 IO인 셈이다. 그럼 이렇게 리소스를 많이 잡아먹고 대기시간을 길게하는 IO 작업을 한없이 기다리게 할 수 없을 것이다. 그래서 일반적으로는 이런 처리를 비동기로 처리하도록 개발한다. 동기와 비동기에 대한 차이를 여기서는 자세히 기술하지 않을 것이다. 간단하게 설명하면 동기 방식으로 프로그램을 구현하면 네트워크에 질의를 하였을..

728x90
반응형