Backend 70

[JavaScript] TestCode 작성하기

용어 정리 Assertion 에러가 없는 프로그램을 작성하기 위한 하나의 수법 Mocha 기반 테스트 코드 테스트 러너를 지원하는 자바스크립트 기반의 테스트 프레임워크 자체 assertion 지원 x, 필요한 assertion 라이브러리를 가져와 사용. node에서 지원하는 assert 모듈, chai, should.js 같은 BDD TDD 방식의 다양한 assertion 라이브러리 있다. mocha는 모듈별도 호출x , 사용한 assertion만 require()로 호출 BDD, TDD TDD : Test 주도 기반 개발 즉, 테스트 먼저 작성하고 나서 테스트가 정상적으로 돌아갈 때까지 테스트를 하면서 코드를 작성하는 것. 원하는 작업이 제대로 돌아갈 때까지 테스트 코드 작성을 무한대로 반복하며 개발 ..

[Express] Node.js 서버에 Google OAuth 2.0 로그인하기

OAuth 2.0 이란? Open Authorization 의 약자이며, 인증을 위한 개방형 표준 프로토콜이다. 이 프로토콜에서는 Third-Party 프로그램에 리소스 소유자를 대신해서 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식으로 작동된다. 구글, 페이스북 등 외부 소셜 계정을 기반으로 간편하게 인증하는 기능이다. 용어 정리 Authentication(인증) : 인증, 접근 자격이 있는지 검증하는 단계 Authorization(인가) : 자원에 접근할 권할을 부여하고 리소스 접근 권한이 있는 Acess Token을 제공 client 우리가 개발한 서비스(service), 어플리케이션(Application)을 뜻함. Resource Owner 리소스 소유자이며, 자격을 승인하는 주..

[MongoDB] NoSQL 알아보기 🧐

NoSQL Not Only SQL. 기존의 RDBMS의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터 저장소이다. *RDBMS : Relational 관계형 데이터베이스 관리 소프트웨어. SQL에 의해 저장되고 있다. 빅데이터로 인해 데이터와 트래픽이 증가함에 따라, 비용이 증가되는 단점을 해결하고자 데이터 일관성을 포기하고 여러 대의 데이터에 분산하여 저장하는 Scale-out 목표로 등장했다. *Scale-out : 수평적 확장성 1. Key-Value Database 대표적인 NoSQL Key-Value Model : Redis https://devlog-wjdrbs96.tistory.com/374 2. Document Database

Backend/MongoDB 2022.09.13

[NodeJS] Multer 와 S3로 이미지 처리하기

multer를 사용해 이미지를 업로드 및 폼데이터를 처리할 수 있다. 기본적인 multer 사용법 정리 1. router 사용법 콜백함수 (req, res) 전에, upload.single('img') 미들웨어를 사용한다. router.post('/', upload_resize.single('img'), async (req, res) => { user_id = req.body.user_id; imgpath = req.file.location; }); 2. 이미지 저장 : 디스크가 아닌 S3에 저장하기 디스크에 있는 파일을 업로드하거나 파일 버퍼(메모리에 저장)하는 두가지 방법이 있다. 디스크 방식은 번거롭기 때문에, 메모리에 파일을 버퍼형식으로 저장하고, 그것을 업로드한다. const upload = m..

[NodeJS] sharp 패키지 써보기.

이미지 처리에 좋은 패키지 : sharp! 1. 이미지 리사이즈 resize 함수를 사용하면 간단한 리사이징이 가능하다. 여러 옵션이 존재한다. 옵션에 따라 이미지 일부를 crop 하면서 리사이징 또는 원본 비율을 무시한채 찌그러진 이미지로 리사이즈 가능하다. //비율을 유지하며 리사이즈 한다. width가 변경되는 비율만큼 height도 변경된다. sharp(imagePath).resize({width:400}) .toFile("sharp_resize1.jpg"); //비율을 유지하며 리사이즈 한다. left top을 기준으로 비율에 맞지 않는 부분은 잘라낸다. sharp(imagePath).resize({width:400, height:1000, position:"left top"}) .toFile(..

[AWS] 이미지 저장을 할 때 필요한 이미지 해상도 개수만큼 저장하는 이유는 무엇일까? ( S3, Lambda)

앱 동아리 활동 중, 이미지 저장시 필요한 파일해상도 별로 서버에 저장하라는 요청을 받았다. 나는 원본파일만 서버에 저장하고 GET 요청에 따라 클라이언트가 이미지를 resizing 하면 편리하다고 생각했는데, 서버가 필요한 이미지크기마다 저장해야 한다고 깨달았다. 정리해보자! 1. EC2 2. S3 3. Lambda 4. CDN (Cloud Front) , Lambda@edge 1. EC2 "가상 컴퓨터" 라고 이해하면 된다. 너가 만든 프로그램이 가상컴퓨터가 대신 실행시켜주는거야! 2. S3 정의 : S3란 인터넷 스토리지 서비스로 용량에 관계없이 파일을 저장할 수 있고 웹에서 파일에 접근할 수 있다. 사용이유 : 1. 보통 이미지 저장할 때 S3에 저장한다. 2. 저장 용량이 무한대이고, 파일 저장..

[JavaScript] 기본 개념 정리 (호이스팅, 비동기 구현 방식)

Q. var, let, const 의 차이점은? 우선 변수 선언방식인데요, 재선언 재할당할 시 차이점이 존재합니다. 먼저 var는 유연한 선언방식입니다. 같은 변수명으로 var로 선언한 뒤, 출력하면 재선언한 값이 출력됩니다. 하지만 코드가 길어지면 변수값을 알아보기 힘든 단점이 있습니다. var 만든 이후, 만들어진 let 변수선언은 재선언함이 불가능합니다. 하지만 재할당은 가능합니다 let name = 'bathingape' console.log(name) // bathingape let name = 'javascript' console.log(name) // Uncaught SyntaxError: Identifier 'name' has already been declared name = 'react..

s3로 이미지 저장하기

🎯 Amazon S3 Amazon S3란, Simple Storage Service의 약자로 인터넷용 스토리지 입니다. Amazon S3는 웹상에서, 언제 어디든지 원하는 양의 데이터를 저장하고 검색하는데 사용할 수 있는 간단한 웹 서비스 인터페이스가 있습니다. Amazon S3의 특징은 다음과 같습니다. REST 인터페이스를 통해 저장 / 삭제 / 조회가 가능합니다. 주로 이미지 파일, 정적 리소스 등을 S3에 올려놓고 사용합니다. 내구성이 좋습니다.(데이터 유실 가능성의 거의 존재하지 않습니다) AWS S3 버킷 생성하기 1. 버킷 등록하기 2. 권한설정 변경하기 3. s3를 이용해 이미지 업로드하기 (MYSQL) multer 모듈 사용하기 multer 메소드 사용하기 - multer.single(f..

MYSQL의 int() 괄호 안의 숫자 의미는 무엇일까?

테이블을 생성할 때 INT() 괄호 안에 숫자를 넣어서 만들었다. 나는 괄호 안의 숫자가 사용할 수 있는 INT 형 범위라고 생각했다. INT(1)이라면, 0~1 아니면 1의 자리 숫자의 INT 형들.. 하지만 INT(1)로 생성한 값안에 100도 들어가는 것을 보았다. 그럼 괄호안의 숫자는 무슨 의미인가? https://dev.mysql.com/doc/refman/8.0/en/numeric-types.html MySQL :: MySQL 8.0 Reference Manual :: 11.1 Numeric Data Types MySQL supports all standard SQL numeric data types. These types include the exact numeric data types (I..

[Django 실습] 가상환경 생성 및 git clone 코드 실행 (cmd, pycham)

1. 가상환경 생성할 로컬 폴더 생성 2. cmd : 가상환경 설치 코드 입력 python -m venv Myvenv * 에러코드 발생 Error: Command '['C:\\Users\\98092\\django_venvs\\october\\Scripts\\python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. 구글링 해결책 : 같은 오류이긴 하나, powershell 관련 해결책이라 도움이 안되었다. https://tariat.tistory.com/372 파이썬 가상환경 만들기 이전 포스팅에서 애저로 홈페이지를 만들어 보았다. (참조: 애저(Azure)로 웹(홈페이지) 만들기) 나중에 ..

Backend/Django 2021.10.11