728x90
반응형

개발기록 7

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

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

Sqlalchemy를 통한 postgresql timezone 설정

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

Programming/Python 2023.05.08

[nextjs] 서버 설정 파일 읽기

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

Programming/Nextjs 2023.04.27

[가계부 만들기] Backend - 회원 관리 기능 #5

회원 관리 기능에서 기초가 되는 기능에서 마지막은 refresh token을 통해서 access token과 refresh token을 갱신하는 기능일 것이다. 세션을 사용하지 않고 JWT만으로 사용자 정보를 검증하기 때문에 access token의 유효시간이 만료되었을 때 이를 새로 갱신해줄 필요가 있다. 해당 포스팅에서 해당 기능을 간단하게 구현하도록 한다. Schema 생성 refresh token을 갱신할 때 Response로 받을 schema를 추가적으로 생성할 것이다. 물론 그냥 str로 받아도 되지만 이렇게 받는 것보다 schema를 통해서 정의하는 것이 좀 더 좋아보인다. databases/schemas.py 파일에 아래 코드를 추가한다. # Refresh token을 위한 request ..

[가계부 만들기] Backend - 회원 관리 기능 #4

이제 사용자가 전달한 값을 통해서 실제로 Database에 연동하는 코드를 넣을 것이다. 서비스 디렉토리 생성 먼저 비즈니스 로직을 담당하는 파일들을 모아둘 디렉토리를 생성하고 __init.py__ 파일을 추가해둔다. 그리고 회원 관련 로직을 작성할 members_service.py 파일을 생성한다. 이제 구조를 만들었으니 이제 내용을 작성해보자. 외부 파일 참조 및 변수 선언 from sqlalchemy import select from sqlalchemy.orm import Session from sqlalchemy.sql import func from datetime import timedelta from ..database import models, schemas from ..libraries i..

[가계부 만들기] Backend - 회원 관리 기능#1

Concept 프로그램을 만들면서 가장 기본이 되는 기능이 바로 회원 정보를 관리하는 것이다. 생성되는 모든 정보는 회원 정보에 종속되게 되므로 회원의 정보를 잘 관리하는 것이 매우 중요하다. 이 프로젝트에서는 회원의 많은 정보를 사용하지 않는다. 이전에 공유했던 회원 정보 테이블을 다시 보자. CREATE TABLE `tb_members` ( `member_no` smallint unsigned NOT NULL AUTO_INCREMENT COMMENT '멤버번호', `member_id` varchar(30) COLLATE utf8mb4_general_ci NOT NULL COMMENT '사용자 아이디', `member_pw` varchar(128) COLLATE utf8mb4_general_ci NOT..

[가계부 만들기] 테이블 설계

엑셀로 가계부를 쓰기 시작했는데 이걸 일일이 쓰려니 상당히 귀찮다. 일일이 손으로 입력하는 것도 귀찮고 생각보다 엑셀이 스마트하지 않고 그래프나 이런 부분이 매번 손으로 입력하는 것이 꽤 귀찮아서 내가 만든 양식을 범용으로 사용할 수 있도록 가계부 프로그램을 만들어볼까 한다. 우선 Backend 쪽 프롣그램을 먼저 개발을 하고 프론트를 붙이는 방향으로 개발을 진행할 예정이다. 개발 언어는 현재 회사에서 사용하고 있는 python의 fastapi를 사용할 것이고 frontend는 React를 사용하며 개인적으로 디자인에 많이 쓰는 bootstrap을 활용할 계획이다. 개발하는 내용들을 여기에 기록을 남기면서 개발을 진행할 것이다. 엑셀에서 작성한 내용은 다음 그림과 같이 정리하였다. 위의 내용을 프로그램으..

728x90
반응형