전체 글

백수를 탈출하기 위해 공부중입니다
· JavaScript
메서드가 너무 많기 때문에.. 차차 정리할 예정Object객체는 mutable이다. 키가 중복이 되면 덮어 쓴다. Property객체 내부의 속성을 의미한다, 객체는 Property의 집합이다. key와 value의 쌍으로 구성되어 있다.  ✔️ Object.keys(obj)객체의 키만 담은 배열을 반환,  Symbol은 keys를 통해 나오지 않는다. const key = Object.keys(user);✔️ Reflect.ownKeys(obj)Symbol도 함께 출력 할 수 있다.console.log("🚀 ~ key:", key, Reflect.ownKeys(user)); key값은 대괄호를 씌워주자const k = "id";const { [k]: dd } = user;console.log("🚀 ..
· JavaScript
클로저를 이해하기 위해선 실행 컨텍스트 개념을 알아야 한다.📌 클로저Lexical Environment의 조합. 상위 스코프의 식별자를 참조하는 하위 스코프의 함수가 더 오래 살아 있는 것 함수가 특정 스코프에 접근할 있도록 의도적으로 그 스코프에서 정의하는 것함수라기 보단 이러한 상황을 클로저라고 의미한다.특정함수의 EnvRec를 외부에서 참조할 수 있도록 의도적으로 return되는 함수이다. let userFn;{ const privateUser = { id: 1, name: 'Hong' }; userFn = () => privateUser; // 이 user 변수가 하위(Block) 스코프의 privateUser를 참조} // block은 끝나서 이 block의 BlockExecutionCo..
· JavaScript
메모이제이션계산을 줄여 성능을 향상시키는 방법이다. 처음 계산하여 결과값이 나왔다면 저장하고, 나중에 동일한 인수에 대한 결과가 다시 필요할 경우 다시 계산하는 대신 저장된 결과를 return 한다. 이렇게 결과를 캐싱하여 작업 속도를 높을 수 있다. 예제1 : 팩토리얼 함수//메모이제이션을 이용하여 팩토리얼 함수 만들기const memoizedFactorial = memoized(function A(n) { memoizedFactorialRunCnt += 1; if (n === 1) return 1; return n * memoizedFactorial(n - 1);});let memoizedFactorialRunCnt = 0; // 실행횟수 계산console.log(memoizedFactorial..
· JavaScript
📌 스코프각 식별자들의 유효 범위, 참조 대상 식별자를 찾아내기 위한 규칙이다. 이 규칙으로 자바스크립트는 식별차를 검색할 때 사용하는 규칙으로 작용한다.if, for, function과 같은 범위를 통해 각자 자신이 유효한 범위를 갖는다. 이러한 규칙때문에 같은 이름일 경우에 충돌이 나지 않는다. Global ScopeFunction ScopeBlock Scope전역 스코프와 지역 스코프전역 스코프(Global Scope)자바스크립트 코드의 최상위 레벨에 해당하는 스코프로 함수 어디에서든 접근이 가능하다. 지역 스코프(Local Scope)특정 함수에 해당하는 스코프로 해당 함수 자신과 하위 함수에서만 자원에 접근이 가능하다. 전역 스코프 이외의 스코프들을 의미한다. (함수레벨 스코프, 블록 스코프,..
· JavaScript
📌 Strict Mode암묵적으로 sloppy mode를 해제하기 위한 방법이다. 오해의 소지가 있는 구문을 문법적으로 명확하게 평가하는 것이다.호이스팅은 function foo() { x = 10;}foo();console.log(x);ES5이전선언하지 않는 변수 x에 10을 할당 할 경우,자바스크립트 엔진은 x변수가 어디에서 선언되었는지 스코프 체인을 통해 검색했는데 어디에도 없다 ReferenceError가 발생할까?NO , 자바스크립트 엔진은 암묵적 전역 객체에 x 프로퍼티를 동적 생성한다. 이때 전역 객체의 x프로퍼티는 마치 전역 변수처럼 사용할 수 있다. 이를 암묵적 전역 이라고 한다.ES5이후Strict mode추가Strict mode는 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 ..
· JavaScript
const { id, name, addr = 'Seoul' } = { id: 1, name: 'Hong', add: 'Pusan' }; const id = 1;const name = 'Hong';const addr = 'Seoul'; Swap이 이렇게 가능하다.Swapping할 때, 스택에 있는 메모리 주소를 할당하기 때문에  새로운 주소값이 생성되게 되고,변수는 모두  immutable이기 때문에 새로운 주소를 할당하게 된다. 나중에 boolean이 들어갈 수도 있고, String이 들어갈 수 있기 때문에 그렇다.[a, b] = [b, a]; //let t = a; a = b; b = t;Class Destructuringlass A { constructor(a,b) { this.a = a; ..
· JavaScript
📌 호이스팅인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 말한다. 선언문을 코드의 선두로 끌어올려진 것처럼 동작하는 것은 자바스크립트의 고유한 현상이다.console.log(x) //print: undefinedvar x = 1 다른 언어일 경우에 선언을 하기 전 print를 하게 되었다면 정의되지 않았다는 문구를 받게 될 것이다. 하지만 자바스크립트는 에러가 나오지 않고 undefined를 출력하게 된다.  이것이 호이스팅이다.  📌 자바스크립트 엔진 동작 과정(간략)크게 소스코드의 평가(호이스팅)과 소스코드의 실행으로 나누어서 과정을 처리하게 된다. 소스코드의 평가이 과정에서는 실행 컨텍스트를 생성하고 변수, 함수 등 선언문만 먼저 실행하여 변수나 함수 식별자를 키로 실행..
· CodingTest
문제https://www.acmicpc.net/problem/2470❌ 틀린 풀이import sysimport itertoolsinput = sys.stdin.readlineN = int(input())li = map(int, input().split())nCr = list(itertools.combinations(li, 2))sumArr = []for i in range(len(nCr)): sumArr.append(abs(sum(nCr[i])))minIndex = sumArr.index(min(sumArr))print(nCr[minIndex][0], nCr[minIndex][1], sep=" ") combination을 이용해 모든 경우의 수를 구하고 있다. 그래서 N이 커질수록 급격하게 조합의 ..
· 기타
📌  MergeMerge, 브랜치를 합치는 것이다. git branch를 다른 branch로 합치는 과정을 merge라고 한다. merge의 기본 단위는 branch이다.💡 Merge의 종류Fast-Forward merge시간의 흐름대로 커밋된 내역을 병합한다.Conflict 발생이 없고 100% Auto-merge된다. merge후 모든 commit이 복제 된다. 따라서 merge시에 commit을 따로 생성하지 않고 현재 위치한 브랜치의 최신 커밋이 병합할 브랜치의 최신 커밋으로 이동하며 병합된다.3-Way merge두 개 이상의 브랜치로 파생된 커밋을 병합한다.  충돌(conflict) 가능성 있고병합 메시지(merge commit) 존재한다. 3-way merge를 남발하게 되면 commit ..
· 기타
📌 NVM Node Version Management로 노드 버전을 관리해 주는 툴이다. 프로젝트 마다 다른 node 버전을 사용할 가능성이 높다. 그럴 때 마다 쉽게 node버전을 바꿀 수 있게 도와준다. 📌 .nvmrc프로젝트의 루트에 .nvmrc 파일을 만든다. echo "22" > .nvmrc 이런식으로 터미널을 통해 만들던가, GUI에서 파일을 만들어 놔도 된다. 파일안에는 해당 프로젝트의 노드 버전을 적어 두면 된다. 22버전 Node를 사용할 경우 위와 같이 22 라고 써놓기만 하면 된다.  .nvmrc에 있는 node 버전 적용하기 nvm use.nvmrc 에 버전을 써놓으면 위의 명령어만을 이용해 버전이 자동으로 바뀌게 된다.
unemployedMan
백수탈출기