백엔드에서 이미지 업로드는 어떻게 하면 좋을까?
·
Project 하면서 알아가는 것들
시험 기간으로 밀려서 마저 올리지 못했던 프로젝트에서 발생한 궁금증과 그 해결 시간이다.이번에 프로젝트하면서 단일 이미지 업로드, 다중 이미지 업로드를 처리하는데 많은 시간과 어려움을 겪었다. 그리고 내가 선택한 해결 방법과 그 이유에 대해서 알아보자. 이미지 업로드 방식에는 무엇이 있을까?나는 이미지 업로드 방식에서 크게 5가지로 나눌 수 있었다. blob을 사용하여 db에 저장 (권장 X)설명이것은 db에 데이터 타입 중 하나인 blob이라는 자료형을 사용하여 파일을 저장하는 방식이다.Binary Large Object의 줄임말으로써, 말 그대로 대용량 바이너리 데이터 즉, 이진 데이터를 저장하는 방법이다.MySQL에서는 다음과 같은 크기를 가지고 있다.BLOB 타입용량TINYBLOB2^8 - 1 (..
[Python 알고리즘] 백준 2212번 : 센서
·
Python 알고리즘
문제 한국도로공사는 고속도로의 유비쿼터스화를 위해 고속도로 위에 N개의 센서를 설치하였다. 문제는 이 센서들이 수집한 자료들을 모으고 분석할 몇 개의 집중국을 세우는 일인데, 예산상의 문제로, 고속도로 위에 최대 K개의 집중국을 세울 수 있다고 한다. 각 집중국은 센서의 수신 가능 영역을 조절할 수 있다. 집중국의 수신 가능 영역은 고속도로 상에서 연결된 구간으로 나타나게 된다. N개의 센서가 적어도 하나의 집중국과는 통신이 가능해야 하며, 집중국의 유지비 문제로 인해 각 집중국의 수신 가능 영역의 길이의 합을 최소화해야 한다. 편의를 위해 고속도로는 평면상의 직선이라고 가정하고, 센서들은 이 직선 위의 한 기점인 원점으로부터의 정수 거리의 위치에 놓여 있다고 하자. 따라서, 각 센서의 좌표는 정수 하나..
[Python 알고리즘] 백준 13164번 : 행복한 유치원
·
Python 알고리즘
문제 행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에 속한 원생들은 서로 인접해 있어야 한다. 조별로 인원수가 같을 필요는 없다. 이렇게 나뉘어진 조들은 각자 단체 티셔츠를 맞추려고 한다. 조마다 티셔츠를 맞추는 비용은 조에서 가장 키가 큰 원생과 가장 키가 작은 원생의 키 차이만큼 든다. 최대한 비용을 아끼고 싶어 하는 태양이는 K개의 조에 대해 티셔츠 만드는 비용의 합을 최소로 하고 싶어한다. 태양이를 도와 최소의 비용을 구하자. 입력 입력의 첫 줄에는 유치원에 있는 원생의 수를 나타내는 자연수 N(1 ≤ N ≤ 300,000)과 나누려고 하는 조의 개수를 나타내는 자연수 K..
typescript ?(Optional Parameters)와 | undefined(Union)의 차이
·
Project 하면서 알아가는 것들
Typescript 하면서 undefined를 지정하는 방법은 2가지가 있다. // Optional Parameters로 지정하는 방법 interface Fruit { cost?: number } // Union으로 지정하는 방법 interface Fruit { cost: number | undefined } 2개의 방법 중에서 한 가지 차이점이 존재한다. union으로 지정했을 때는 속성이 존재해야하고, optional parameters로 지정했을 때는 속성을 정의해주지 않아도 된다. Union으로 정의를 했다면 다음과 같이 사용하면 에러가 발생한다. // Union으로 지정하는 방법 interface Fruit { cost: number | undefined } // Property 'cost' i..
[JWT] Access Token과 Refresh Token 그리고 RTR 기법에 대해서 알아보자.
·
Project 하면서 알아가는 것들
이번에는 토이 프로젝트를 하면서 알아본 JWT에 대해서 얘기를 할 것이다. JWT에 들어가기 앞서 인증마다 무슨 차이점이 존재하는지 알아보자. Cookie Cookie란 Key: Value로 이루어진 문자열이다. 사용자가 어떠한 웹사이트에 방문했을 때 그 사이트가 사용하는 서버를 통해 사용자 로컬(하드)에 저장되는 작은 데이터다. Cookie는 Key : Value로 이루어져 있으며 만료시간, 도메인, 경로 등의 정보를 가질 수 있다. Cookie 작동 방식 Browser(사용자)가 Server에 요청을 보낸다. Server는 Browser의 요청에 대한 응답을 작성할 때 Client측에 저장하고싶은 데이터를 응답 헤더의 Set-Cookie에 담아서 응답한다. Browser는 Cookie를 응답 받았다면..
[NodeJS] Typescript EsLint 및 Prettier 적용하기
·
Project 하면서 알아가는 것들
오늘은 토이 프로젝트 하면서 알아본 EsLint및 Prettier를 적용할 것이다. 알아보기전 EsLint와 Prettier에 대한 기본적인 개념을 알아보자.EsLint란?ES : ECMA Script로서 Javascript를 표준화하기 위해 만들어진 규격이다. Lint : 소스 코드를 분석하여 오류, 버그, 코딩 스타일 등까지 에러를 표시 해주는 것을 의미한다. 따라서, EsLint는 소스코드를 분석하여 문법적으로 오류, 버그가 있다면 에러를 표시해줄 뿐더러 코딩 스타일까지 지정하여 사용할 수 있다. Prettier란?작성된 소스코드를 지정한 코딩 스타일에 맞게 변환 및 검사 해주는 도구이다. javascript처럼 사용자층이 넓은 언어일수록 사용자마다 다른 코딩 스타일을 갖게되는데 협업을 할 때에는 ..
[Python 알고리즘] 백준 1969번 : DNA
·
Python 알고리즘
문제 DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오티드의 첫글자를 따서 표현한다. 만약에 Thymine-Adenine-Adenine-Cytosine-Thymine-Guanine-Cytosine-Cytosine-Guanine-Adenine-Thymine로 이루어진 DNA가 있다고 하면, “TAACTGCCGAT”로 표현할 수 있다. 그리고 Hamming Distance란 길이가 같은 두 DNA가 있을 때, 각 위치의 뉴클오티드 문자가 다른 것의 개수이다. 만약에 “AGCAT"와 ”GGAAT"는 첫 번째 글자와 세 ..
[Python 알고리즘] 백준 1700번 : 멀티탭 스케줄링
·
Python 알고리즘
문제 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전기용품의 플러그를 뺐다 꽂았다 하는 불편함을 겪고 있다. 그래서 준규는 자신의 생활 패턴을 분석하여, 자기가 사용하고 있는 전기용품의 사용순서를 알아내었고, 이를 기반으로 플러그를 빼는 횟수를 최소화하는 방법을 고안하여 보다 쾌적한 생활환경을 만들려고 한다. 예를 들어 3구(구멍이 세 개 달린) 멀티탭을 쓸 때, 전기용품의 사용 순서가 아래와 같이 주어진다면, 키보드 헤어드라이기 핸드폰 충전기 디지털 카메라 충전기 키보드 헤어드라이기 키보드, 헤어드라이기, 핸드폰 충전기의 플러그를 순서대로 멀티탭에 꽂은 다음 디지..