본문 바로가기

반응형

분류 전체보기

(501)
section4/Unit10/[Deploy] CI/CD Proxy CORS 정책이 필요한 이유 브라우저에서 기본적으로 API를 요청 할 때에, 브라우저의 현재 주소와 API 의 주소의 도메인이 일치해야만 데이터를 접근 할 수 있게 되어 있다. 만약 다른 도메인에서 API를 요청해서 사용 할 수 있게 해주려면 CORS 설정이 필요하다. CORS 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS : 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다. 출처: 웹 콘텐츠의 출처(origin)는 접근할 때 사용하는 URL의 스킴(프로토콜), 호스트(도메인), 포트로 정의된다. 두 객체의 스킴, 호스트, 포트가 모두 일치..
section4/Unit10/[Deploy] CI/CD CI/CD CI/CD의 "CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다. CI/CD의 "CD"는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환적으로 사용된다. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하..
[알고리즘/javascript]rotateMatrix 문제 2차원 N x N 배열을 시계 방향으로 90도 회전시킨 배열을 리턴해야 합니다. 입력 인자 1 : matrix 가로 길이(matrix[i].length)와 세로 길이(matrix.length)가 모두 N인 2차원 배열 matrix[i][j]는 number 타입 출력 2차원 배열을 리턴해야 합니다. 입출력 예시 const matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], ]; console.log(matrix[0][0]); // --> 1 console.log(matrix[3][2]); // --> 15 const rotatedMatrix = rotateMatrix(matrix); console.log(rotatedMa..
section4/Unit9/[Deploy] Amazon Web Service(AWS 배포) Amazon Web Service Cloud Computing 클라우드 시스템이 존재하지 않았던 시대에는 전산실에 다수의 컴퓨터를 두고 서버를 운영하였다. 하지만 서버는 한계점이 명확하게 존재하기 때문에 수용능력이 한계에 도달하면 새로운 전산실을 구축하거나 컴퓨터를 추가로 구축을 해야했다. 이 방법은 금액적으로 또는 공간적으로도 매우 비효율적인 방법이다. 이런 상황에서 추가적인 서버 증설이 어렵게 되자 일부 거대 기업은 데이터 센터라는 거대한 건물을 세우기 시작했다. 이때부터 데이터 센터의 유휴 자원을 대여하는 서비스가 등장하기 시작했다. 즉 서버의 자원과 공간, 및 네트워크 환경을 제공을 빌려 사용하는 클라우드 컴퓨팅이 시작된 순간이다. 데이터 센터에서는 서버의 자원과 공간, 및 네트워크 환경을 제공한..
[알고리즘/javascript] mergeSort 문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr[i]는 정수 arr.length 100,000 이하 출력 number 타입을 요소로 갖는 배열을 리턴해야 합니다. 배열의 요소는 오름차순으로 정렬되어야 합니다. arr[i] [1, 3, 21] 힌트 병합 정렬은 표준 라이브러리에서 정렬을 구현할 때 퀵 정렬이나 힙 정렬의 대안으로 사용하는 최적화된 정렬 알고리즘입니다. 병합 정렬은 다음과 같은 알고리즘을 사용합니다. N의 길이를 가진 배열 리스트를 1의 길이를 가진 "부분 리스트"가 N개 모인 것으로 취급합니다. 인접한 부분 리스트들을 정렬하여 2의 길이를 가진 부분 리스트로 병합합니다. 2의 길이를 가진 ..
Lighthouse - Opportunities를 통해 최적화하기 Ligthhouse란 크롬에서 제공하는 웹사이트의 성능을 측정하는 도구이다. 모바일, 데스크탑 모두 지원하며, 카테고리에는 Perfomance, Progressive web app, seo 등 다양한 지표가 있다. 위 카테고리 중 'Performance'를 집중적으로 살펴보자. Performance 항목은 말 그대로 웹 사이트의 성능을에 대한 부분이다. 간단하게는 '얼마나 빠르게 불러오느냐'를 측정하는 것이다. 나는 연습삼아 Naver의 성능을 측정해보았고 결과는 아래와 같았다. 조금 더 밑으로 내리면 'Opportunities' 라는 항목이 나온다. Performance 지표에서는 이 항목을 통해 어떻게 하면 웹 페이지의 렌더링 속도를 개선시킬 수 있는지에 대한 설명도 함께 나와 있다(성능 점수에는 직..
section4/Unit8/[최적화] Optimization Optimization 최적화는 보통 주어진 조건으로 최대 효율을 낼 수 있도록 하는 것을 의미한다. 컴퓨터 공학에서의 최적화는 가능한 적은 리소스를 소모하면서 가능한 한 빠르게 원하는 결과를 얻을 수 있도록 하는 것을 의미한다. 알고리즘 문제를 푸는 것을 생각하면 이해하기 쉽다. 원하는 결과가 나온다면, 메모리를 조금이라도 덜 소모하거나 연산 횟수가 한 번이라도 더 적은 코드가 더 효율적이고 최적화된 코드이다. 더 적은 비용, 더 적은 시간을 소모하기 때문이다. 웹 개발에서의 최적화는 바로 주어진 조건 아래에서 최대한 빠르게 화면을 표시하도록 만드는 것이다. 최적화의 필요성 및 효과 1. 이탈률 감소 웹 개발에서의 최적화는 화면을 최대한 빠른 속도로 표시하게 하는 것이라고 했다. 이는 최적화가 잘되지 ..
section4/Unit7/[Testing] TDD TDD 방법론 TDD(Test-driven Development)는 코드를 작성하기 전에 테스트를 쓰는 소프트웨어 개발 방법론이다. 다시 말해, 개발자 자신이 바람직하다고 생각하는 코드의 결과를 미리 정의하고, 이것을 바탕으로 코드를 작성하는 법이다. TDD를 통해 소프트웨어를 개발한다는 것은 작은 단위의 테스트 케이스를 작성하고, 이를 통과하는 코드를 작성하는 과정을 반복하는 것을 의미한다. TDD의 개발 주기를 그림으로 나타내면 아래와 같이 총 3단계로 이루어진다. Write Failing Test: 실패하는 테스트 코드를 먼저 작성한다. Make Test Pass: 테스트 코드를 성공시키기 위한 실제 코드를 작성한다. Refactor: 중복 코드 제거, 일반화 등의 리팩토링을 수행한다. 이 과정에서..

반응형