기타

    Typescript 경로 모듈화, 경로 정규화 과정과 5.8.0 버전에서의 최적화

    개요자바스크립트나 타입스크립트 프로젝트에서 모듈이나 컴포넌트를 불러 올 경우 다음과 같은 형태로 모듈이나 컴포넌트를 불러오는 경우를 많이 경험할 수 있다.import { whereAmI } from "../../../../../../where/the/hell/are/you";상대 경로와 절대 경로를 사용해서 모듈이나 컴포넌트를 불러오는 방법은 매우 일반적이지만 이보다 더 좋은 방법을 소개하려고 한다.기존의 문제점상대 경로 상대 경로 방식으로 모듈을 불러오는 방식은 매우 간편하다는 장점이 있다. 일반적인 IDE에서는 내부 모듈의 위치를 상대 경로로 자동으로 작성해준다. 하지만 모듈을 다른 폴더로 옮길 경우에 해당 모듈을 사용하는 모든 파일의 경로를 수정해야 한다. 물론 이와 같은 경우에도 IDE가 알아서 ..

    Linux 해외 아이피 접속 차단을 위한 ufw 방화벽 설정 방법

    개요본가에 있는 MySQL 서버를 사용할 일이 있어서 서울에서 외부 접속을 시도하였는데 접속이 거부당했다.본가에서 라즈베리파이를 확인하였더니 전원이 꺼져 있었다.마지막으로 접속했을 때 poweroff 명령을 사용한 적도 없었고 무언가 문제가 발생하였다고 생각하여 ssh 접속 로그를 확인하였다.로그를 보니 엄청나게 많은 brute force 공격 흔적이 있었다.포트번호를 바꿔가며 접속을 시도하는 것을 보아하니 일단 외부 접속을 열어둔 IP라면 좀비 PC를 활용하여 무차별적으로 접속을 시도하는 것 같았다.로그에 찍힌 IP 주소는 모두 해외였기에 이참에 해외 공격을 원천봉쇄해야겠다고 생각이 들었다.한국 IP 대역 다운로드우선 한국 IP만 허용해야 하기 때문에 한국의 IP 주소들을 다음 명령어를 통해 다운받는다..

    Typescript 5.8.0의 조건부 반환 타입 검사 기능

    개요Typescript로 개발을 하면서 때론 매개변수의 유형에 따라 다른 타입의 값을 return하는 함수를 작성하고 싶을 수 있다.예를 들면 다음과 같다.declare const record: Record;declare const array: string[];function getObject(group) { if (group === undefined) { return record; } return array;}const arrayResult = getObject("group");const recordResult = getObject(undefined);해당 코드에서 arrayResult 변수의 타입은 string[] 이 되어야 하고 recordResult의 타입은 이 되어야..

    라즈베리파이 외부 ssh 접속을 위한 포트포워딩

    개요라즈베리파이를 외부에서 편하게 접속하기 위해서는 포트포워딩이 필요하다.ssh의 기본 포트는 22번이며 그냥 22번 포트를 포트포워딩하면 되는 간단한 작업이라고 생각할 수 있다.하지만 22번 포트를 포트포워딩 할 경우 해커의 무차별 대입 공격의 대상이 되기 쉽다. 즉 외부 공격에 매우 취약해진다.때문에 본 글에서는 ssh 접속 기본 포트를 변경하여 포트포워딩 하는 것을 다룬다.해당 내용을 완벽하게 이해하기 위해서는 공인 ip와 사설 ip의 이해가 필요하다.Putty 설치윈도우에서 NAS 접속을 위해서는 putty라는 프로그램이 반드시 필요하다. putty는 다음 사이트에서 설치할 수 있다.https://www.putty.org/설치가 끝났다면 Host Name에 라즈베리파이의 사설 ip 주소를 입력한 ..