전체 글
-
[node] nvm use not working ( 노드 버전 변경 안될때) zsh: bad CPU type in executable: node 에러핸들링node 2022. 7. 5. 10:24
노드의 버전 변경이 안될때 해결법 (M1 맥북기준) nvm deactivate 위 명령어를 터미널에 입력하면, 현재 사용하고있는 노드 버전이 deactivate 됨 그 후, nvm use "원하는 노드버전" 을 하면 원하는 노드버전으로 변경이됨. zsh: bad CPU type in executable: node zsh: bad CPU type in executable: node I have installed nvm using brew. After that, I installed node version of 16 through nvm and check the current version using node -v to see whether the node is working properly. However..
-
[ts] 클래스 protected 프로퍼티에 관해서 알아보자.TypeScript 2022. 7. 5. 10:14
안녕하세요. gaki 입니다. 오늘은 자바스크립트 클래스의 protected 에 관해서 다뤄보겠습니다. A 라는 클래스에 protected 로 정의된 property 와 method 가 있다고 가정합시다. 그럼 A 라는 클래스 내부에서는 당연히 protected 로 정의된 것들에 접근할 수 있습니다. 하지만 외부에서는 A 라는 클래스 안에 protected 된 것들에 접근할 수 없습니다. 여기까지는 private 과 똑같은데요. protected 와 private 의 차이점은, private 는 private 된 속성을 오직 해당 클래스 내부에서만 접근 할 수 있다는 점이지만, protected 는 해당 속성을 해당 클래스 내부 + 자식 클래스 에서도 접근 할 수 있다는 점이 다릅니다. class Per..
-
[ts] 클래스 extends, implements 에 대해서TypeScript 2022. 7. 4. 17:36
계기: 코드를 보다가 클래스의 extends 와 Implements 가 나왔는데, 특히 implements 에 대해서 잘 몰라서 찾아봤습니다. 참고링크 : https://stackoverflow.com/questions/38834625/whats-the-difference-between-extends-and-implements-in-typescript What's the difference between 'extends' and 'implements' in TypeScript I would like to know what Man and Child have in common and how they differ. class Person { name: string; age: number; } class Chi..
-
[javaScript] Duck typing 이란 ?JavaScript 2022. 7. 4. 17:03
계기: 자바스크립트 클래스의 implements 를 이해하기 위해서 우선, duck typing 이 뭔지 알아야 했기 때문에 우선, duck typing 을 공부함. Duck typing 은 객체의 속성이나 메서드를 기준으로 객체의 정체를 선정하는 방법이다. 이름에 그 힌트가 있다. 뒤뚱뒤뚱 걷고, 꽥꽥거리는 무언가는 오리이다. 라는 명제를 보면, 오리의 속성들로 오리라는 것의 정체를 정한다. 이처럼 duck typing 은 객체의 매서드나 속성을 바탕으로 객체의 정체를 정하는 방법이다. 예를들어 무엇이든 drive 시킬 수 있는 매직 완드가 있다고 하자. 스포츠카에 매직 완드를 휘두르면 스포츠카는 drive 하고, 골프채에 매직 완드를 휘두르면 골프채는 drive 한다. 하지만, 종이컵에 매직 완드를 ..
-
-
[python] minheap 구현하기자료구조 2022. 7. 3. 22:38
class MinHeap: def __init__(self): self.queue = [None] def insert(self, num): self.queue.append(num) lastElementIdx = len(self.queue) - 1 parentIdx = lastElementIdx // 2 while (parentIdx >= 1 and self.queue[lastElementIdx] < self.queue[parentIdx]): self.queue[parentIdx], self.queue[lastElementIdx] = self.queue[lastElementIdx], self.queue[parentIdx] lastElementIdx = parentIdx parentIdx = parentId..
-
[git] rebase (커밋 로그를 직렬으로 만들어보자)git 2022. 7. 2. 16:00
안녕하세요. gaki 입니다. 오늘은 브랜치를 병합할때 사용되는 rebase 에 대해 알아보겠습니다. merge 와 rebase 의 공통점은 둘다 브랜치를 병합하는데 쓰인다는 것입니다. 차이점은, merge 는 병렬적 커밋로그를 만들고, rebase 는 직렬적 커밋로그를 만든다는 점입니다. 병렬적 커밋로그와 직렬적 커밋로그라는 말의 이해를 돕기위해 그림을 참고하겠습니다. 위의 그림은 브랜치들을 merge 를 했을때의 커밋로그이고, 아래 그림은 rebase 를 했을때의 커밋로그입니다. rebase 를 했을때의 커밋 로그가 나중에 오류를 디버깅할때 더 쉽다는 것을 알 수 있습니다. 그럼 직접 실습해보겠습니다. 먼저 master 브랜치를 하나 만들어줍니다. gak 이라는 브랜치와 u 라는 2개의 브랜치를 만들..
-
[git] merge (브랜치를 합쳐보자.)git 2022. 7. 2. 15:21
안녕하세요. gaki 입니다. 오늘은 git 에서 브랜치들끼리 합칠때 사용되는 merge 와 rebase 에 관하여 알아보겠습니다. 1. merge 2. rebase sourcetree 라는 앱을 사용해서 브랜치의 분기를 살펴보겠습니다. 1. merge merge 는 브랜치들끼리의 내용을 합칠때 사용됩니다. 먼저, master 브랜치에서부터 시작하겠습니다. master 브랜치에는 현재 readme.md 파일만 있습니다. 실제 개발 상황을 가정하고 브랜치를 분기해보겠습니다. "각" 이라는 사람은 gak 라는 브랜치를 만들것이고, "우" 라는 사람은 u 라는 브랜치를 만들것입니다. 현재 master 브랜치와, u, gak 이라는 총 3개의 브랜치가 있습니다. gak 이라는 사람은 navbar 를 만드는 업무..