이 글은 주니어 개발자가 쓴 글로 오류가 있을 수 있습니다. 문제가 있거나 수정이 필요한 부분은 댓글로 알려주시면 감사하겠습니다. Mozilla 기여자가 작성한 MDN에 대해는 CC-BY-SA 2.5 라이선스에 따라 사용할 수 있습니다. 객체 변경 방지 ESMAScript 5에서는 객체를 쉽게 조작할 수 없도록 바꾸는 몇 가지 메서드를 추가했습니다. 한 번 객체를 쉽게 조작할 수 없는 객체로 바꾸고 나면 취소할 수 없습니다. 금지된 동작(아래 표 참조)을 시도할 경우, non strict mode에서는 오류 없이 해당 동작이 무시되고, strict mode에서는 에러가 발생합니다. 예제는 MDN의 예제에 주석과 코드를 일부 추가했습니다. 메서드 확인용 함수 프로퍼티 추가 프로퍼티 삭제 값 읽기 값 쓰기 ..
우선순위 큐(Priority Queue)[참고] 우선순위 큐는 큐의 FIFO 구조를 변형한 것으로 가장 우선순위가 높은 데이터가 가장 먼저 나옵니다. 배열이나 링크드 리스트, 힙으로 구현할 수 있고, 구현 방법에 따라 아래와 같은 시간 복잡도를 갖습니다. 구현 방식 삽입 제거 unordered array O(1) O(n) unordered linked list O(1) O(n) ordered array O(n) O(1) ordered linked list O(n) O(1) heap O(log n) O(log n) 배열이나 링크드 리스트로 구현하는 방법은 매우 간단합니다. 정렬되어 있지 않는 경우, 삽입은 맨 뒤에 하고, 제거할 때 전체를 순회하면서 가장 우선순위가 높은 데이터를 찾아 제거합니다. 정렬되어..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ueobJ/btq8ARoPmlE/hRCMu37aKH9lhPuDSncM61/img.png)
이 글은 주니어 개발자가 쓴 글로 오류가 있을 수 있습니다. 문제가 있거나 수정이 필요한 부분은 댓글로 알려주시면 감사하겠습니다. Mozilla 기여자가 작성한 MDN에 대해는 CC-BY-SA 2.5 라이선스에 따라 사용할 수 있습니다. PerformanceObserver란? 성능 측정 이벤트를 관찰하고 브라우저의 성능 시간 표시 막대에 기록되는 새 성능 항목을 알려줍니다. (2021-06-30 기준 Editor's Draft 단계로 추후 기능이 변경될 수 있습니다) 구문 var performanceObserver = new PerformanceObserver(callback) callback: 관찰되고 있는 성능 이벤트가 발생할 때 호출될 함수. entries: PerformanceObserverEnt..
2021년 2월 15일에 Velog에 작성한 글을 옮겨온 글입니다. 프로그래머스 - 가장 큰 수 풀이 function solution(numbers) { const answer = numbers.sort((a, b) => (('' + b + a) - ('' + a + b))); return answer.every(cur => !cur) ? '0' : answer.join(''); } 처음 문제를 딱 봤을 때는 numbers.sort().reverse().join('')을 생각했는데, 이 로직은 예제처럼 [30, 3]이 있을 때, '330'이 아닌 '303'을 리턴하게 됩니다. 문제를 찬찬히 다시 읽어보니 "정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내라."라고 합니다. 그래서 두 숫자를 문자열로 ..
이 글은 주니어 개발자가 쓴 글로 오류가 있을 수 있습니다. 문제가 있거나 수정이 필요한 부분은 댓글로 알려주시면 감사하겠습니다. Mozilla 기여자가 작성한 MDN에 대해는 CC-BY-SA 2.5 라이선스에 따라 사용할 수 있습니다. IntersectionObserver란? 대상 요소와 그 상위 요소 혹은 최상위 도큐먼트인 viewport와의 교차 영역에 대한 변화를 관찰하여 비동기적으로 감지할 수 있도록 도와줍니다. 쉽게 말하면, 사용자가 스크롤을 하거나 화면 크기를 변경하는 등의 동작으로 해당 요소가 화면에 나타나거나 사라지는 것을 비동기적으로 관찰합니다. 이미지가 화면에 보이기 시작하는 시점에 load를 하는 이미지 lazy loading이나 무한 스크롤, 애니메이션 재생 등에 활용할 수 있습니..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bnt3ye/btq6zq0V6n9/RaIR1WBl1cNp5hH69hgLa1/img.png)
2021년 2월 24일 Velog에 작성할 글을 옮겨온 글입니다. 프로그래머스 - [3차] 압축 function solution(msg) { let answer = []; let dictionary = ['']; for (let i = 65; i < 91; i++) { // 1 사전 초기화 dictionary.push(String.fromCharCode(i)); } for (let i = 0, j, len = msg.length; i < len; i = j) { let w = msg[i]; for (j = i + 1; j < len; j++) { // 2 현재 입력 중 사전에 등재되어 있는 가장 긴 문자열 w 찾기 let c = msg[j]; if (!dictionary.includes(w + c)) {..
2021년 1월 25일 Velog에 작성한 글을 옮겨온 글입니다. 프로그래머스 - 신규 아이디 추천 문제 설명에서 제시한 단계별로 id를 변환하는 과정을 구현합니다. 모든 대문자를 대응되는 소문자로 치환합니다. 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 빈 문자열이라면, "a"를 대입합니다. 길이가 16자 이상이면, 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다. 길이가 2자 이하라면, 마지막 문자를 길이가 3이 될 때까지 반복해..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/FsY3o/btq7yb17s0q/8yBL53r4XGkmgOkkiTYI9k/img.png)
이 글은 주니어 개발자가 쓴 글로 오류가 있을 수 있습니다. 문제가 있거나 수정이 필요한 부분은 댓글로 알려주시면 감사하겠습니다. Mozilla 기여자가 작성한 MDN에 대해는 CC-BY-SA 2.5 라이선스에 따라 사용할 수 있습니다. ResizeObserver란? element의 content box, border box, SVGElement의 bounding box의 변화를 관찰합니다. 리사이징을 다룰 때 발생할 수 있는 무한 콜백 루프와 순환 종속성을 방지합니다. [Test] 기존의 resize 이벤트로는 window의 크기 변화만 감지할 수 있었으나, ResizeObserver가 추가되면 개별 element의 크기도 관찰할 수 있습니다. 참고) Editor's Draft 단계이기 때문에 추후에 ..
- javascript event
- node cp -r
- node file package
- 페이지 특정 위치 link
- sass
- Storybook Error
- 스토리북 에러
- jest
- node fs
- JavaScript
- ECONNRESET
- 인가
- node mkdir -p
- 인증
- file opener preference
- 자바스크립트
- node rm -rf
- make-dir
- ModuleParseError: Module parse failed: Unexpected token
- ELIFECYCLE
- 웹팩 에러
- fs-extra
- rimraf
- Webpack Error
- mkdirp
- 스터디
- 프로그래머스
- createAction
- errno 253
- external editor