[Node.Js] npm error code ERR_INVALID_ARG_TYPE 해결하기
·
기타
개요기존에 Nodejs 18버전을 사용하다가 2025-04-02 기준 lts 버전인 22.14.0 버전으로 버전 업그레이드 후 React 프로젝트를 하려고 했는데 에러가 발생하였다.0 verbose cli C:\Users\koe73\AppData\Local\nvm\v22.14.0\node.exe C:\Users\koe73\OneDrive\Desktop\cli1 info using npm@11.2.02 info using node@v22.14.03 silly config load:file:C:\Users\koe73\OneDrive\Desktop\cli\npmrc4 silly config load:file:C:\Users\koe73\OneDrive\Desktop\cli\.npmrc5 silly config ..
호스팅 서버에서 Spring boot 프로젝트 배포하기
·
기타
개요원격 호스팅 서버에서 Spring boot 프로젝트를 배포하는 과정을 정리해 보았다. VS code에서 원격 접속이 필요하므로 REMOTE - SSH 확장 플러그인을 설치해야 한다.프로젝트 빌드 파일 생성먼저 로컬 환경에서 프로젝트 빌드를 해야 한다. Spring boot 프로젝트의 경우 프로젝트 내에서 다음 명령어로 빌드를 실행한다.gradle build// 위 명령어 안될 경우./gradlew build -x test 빌드에 성공할 경우 다음 메세지와 함께 프로젝트 내부에 jar 확장자의 빌드 파일이 생성된다.빌드 파일의 경로는 다음과 같다.[프로젝트 루트]/[프로젝트 패키지명]/build/libs위와 같은 빌드 파일이 생성된다. 맨 위의 파일로 배포를 수행할 것이다.원격 서버에 빌드 파일 옮기기..
자바스크립트의 스레드와 동시성 처리를 위한 이벤트 루프(Event Loop)
·
기타
개요컴퓨터공학에서 스레드는 동시에 여러 작업이나 프로그램을 실행하는 것을 의미한다. 코드를 실행할 수 있는 각 단위를 스레드라고 한다. 스레드는 멀티 스레드와 싱글 스레드로 나뉘며, 멀티 스레드는 말 그대로 한번에 여러 작업을 처리할 수 있는 것을 의미하고 싱글 스레드는 한번에 하나의 작업만을 처리할 수 있다. 자바스크립트는 어떤 스레드를 가지며 어떻게 로직을 처리하는지 알아보자.자바스크립트의 스레드자바스크립트는 기본적으로 싱글 스레드 언어이다. 자바스크립트의 메인 스레드는 브라우저에서 사용자 이벤트를 처리하고, 디스플레이 렌더링 및 페인팅, 일반적인 웹이나 앱을 구성하는 대부분의 코드를 실행한다. 웹이나 앱을 렌더링하는 과정은 모두 하나의 스레드에서 일어나기 때문에 느린 웹 & 앱 스크립트는 전체 브라..
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 주소를 입력한 ..