[프로그래머스] K번째수 (Javascript) 문제 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 풀이 function solution(array, commands) { const answer = []; for(let i = 0; i a-b) answer.push(sortedArray[commands[i][2] -1]); } return answer; } Study/알고리즘 2022.02.19
Cannot read properties of undefined (reading 'split') 에러 react로 웹페이지 작업을 하던 도중 서버에서 받은 date를 split을 이용하여 포맷을 변경하려고 했습니다. 그런데 Cannot read property undefined of split 에러를 마주했습니다. date 값도 제대로 받아오는데 어떤것이 문제인지 전혀 감이 잡히지 않았습니다. 다른 방법으로 해결을 하려고 했지만 분명 해결법이 있을 것이라 생각했습니다. 위와 같이 작성 후 실행.. 웹페이지에도 정상적으로 출력됐습니다 :) Dev/Error 2022.02.12
시간 복잡도란? 시간복잡도 시간 복잡도란 알고리즘을 구성하는 명령어들이 문제를 해결하는데 걸리는 시간을 뜻합니다. Big-O 표기법 Big-O표기법은 알고리즘의 시간 복잡도를 나타내는 표기법입니다. O(1) (Constant) 입력 데이터의 크기와 관계없이 항상 일정한 시간이 걸리는 알고리즘을 뜻합니다. O(log₂ n) (Logarithmic) 입력 데이터의 크기에 비례하여 처리시간이 증가하는 알고리즘을 뜻합니다. O(n) (Linear) 입력 데이터의 크기에 비례해 처리 시간이 증가하는 알고리즘을 뜻합니다. O(n log₂ n) (Linear-Logarithmic) 데이터가 늘어날수록 처리시간이 log 배수만큼 더 증가하는 알고리즘을 뜻합니다 O(n²) (Quadratic) 데이터가 늘어날수록 처리시간이 급수적으로 .. Study/알고리즘 2022.01.29
Git Flow git flow는 git으로 형상관리를 할 경우 브랜치를 효율적으로 관리하기 위해 사용하는 브랜치 전략입니다. 프로젝트 규모가 커지면 관리하기가 굉장히 용이해지는 장점때문에 git flow를 사용하는 이유입니다. git flow는 총 5가지 브랜치로 나누어집니다. master, develop, feature, release, hotfix 로 이루어져 있습니다. 브랜치 마다의 역할은 feature : 기능을 구현을 담당하는 브랜치입니다. develop : 개발을 진행하는 브랜치입니다. release : 개발된 애용을 배포하기 위해서 준비하는 브랜치입니다. hotfix : 배포된 코드에서 발생한 버그를 수정하는 브랜치입니다. master : 최종적으로 배포되는 브랜치입니다. 아래 사진은 git flow를 설.. Study/Git 2022.01.27
웹 동작 방식 1,2. 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력합니다. 3. 사용자가 입력한 URL 주소 중에서 도메인 네임 부분을 DNS 서버에서 검색합니다. 4. DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달합니다. 5,6. 웹 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성합니다. 이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송됩니다. 7. 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환됩니다. 8. 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데이터를 검색합니다. .. Study/Network 2022.01.26
이벤트 루프(Event Loop)란? 자바스크립트 엔진은 Memory Heap과 Call Stack으로 구성되어 있습니다. 자바스크립트는 싱글 스레드 기반 언어여서 한 번에 하나의 작업을 처리합니다. 이말은 즉 Call Stack이 하나라는 뜻 입니다. Call Stack에서 실행된 비동기 함수는 Web API를 호출하며, Web API는 콜백함수를 Callback Queue에 넣어줍니다. Memory Heap은 프로그래밍을 할 때 선언된 변수나 함수 등이 담겨 메모리 할당이 일어나는 곳 입니다. Call Stack은 코드가 실행될 때 보관되는 영역입니다.(Stack LIFO(Last In First Out) 선입후출 구조) Callback, Task Queue 는 비동기로 실행된 콜백 함수가 보관되는 영역입니다.(Queue FIFO(Fir.. Study/JavaScript 2022.01.24
모놀로식 / 마이크로서비스 아키텍처 모놀로식 아키텍처 (Monolithic Architecture) 장점 1. 어떤 기능이든 개발되어있는 환경이 같아서 복잡하지않다. 2. 보다 쉽게 고가용성 서버 환경을 만들 수 있다. 3. End-to-End 테스트가 용이하다. 단점 1. 배포 시간이 오래 걸린다. 2. scale-out이 어렵다. 3. 부분 장애가 전체 서비스의 장애로 확대될 수 있다. 4. 서비스 변경이 번거롭고, 유지보수가 힘들다. 마이크로서비스 아키텍처 (MicroService Architecture) 장점 1. 서비스 별 개별 배포가 가능하여 배포 속도가 빠릅니다 2. 확장성이 용이합니다 3. 특별 장애가 전체 서비스로 확장될 가능성이 적습니다. 단점 1. API를 사용하기 때문에 통신비용이나 대기시간이 늘어날 수 있습니다. 2.. Study/용어 2022.01.12
[Error] npm install 후 reify~ 프리징 2021-12-27 등록 npm install을 하고 나면 install 하는 중간에 reify:fsevents: timing ~f 라는 문구와 함께 putty가 먹통이 됐다 ec2 인스턴스를 중지 -> 인스턴스 시작 -> 폴더 삭제 -> git clone -> npm install 이 과정을 두 번 반복 했었는데도 결과는 여전했다. 구글링을 해보니 node version을 16에서 14로 다운그레이드 하니 문제가 해결됐다는 글이 있었습니다. 저도 node version이 16이기 때문에 시행해보기 전에 다른 해결법이 눈에 들어왔습니다. npm isntall --verbose 위의 명령어로 문제를 해결했던 경우가 있었다고 해서 시도해봤습니다. 문제가 해결되었고 npm run build까지 정상적으로 성공.. Dev/Error 2022.01.10
[Error] npm run build 후 hangs forever 2022-01-09 작성 ec2에 npm run build를 하면 중간에 hangs forever 이슈가 생겼다. 웃긴건 매번 빌드가 안 먹혔으면 정확히 문제가 있다는 것을 파악했겠지만 같은 상황인데도 빌드가 될 경우가 있고 안 될 경우가 있었다. 나는 단지 상황에 따른 인스턴스의 성능 차이라고 생각을 했다. 하지만 이번에는 몇 번 시도를 했음에도 불구하고 빌드가 전혀 되지 않았다. 프리징이 아니라 시간이 오래걸리는거라고 생각을 해보고 30분 정도 시간을 소요해봤지만 결과는 똑같았다. 어떠한 이유에 의한 프리징인지 hangs forever인지 퍼포먼스 저하인지 정확한 답을 얻지는 못했지만 잘못됐다는 것은 알 수 있었다. 구글링과 자문을 구한 결과 ec2가 프리티어여서 빌드가 안될거라는 답변을 받았습니다... Dev/Error 2022.01.09
TDD 방법론이란? TDD TDD란 Test-Driven-Development의 줄임말 이며, 테스트 주도 개발이란 의미입니다. 테스트를 먼저 만들어놓고 테스트를 통과하기 위해 프로세스를 짜는 것을 뜻합니다. 장점 1. 튼튼한 객체 지향적인 코드를 짤 수 있습니다. 2. 예외상황에서의 유연성과 재설계 시 시간을 단축시킬 수 있습니다. 3. 디버깅 시간을 단축시킬 수 있습니다. 단점 1. 생산성이 저하됩니다. 2. 처음부터 완벽한 설계는 어려울 수 있습니다. 3. 버그 검출 능력 감소 또는 코드의 품질이 저하될 수 있습니다. 4. 테스트 비용이 증가할 수 있습니다. Study/용어 2021.12.22