TypeScript의 배열로 Union Type 정의하기

다음과 같은 배열이 있다.

const SideTypes = [ "FRONT", "BACK", "DOUBLE" ] as const;

위의 배열 객체를 가지고 FRONT와 BACK 또는 DOUBLE 문자열을 갖는 Union Type을 정의하는 코드는 다음과 같다. (as const를 반드시 붙여야 한다.)

type OptionType = {
  side: typeof SideTypes[number];
};

즉, 위의 코드는 아래와 코드와 동일하다. 하지만 아래처럼하면 배열 객체의 값과 유니온 타입을 정의하기 위한 값에 대한 코드가 중복되는 문제가 있다. 이는 반드시 고쳐야 하는 아주 나쁜 리펙토링 대상이다.

type OptionType = {
  side: "FRONT" | "BACK" | "DOUBLE";
};

이제 OptionType은 다음처럼 사용될 수 있다.

const options: OptionType = {
  side: "FRONT"
};

이제 lil-gui 라이브러리에서 다음처럼 효과적인 코드로 작성될 수 있다.

const gui = new GUI();
gui.add(options, "side", SideTypes).onChange(v => {
  if(v === "FRONT") {
    material.side = THREE.FrontSide;
  } else if(v === "BACK") {
    material.side = THREE.BackSide;
  } else if(v === "DOUBLE") {
    material.side = THREE.DoubleSide;
  }
});

위의 코드가 적용된 실행 화면인데, 화면의 우측 상단의 GUI를 위해 적용된 코드다.

PostgreSQL 삭제 (on CentOS)

먼저 postgresql에 대한 서비스를 종료해야 함

systemctl stop postgresql

나 같은 경우 아래처럼 버전을 명확히 명시해야 했음

systemctl stop postgresql-9.6

패지키 삭제

sudo yum remove postgresql-server postgresql-contrib

DB가 저장된 디렉토리 삭제

sudo rm -rf /var/lib/pgsql

postgres 사용자 제거

userdel postgres

최신 버전 설치를 위한 yum 업데이트

일단 현재 yum에 적용된 postgresql의 버전을 확인

yum info postgresql-server

설치하고자 하는 버전보다 낮을 경우 아래 명령을 통해 최신 버전으로 반영함

yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum repolist -y
yum -y update

설치

CentOS 7에서 PostgreSQL 10.2, PostGIS 2.4.3 설치(인터넷 환경)

맥에서 어플리케이션 언인스톨(제거)

맥에서 어플리케이션을 제거하기 위해서는 그냥 파인더에 보이는 어플리케이션에서 제거하고자 하는 항목을 쓰레기 통에 해당 항목을 옮기면 된다는 것으로 설명되는 경우가 많다. 이 부분에 대해서 맥의 장점이다라고 언급하는 경우도 있는데.. 이는 절대 아니다. 맥은 이런 방식으로 어플리케이션을 완전히 삭제해 주는 경우가 거의 없다. 단지 사용자에게 해당 어플리케이션의 주요 파일들을 삭제하고 아이콘을 감춰주는 정도로 이해하면 될듯하다. 하지만 지금의 어플리케이션은 옛날처럼 그렇게 구조가 간단하지 않다. 맥에서 어플리케이션을 완전히 삭제하기 위해서는 여기저기에 흩어져 있는 파일들을 사용자가 하나 하나 찾아 삭제해 줘야 한다.

다행히도 어플리케이션을 제거하는 과정은 일반화되어 있는데 이를 정리한다.

  1. 먼저 해당 어플리케이션이 실행 중이라면 (완전히) 종료한다.
  2. Applications에서 유틸리티의 “활성 상태 보기”를 실행해 해당 어플리케이션과 관련된 항목을 찾아 종료(Quit) 시킨다.
  3. 파인더의 어플리케이션에서 제거할 것을 쓰레기통에 넣는다.
  4. 이제 다음의 디렉토리로 이동해(파인더에서 SHIFT+CMD+G) 해당 어플리케이션과 관련된 항목들을 모두 지운다: ~/Library/Application Support, ~/Library/Caches, ~/Library/Preferences, ~/Library/Logs, ~/Library/Cookies, 추가적으로 루트(/)을 기준으로 검색해 보는 것도 강력히 권장한다.
  5. 쓰레기통을 비운다.

아직 해당 어플리케이션의 아이콘이 보일 수 있는데, 재부팅하면 더 이상 보이지 않을 것이다. 단, 관련된 항목을 모두 제거 했다면 말이다.

깃허브(GitHub)의 레포지토리를 VS.Code로 작업

  1. 먼저 github에 레포지토리를 생성한다.
  2. 작업 폴더를 만든다.
  3. 만든 작업 폴더를 VS.Code에서 연다.
  4. 터미널에서 “git clone URL 생성할폴더”을 입력해서 깃허브의 레포지토리에 연결한다.
  5. VS.Code에서 푸시(push)할 파일을 복사한다.
  6. commit하고 push한다.