본문 바로가기

Sparta/TIL

(55)
[TIL] AWS 공부하는 중 용어정리 1. 컴퓨팅 서비스 1)EC2 AWS에서 가장 기본적이고 널리 쓰이는 인프라로, 물리환경의 컴퓨터처럼 컴퓨팅 리소스를 제공하는 서비스다. 클라우드에서 컴퓨팅 파워와 규모를 자유자재로 변경할 수 있다. 가상 머신으로 제공되며 인스턴스라고 불린다. 안정성을 위해 여러 AWS 리전과 가용역역에 걸쳐 배포된다. 2)Lambda(Serverless Computing) 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도 관리없이 실행하는 서비스 사용자는 서버에 대한 걱정없이 코드만으로 서비스를 실행할 수 있다. serverless 아키텍처 구현에 사용 서버 및 운영체제 유지보수, 용량 프로비저닝 및 자동확장, 코드 모니터링 및 로깅과 같은 컴퓨팅 리소스의 모든 관리를 자체적으로 수행하므로 Lambda가 ..
[TIL] 삽입정렬, 병합정렬 with Javascript 3. 삽입정렬(Insertion sort) 회전을 돌 때마다 정렬한 요소를 왼쪽에 쌓아가면서 각 요소를 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입함으로써 정렬하는 알고리즘. 손안의 카드를 정렬하는 방법과 유사하며, 매 회전마다 해당원소를 삽입할 수 있는 위치를 찾아 해당 위치에 삽입한다. 키 값은 2번째 인덱스부터 시작되며 키 값이 자료의 길이만큼 이동하면 정렬이 완성됨. 1) 과정 i. 배열에서 두번째 요소(key)를 선택하여 루프를 시작 ii. 두번째 요소를 이전 요소와 비교하여 더 작은 경우 교체한다. iii. 다음 요소로 계속 진행하며 왼쪽에 이미 정렬된 부분에서 반복문을 돌려 해당 요소가 있어야 할 위치에 삽입. 2) Big O O(n)의 시간복잡도를 지닌다. 최악의 경우, 즉 ..
[TIL] 선택정렬, 버블정렬 with Javascript in place 알고리즘은 자료구조를 추가로 사용하지 않고 입력을 변환하는 알고리즘이다. 종류는 다음과 같다. 1. 선택정렬 정렬되지 않은 데이터들에 대해 가장 작은 값을 찾아 가장 앞의 값과 교환해나가는 방식이다. n번째 회전이 끝날 때마다 앞에서 n번째 데이터의 위치가 정해진다. 1) 과정 i. 주어진 리스트중 최솟값을 찾는다. ii. 그 값을 맨 앞에 위치한 값과 교체한다. iii. 맨 처음 위치를 뺀 나머지 리스트들을 같은 방법으로 교체한다. 2) Big O O(n^2)의 시간복잡도를 지닌다. 또한 이미 정렬되어 있는 배열을 탐색해도 마찬가지다. 매번 정해진 자리에 올 수 있는 최솟값을 찾아야하기 때문에 성능이 매우 떨어진다. 단순한 편이며 사용할 수 있는 메모리가 제한적일 경우 사용시 이점이 있..
[TIL] AWS S3 생성하고 연결하기 AWS를 설정하는 것에 막연한 두려움이 있었는데 이번 기회에 조금 극복할 수 있었던 것 같다. 그대로 따라하면 된다지만 네트워크는 수많은 설정이 있고 구글링을 해도 각 자료마다 내용이 다른 경우도 있어서 어떤 것을 채택해야할 지 고민이었다. 이번에 한건 해결했으니 과정을 정리해보려 한다. 1. 버킷 생성 1) S3 메인 페이지에서 버킷 만들기 클릭 2) AWS 리전-> 서울로 / 이름 설정 3) 모든 퍼블릭 엑세스 차단 - 해제하고 적절한 항목선택 4) 버킷 만들기 클릭 2. 권한 설정 1) 버킷 이름 클릭 - 아래로 스크롤해서 권한탭 클릭 - 버킷 정책 부분에서 편집 클릭 2) 정책 생성기 클릭하면 볼수있는 화면인데 아래와 같이 설정 aws service는 setobject, putobect 설정 pr..
[TIL] Docker 프로젝트에 적용하기 이번 프로젝트에서는 개발 및 배포환경을 컨테이너화 시켜 구축하기 위해 도커를 사용해보기로 했다. 도커는 개발환경을 이미지화 시켜서 관리할 수 있게 한다. 1. 도커의 장점 1) 버전 관리 도커 이미치에 언어나 프레임워크 버전을 미리 정해놓고 해당 이미지를 컨테이너화 하면 그 컨테이너는 로컬환경의 간섭 없이 독립적으로 구동하기 때문에 버전이 달라서 발생하는 이슈를 해결할 수 있다. 또한 Dockerfile을 사용하면 설치할 언어, 프레임워크, 패키지 등을 미리 코드형태로 명시하고 어느 컴퓨터에서든 쉽게 자동으로 설치할 수 있다. 2) 환경 설정 서버 컴퓨터를 내 개발환경과 같은 환경으로 쉽게 설정할 수 있다. 서버를 옮기거나 늘릴 때 새로운 서버에 하나하나 이전 서버에서 쓰던 언어나 프레임워크를 설치하지 ..
[TIL] Nest.js Nodemailer를 통한 이메일 인증 구현(1) 이번 프로젝트에서 오랜만에 nodemailer를 통한 회원가입 로직을 만들게 됐다. 지난 번 express에서는 인증 링크가 담긴 메일을 보내 유저가 링크를 클릭하는 것이 트리거가 되어 user 테이블의 isValid 컬럼이 false에서 true로 바뀌며 로그인이 가능하도록 로직을 구성했다. 하지만, 이번에는 레디스를 사용해서 메일로 보낸 인증번호를 저장하고 유저가 일치하는 인증번호를 입력해야 회원가입 로직이 완료되도록 할 생각이다. 일단 redis를 사용해볼 기회가 없었는데 이번 기회에 확실히 해보고 넘어가야겠다는 생각이 들었다. redis는 대표적인 cache 서버 오픈소스로, 필수적인 스택이다. 그런데 redis가 곧 요금제로 바뀐다는 소식을 들어서 이번 기회가 아니면 사용해볼 기회가 없을 지도 ..
24.03.21 TIL - LexoRank(2) 먼저 LexoRank의 공식 문서를 보던 중, 그 전 포스팅에 잊고 명시하지 않은 점이 있다는 것을 깨달았다. LexoRank는 kanban board로 널리 쓰이는 JIRA의 알고리즘이라는 점이다. 설치 명령어는 다음과 같다. 아래의 명령어로 package.json에 설치되어 프로젝트에 이용할 수 있다. 더보기 npm install lexorank yarn add lexorank 메소드는 두가지 형태로 나뉘는데, import {LexoRank} from "lexorank"; // public method // min const minLexoRank = LexoRank.min(); // max const maxLexoRank = LexoRank.max(); // middle const middleLexo..
24.03.19 TIL - LexoRank 1. LexoRank 모듈을 검색하게 된 이유 nest.js로 trello같은 kanban board 시스템을 만들기 위해 로직을 고려하던 중 linked list 자료구조를 채용하려고 했다. 하지만 프로젝트에서 typeOrm을 사용하고 있는 특성상 linked list는 적용이 쉽지 않다는 피드백을 듣고 다른 방법을 고려하고 있었다. 일단, 당초에 함께 고려되었던 부동소수점을 이용한 배열 정렬을 써보자는 의견으로 모아졌다. 하지만 구글링을 하던 중 더 좋은 방법이 있는것 같아 적용해보고자 한다. 2. LexoRank 모듈 구조 Bucket | FixedKey : VariableKey 의 형태로 이루어진 코드이고 각 요소에는 기존 랭킹 시스템의 한계를 극복하기 위한 명확한 역할이 부여돼 있다. 순서를 숫..