728x90
반응형

Programming 53

[가계부 만들기] Backend - Database #1

이제 본격적인 개발을 진행해볼 것이다. 본격적인 개발을 시작하면서 데이터를 실제로 저장할 데이터베이스를 연결해두어야 한다. 여기서는 app/databases 디렉토리를 생성하고 거기서 관련 코드를 넣을 계획이다. 개발은 vscode IDE를 사용하여서 진행할 것이다. uvicorn으로 프로그램을 실행하면 app 디렉토리 하단에 __pycache__라는 디렉토리가 생성된다. 이 디렉토리가 계속 생성되고 갱신되는데 개발에서 사용하는 디렉토리가 아니다보니 제법 신경이 쓰인다. 그리서 여기서는 해당 디렉토리를 보이지 않도록 처리한다. backend 디렉토리에서 .vscode 라는 디렉토리는 생성하고 settings.json 파일을 생성한다. 이렇게 하고 나면 디렉토리 구조가 다음과 같아 진다. settings...

[가계부 만들기] Backend - Initialize

Backend 프로그램을 만들기 위해서 우선 프로그램을 초기화해야 한다. 여기서는 Python 기반의 fastapi를 웹 프레임워크로 사용할 것이며 ORM을 사용하기 위해서 sqlalchemy 라이브러리를 사용할 것이다. 프로젝트는 Backend와 Frontend로 분리해서 개발할 것이지만 어쨌든 같은 디렉토리 안에서 작업하는 것이 개발이 용이할 것이라고 판단하여 account-book 디렉토리를 생성하고 그 하단에 Backend와 Frontend 디렉토리를 생성할 것이다. 다음과 명령어를 통해서 프로젝트 디렉토리를 생성한다.% mkdir account-book % cd account-book % poetry new backend여기서는 프로젝트 의존성 관리를 위해서 poetry를 사용하였으며 이에 대한..

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

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

[Nextjs] API 기능을 통한 파일 업로드 처리

회사에서 Frontend 개발시에 nextjs를 사용하고 있다. 지금까지 React + nextjs를 공부하고 개발하면서 여러 고비를 넘기면서 개발을 이어왔는데 다시 한 가지 난제에 부딪히게 되었다. nextjs는 SSR(Server Side Rendering)을 지원해주는 프레임워크이지만 어쨌든 이미 로딩된 페이지 안에서의 동작은 브라우저에서 처리되기 때문에 비동기로 호출되는 데이터에 대한 정보는 서버에서는 잡을 수가 없다. 그래서 Nextjs에서는 Page 디렉토리 안에 api로 된 페이지에 대해서는 특별히 서버에서 직접 처리되도록 하여서 서버에서 처리할 수 있도록 기능을 제공한다. 자세한 내용은 아래 nextjs 문서에서 확인할 수 있다. API Routes: Introduction | Next.j..

Programming/Nextjs 2023.02.09

[Python] Mac에서 개발 환경 구축

이직을 하면서 회사에서 Backend 언어로 Python을 기반으로 fastapi를 사용하게 되었다. Python으로 Object detection을 위한 모델 학습하는 코드는 작성해보았지만 웹서비스를 만들어보기는 처음이다. 예전에는 anaconda를 설치해서 가상 환경에서 개발을 진행하였다. 각 환경별로 패키지를 다르게 설치하고 개발을 했다. 근데 이게 가상환경으로 구동되다보니 아무래도 불편했다. 가상환경을 만들어주는 것도 귀찮고 각 가상환경을 activate 했다가 deactivate 하는 명령어를 입력해야 했고 콘솔도 가상환경의 이름이 붙다보니 쓸데없이 길기만 했다. 이번에 이직해서 python개발 환경을 구축하다보니 pyenv라는 것을 사용하였다. anaconda 같이 각 버전별로 가상환경을 만들..

Programming/Python 2023.02.03

[Docker Server] 도커 기반의 PHP 웹 서비스 구성

예전에는 PHP를 통해서 웹 서비스를 구성하는 것을 APM이라고 불렀다. Apache + PHP + Mysql의 앞 글자를 따서 이렇게 이름을 불렀던 것이다. 아파치는 굉장히 훌륭한 프로그램이고 기능도 다양하기 때문에 막강한 프로그램이다. 하지만 이렇게 기능이 많다는 얘기는 무겁고 설정이 어렵다는 의미가 되기도 한다. 실제로 아파치의 모든 설정을 다 알기는 쉽지 않다. 아파치는 다른 프로그램과 연동도 다양하기 진행할 수 있고 많은 역할을 할 수 있기 때문에 이에 대한 설정들은 꽤 복잡하고 어렵다. 그래서 그 대항마로 만들어진 것이 nginx라고 할 수 있을 것이다. nginx는 꽤 간단하고 설정도 간편하게 할 수 있지만 그렇다고 성능이 떨어지는 것도 아니였다. 그래서 10년여전부터 php 서비스를 구성할..

Programming/Technic 2023.02.03

[fastapi] Pydantic Model을 Request Form 데이터로 받기

회사에서 Fastapi를 통해서 개발을 하고 있는데 Fastapi의 장점 중에 하나가 Swagger와 Redoc으로 자동으로 문서를 만들어준다는 것이다. Fastapi를 사용하면서 백엔드 개발자의 입장에서 이점이 가장 마음에 든다. 코드만 잘 작성해두면 자동으로 문서를 만들어준다니!! Request parameter와 Response Model을 잘 정리해두면 이쁜 문서가 짠 하고 만들어진다. 근데 개발을 하다가 Request parameter에 Schema로 이쁘게 만들 수 있는데 이게 json형태로 자동으로 지정된다. Schema를 잘 작성하면 Frontend에서 거기 맞게 데이터를 잘 가공해서 보내면 문제가 없는데 파일 업로드를 같이 하면서 데이터를 받으려니 Form으로 받아야 하는데 그럼 정성스럽..

Programming/Python 2023.01.31

[Codeigniter 3.x] 쿼리 로그 남기기 #2

앞에서 남긴 로그를 보면 포멧팅 되지 않은 상태로 출력된다. 이렇게 출력된 로그는 짧은 쿼리는 상관없겠지만 복잡한 쿼리를 확인하기에는 다소 무리가 있다. 비교적 간단한 쿼리이지만 쿼리를 작성할 때 로그를 출력할 것을 생각하고 작성하지 않는다면 복잡한 쿼리는 보기 어려울 것이다. 위의 이미지의 쿼리는 쿼리를 실제로 작성한 쿼리이기 때문에 그나마 들여쓰기라도 했지만 ORM을 통해서 생성되는 쿼리는 더 복잡하게 출력된다. 그래서 쿼리 로그를 남길 때 일정 부분 포멧팅해줄 필요가 있다. 물론 필요한 부분의 쿼리를 복사해서 인터넷에서 포멧팅해주는 사이트에서 해줄 수 있을 것이다. 하지만 쿼리를 한 번에 알아보고 싶다는 필요가 있다. 포멧팅을 하면 로그의 용량은 증가할 것이지만 용량을 포기하고 로그를 한 번에 보고..

Programming/PHP 2023.01.29

[Codeigniter 3.x] 쿼리 로그 남기기 #1

개발을 하다가보면 로그의 중요성은 아무리 말로 설명해도 부족하기만 하다. 몸소 체험하고 왜 로그가 중요한지 절실하기 느껴봐야 어떤 로그를 어떻게 남겨야 하는지 느낄 수 있게 된다. 웹 개발에서 있어서 Query에 관련된 로그는 필수적이라고 볼 수 있을 것이다. 어떤 쿼리를 던졌고 해당 쿼리를 처리하는데 걸린 시간이 얼마인지 알 수 있다면 사이트 혹은 프로그램이 느려지는 구간을 찾는데 많은 도움을 받을 수 있게 된다. 해당 글에서는 Codeigniter 3.x 버전에서 쿼리를 남기는 코드를 남겨보고자 한다. 기본적으로 Codeigniter 3.x 버전의 디렉토리 구조를 파악하고 있다는 전제로 하고 설명을 시작한다. 우선 /application/config/hooks.php 파일을 열어서 다음에 코드를 입력..

Programming/PHP 2023.01.27

[Docker Server]Ubuntu Docker 설치

본 글의 리스트에서는 Docker를 이용해서 PHP 웹 서버를 구축하는 것을 목표로 한다. 해당 글에서 사용하는 릴리즈 버전은 Ubuntu 22.04로 한다. 우선 우리는 서버에 도커를 올리기 위해서 Ubuntu Server에 Docker를 설치하는 것부터 시작할 것이다. 우분투를 설치한 이후에 다음의 명령어를 통해서 설치된 패키지들을 최신화한다. sudo apt update sudo apt upgrade 위의 명령어는 도커를 설치하는 것과는 별개의 명령어로 단순히 패키지를 업그레이드 하기 위한 명령어이다. 도커 정식 홈페이지에서는 우분투에 도커를 설치하는 방법을 다음에 4가지로 소개하고 있다. 리눅스용 Docker Desktop을 통한 설치 우분투 패키지 매니저 apt를 이용한 설치 dpkg를 이용한 ..

Programming/Technic 2023.01.24
728x90
반응형