[TIL] 카테고리
-
[코어자바스크립트] 기본형 데이터와 참조형 데이터 / 참조형 데이터의 메모리 할당 방식[TIL] 카테고리/JavaScript 2022. 6. 15. 16:39
1-4-1 불변값 변수(variable)와 상수(constant)를 구분하는 성질은 변경 가능성이다. (바꿀수 있으면 변수, 없으면 상수) 이 때, 변경 가능성의 대상은 변수영역 메모리이다. (즉, 데이터의 주소값이 저장되는 부분이다.) 한번 데이터 할당이 이뤄진 변수공간에 다른 데이터를 재할당 할수 있다면 변수이다. 기본형 데이터인 숫자, 문자열, 불리언, null, undefined는 모두 불변값이다. 한번 데이터 영역의 어떤 주소에 값이 만들어지면, 그 값은 (가비지 컬렉팅을 당하지 않는 한)절대 변경되지 않는다. 만약 변수에서 데이터 변경이 일어난다면, 데이터 영역에 새로운 공간을 만들어 다시 연결한다. 1-4-2 가변값 참조형 데이터에는 객체의 변수(프로퍼티) 영역이 별도로 존재한다. 데이터 영..
-
[코어자바스크립트] 데이터는 어떻게 저장될까? 변수 선언과 데이터 할당[TIL] 카테고리/JavaScript 2022. 6. 15. 11:06
1-1 데이터 타입의 종류 1-2-1 메모리와 데이터 1비트 : 메모리의 가장 작은 조각. 0 또는 1. 각 비트는 고유한 식별자로 위치를 확인 할 수 있다. 1byte = 8비트 : 컴퓨터에서 사용하는 데이터의 기본 단위. 28 = 256개의 값을 표현 가능. 바이트 단위의 식별자 ( = 메모리 주솟값, memory address)를 통해 서로 구분하고 연결할 수 있다. 왜 8비트씩 묶게 되었을까? 1) 비트는 너무 작다! 비트 단위로 쪼개진 데이터를 검색해서 위치를 확인하는 것은 비효율적이다. 2) 비트를 묶어줌으로 인해 메모리 검색 시간을 줄일 수 있고, 표현할 수 있는 데이터의 개수도 늘릴 수 있다. 3) 그러나 너무 큰 단위로 묶게 되면, 불필요하게 남는 빈 공간 (= 낭비되는 비트)가 생겨나게..
-
[React-Window] 리액트-윈도우 패키지로 윈도잉 기법 써보기 (가상화 목록, 무한스크롤?)[TIL] 카테고리/React 2022. 6. 15. 00:46
와 ㅠㅠ 하루 종일 골머리 무진장 썩어가면서 여튼 해냈다 ㅠㅠ 사실 맞게 했는지는 아직도 잘모르겠다...... 그렇지만 해냈다..! 무한스크롤이 너무 해보고 싶어서 어떻게 구현해볼까 하다가 기술매니저님의 윈도잉 기법을 사용해보라는 조언을 받고 react-window 를 사용한 가상화 목록 (List Virtualization / Windowing) 구현에 도전했다. 하다보니 사실 무한스크롤과는 조금 다른 개념이란 걸 알게되었지만, 1) 일반적인 방법의 무한 스크롤은 남은 항해기간 동안에도 충분히 또 해볼 수 있을 것 같았고 2) 백엔드분들이 너무 바빠보여서(...) 부가적인 기능으로 부담을 안겨주기가 싫었다.. 3) 결국 렌더링 비용을 줄여 페이지 초기 로딩 속도를 개선한다는 측면에서 목적과 맞았다. (..
-
YouTube Data API v3 으로 유튜브 검색 결과 가져오기[TIL] 카테고리/기타 2022. 6. 13. 18:38
미니 프로젝트를 진행하다가 사용자가 동영상 URL을 입력해야 하는 부분에서, 유튜브에서 직접 가져오도록 하는 것이 어떻겠냐는 기술 멘토님의 조언을 받았다. ..? 그거 어떻게 하는건데요...? 유튜브에서 검색결과를 가지고 오려면 YouTube Data API v3을 이용해야한다고 한다 :) (추천 영상 리스트를 가져오거나, 특정 채널의 동영상 리스트를 가져오거나, 영상 댓글을 가져오거나, 영상을 올리는 등등.. 많은 일들이 이 API를 사용해서 가능하다. https://console.cloud.google.com/ Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 구글 클라우드 플랫폼 콘솔에서 프로젝트를 추가해주고, 유튜브를 검색해서 YouTub..
-
[자바스크립트] 프로그래머스 Lv.1 신고 결과 받기[TIL] 카테고리/알고리즘 문제풀기 2022. 6. 3. 11:39
Lv.1 의 마지막 문제!! 내일은 Lv.2를 도전해볼까 백준으로 갈까.. 고민된다 ㅋㅋ... 점점 더 어려운걸 도전하는게 맞는거 같기도 하고, 아직 Lv.1 도 좀 어려운게 있는데 + 효율적인 코드로 못 푸는데..? ㅋㅋㅋㅋ 내일 한번 도전해보고 생각해야겠다! let reported_by = id_list.map((id) => []) let answer = id_list.map((id) => 0) report = report.map((r) => r.split(' ')).forEach((r, i) => { if (! reported_by[id_list.indexOf(r[1])].includes(r[0])) { reported_by[id_list.indexOf(r[1])].push(r[0])} }) rep..
-
[자바스크립트] 프로그래머스 Lv.1 크레인 인형뽑기 게임[TIL] 카테고리/알고리즘 문제풀기 2022. 6. 1. 22:20
이건 이전 문제보다는 비교적 수월하게? 풀었다. let basket = [] moves.forEach((t) => { for (rows of board) { if (rows[t-1] !== 0) { basket.push(rows[t-1]) rows[t-1] = 0 break } } }) while (basket.some((d,i) => d === basket[i+1])) { basket.forEach((d,i) => { if (d === basket[i+1]) { basket.splice(i, 2) answer += 2 } } ) } 우선 바구니 배열을 만들어서, 뽑은 인형들을 차례로 담아주고, 인형끼리 붙은 경우 answer의 카운트를 올리고 바구니에서 빼주는 걸로! https://programmers..
-
[자바스크립트] 프로그래머스 Lv.1 [1차]다트게임[TIL] 카테고리/알고리즘 문제풀기 2022. 6. 1. 22:20
....! 어렵지 않게 풀 줄 알았는데 처음 짠 로직에 생각보다 예외 케이스가 너무 많았던 것이었다...! (일단 숫자 10(...), 첫번째 Score가 스타상일때, 스타상 옵션이 중첩될때...) 결국 이것저것 조건을 덧붙이다보니 괴상한 녀석이 탄생했다. 으... 지저분해.... let answer = dartResult.split('').map((s,i) => s === 'S' ? dartResult[i-1] === '0' && dartResult[i-2] === '1' ? 10 : dartResult[i-1]**1 : s === 'D' ? dartResult[i-1] === '0' && dartResult[i-2] === '1' ? 100 : dartResult[i-1]**2 : s === 'T' ..
-
[자바스크립트] 프로그래머스 Lv.1 [1차] 보물지도[TIL] 카테고리/알고리즘 문제풀기 2022. 5. 31. 03:59
let answer = [] let rowLength = Math.max(...arr1,...arr2).toString(2).split('').length arr1 = arr1.map((rows) => rows.toString(2).split('')) arr2 = arr2.map((rows) => rows.toString(2).split('')) for (i=0; i { blocks = blocks*1 + arr2[i][j]*1; return blocks > 0 ? '#' : ' ' } ).join('')) } 1) 보물지도의 폭(↔)기준을 먼저 잡았다 -> 맨앞이 0 이면 자릿수가 사라지는 문제때문 2) arr1과 arr2에 담긴 숫자를 각각 2진수로 변환 후 한 글자씩 쪼갠 배열로 만들어주었다. 3)..