전체 글

전체 글

    [AWS] HTTPS 적용

    대부분의 사이트가 HTTPS를 사용하는만큼 HTTPS로의 설정은 필수로 여겨지기 때문에 설정할 줄 알아야 된다고 합니다. 설정 경로를 이어보자면 아래와 같이 표현할 수 있다고 생각합니다. EC2 로드밸런서 route 53 cloudFront S3 여기서는 EC2, S3는 생성 완료 되었다 가정하고 설명했습니다. (Server, Client 순 입니다.) 간결하게 하려 했기에 조금 보기 어려울 수도 있습니다. 1. HTTPS Server 1. Route 53 호스팅 영역 생성 제일 먼저 호스팅 영역을 생성해야합니다. (인증서를 받기 위함) 배포하고자 하는 도메인으로 이름을 짓고 단순히 생성만 하면 됩니다. NS 유형의 값들을 구매한 도메인 사이트에 입력을 해주어야 합니다. 그리고 저는 가비아에서 도메인을 ..

    [AWS] RDS

    RDS는 Relational Database Service의 약자로 AWS에서 제공하는 관계형 데이터베이스 서비스입니다. EC2 인스턴스에 관계형 데이터베이스 엔진을 설치해서 데이터를 관리할 때와 RDS를 통해 데이터를 관리할 때의 차이는 EC2 인스턴스를 사용하면 데이터베이스와 관련해서 자동으로 관리를 담당하는 부분이 매우 적기 때문에, 사용자가 일일이 시간을 투자하여 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업을 해야 합니다. 게다가 가용성과 내구성이 확보되지 않기 때문에 데이터베이스에 저장된 데이터가 유실되거나 정상적으로 사용하지 못할 확률이 커지며, 후에 필요에 따라 데이터베이스의 규모를 확장하기 어렵습니다. 그에 비해 RDS를 이용하는 것은 RDS를 이용하면 데이터베이스 유지 보수와 관련..

    [AWS] S3 배포

    S3는 Simple Storage Service의 약자로 AWS에서 제공하는 클라우드 스토리지 서비스입니다. Amazon S3를 사용하여 데이터 레이크, 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석 등 다양한 사용 사례에서 원하는 양의 데이터를 저장하고 보호할 수 있다고 아마존에서는 설명 합니다. https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/Welcome.html S3 사용 시 얻을 수 있는 이점으로 높은 확장성이 있습니다. 확장성이 높으면 많은 시간과 수고를 들이지 않고 스토리지 규모를 확장/축소할 수 있습니다. 또한 S3에서는 스토리지의 용량을 무한히 확장할 수 ..

    [Node.js] express-validator (유효성 검사)

    유효성 검사는 클라이언트에서 서버로 요청을 보낼 때, 정확한 데이터를 보내고 있는 것인지 확인하는 것입니다. 서버에서 유효성검사를 최대한 빨리하는 것이 좋습니다. 왜냐하면 서버에서 데이터를 읽는 것도 비용이기 때문에 필수적입니다. 그렇기 때문에 서버에서 라우터-컨트롤러로 진행이 되기에 유효성검사는 라우터 부분에서 하는 것이 좋고, 또한 컨트롤러는 기능수행의 역할을 하기에 유효성검사를 같이 하기엔 적합하지 않다고 생각합니다. 보통 유효성 검사를 하게 되면 조건문을 사용하여 유효성 검사를 하게되는데 validator 라이브러리를 사용하면 좀 더 쉽고 보기 좋게 유효성 검사를 할 수 있습니다. npm install --save express-validator 공식문서에서는 아래의 코드처럼 간단하게 설명하고 있..

    [리펙터링 2판] 7장 - 캡슐화

    7장은 캡슐화 주제로 class를 사용하는것이 대부분이다. 클래스는 객체 지향의 프로그래밍의 컨셉으로 정보를 숨기는 용도로 설계되었다고 한다. 클래스는 내부의 정보뿐 아니라 클래스 사이의 연결 관계를 숨기는 데도 유용하다. 모듈을 분리하는 가장 중요한 기준은 모듈이 자신을 제외한 다른부분에 드러내지 않아야 할 비밀을 얼마나 잘 숨기냐에 있다. 이런 내용을 알고는 있지만 직접 와닿는 부분이 없었고, 굳이? 왜? 라는 의문문이 많이 따라 왔으나 설명과 함께 예시, 예제 코드를 보면서 그러한 부분을 많이 해소 할 수 있었다. 7.1 레코드 캡슐화 하기 내용 레코드를 데이터 클래스로 전환 적용 데이터 레코드는 정의하고 사용하기 간단하지만, 계산해서 얻을 수 있는 값과 그렇지 않은 값을 명확히 구분해야 하는 단점..

    [리팩터링 2판] 6장 - 기본적인 리팩터링

    6장을 읽고나서의 느낌은 기능의 공통점을 잘 찾아내어 같은 공통점끼리 묶고 나누는 것이 중요하다는 것이다. 예를 들어 아래의 그림 밴다이어그램이 하나의 함수에 담겨져 있으면, 정확히 함수 셋 (교집합, 노랑, 보라) 라고 이름을 지어 이름에 맞게 각각 나누어 담는 것이라 느꼈다. 6.1 함수 추출하기 반대 리팩터링 : 6.2 함수 인라인하기 내용 코드가 하는 일을 '목적과 구현'을 기준으로 분리하여 함수로 추출하고 목적에 맞는 함수 이름을 붙이는 것. 적용 함수 안에 코드가 5~6줄 이상 넘어갈 때 부터. 코드가 하는 일이 무엇인지 파악하기 어려운 경우. 함수안 코드가 1줄이라도 적용. - 색상을 반전시켜 강조하는 highlight() 메서드의 경우 본문에 reverse() 메서드 호출 1라인만 작성, ..

    리펙터링 2판 - 2~3장

    리펙토링은 무엇인가에 대해 정의를 내리는듯한 설명을 다방면에서 계속한다. 다른 문장이지만 같은 뜻을 나타내고 있는 문장이 많다. 리펙토링에 대해 중요시하지 않거나, 리펙토링을 처음 접하는 사람에게는 이해가 안 되는 방법이기 때문에 책에서 여러 방면으로 리펙토링에 대해 설명해주고 있다고 생각한다. 이 책에서 리펙토링에 대해 다방면으로 설명을 하면 이해가 되는 부분이 있고, 그렇지 않은 부분이 있다. 하지만 리펙토링을 하지 않았을 때를 생각하고 그 후를 조금이나마 예측을 한다면 하는 것이 분명히 낫다는 것을 알 수 있었다. 2장. 리팩터링 원칙 1장에서 리팩터링을 코드와 함께 예시를 들어 설명하면, 여기서는 글로써 설명을 하게 된다. 리팩터링 : 소프트웨어의 겉보기 동작은 그대로 유지한채, 코드를 이해하고 ..

    콜라츠 추측 (연습문제 Lv1 / JS)

    https://programmers.co.kr/learn/courses/30/lessons/12943?language=javascript 문제 위 조건식을 반복하고, 몇번 반복했는지 출력을 하는데 500번 까지 시도를 하여도, 1이 되지 않을경우 -1을 리턴하는 문제 입니다. 해당 조건에 따른 반복을 하는 것이기에 while 또는 재귀함수를 생각했습니다. 코드 function solution(num) { let count = 0; while(num!=1 && count!=500){ if(num%2==0) num = num/2 else{ num = num*3+1; } count++; } return num == 1 ? count : -1; } while의 조건식을 설정해주고(num이 1이 되거나, coun..

    리팩터링 2판 - 1장

    로또에 당첨된다면 누구나 다 좋다는 것은 알고 있다. 하지만 돈이 많던 적던 그 당첨되었을 때 기분은 당첨되지 않는 이상 모르는 것이다. 이 책 1장을 읽으면서의 느낌이었다. 글쓴이는 오히려 예시를 들면 모든게 명확해진다고 하여 예시를 앞에서 부터 바로 보여주었지만, 오히려 나는 반감의 효과가 있었다. 예시가 뜬금 없었다고 해야할까.. 그래도 세부적인 기술들은 뒷장에서 소개되는 것 같아 기대되는 부분이 있다. 1장에서 말하고자 하는 내용을 다 동의하고 이해하나, 일부만 공감이 갔다. 왜냐하면 리팩터링이 필요한 경험이 없고, 단지 프로젝트를 하면서 느꼈던 것이 전부였기 때문에, 프로젝트의 리팩터링의 의지가 있기에 일부만 공감이 갔다. 이 책을 보통 주니어에서 시니어 경력사이에 추천한다. 나는 아직 신입 조..

    하샤드 수 (연습문제 Lv1 / JS)

    https://programmers.co.kr/learn/courses/30/lessons/12947?language=javascript 문제 하샤드 수는, 각 자리의 숫자를 개별로 더한 뒤 기존 숫자를 나누어 떨어지면 true 그렇지 않으면 false를 출력합니다. 코드 function solution(x) { return !(x % String(x).split('').reduce((a, b)=> Number(a) + Number(b))) } 1. ! 를 붙이면 빠르게 boolean 값을 출력할 수 있습니다. 2. String과 split("")를 사용하여 각 자리의 숫자를 나누었습니다. 3. reduce로 각 배열의 숫자를 더해주지만, 배열의 요소들은 string 형태임으로 Number로 다시 바꿔주..