전체 288

EC2 인스턴스 안에 있는 파일 로컬에 다운받기

ec2를 사용하면서 로그 파일을 로컬에 불러와야 하는 경우가 생겼다. 이 때는 ec2 인스턴스에서 파일을 로컬로 다운받아야 하는데, 마땅한 방법이 생각나지 않았는데 검색을 하다 보니 scp 명령어가 있었다. ssh를 이용한 파일 주고받기 원격 인스턴스에 접속하기 위해서는 ssh를 이용하는 방법이 있다. 원격 인스턴스의 터미널 화면을 보여주는 것이다. 여기에 파일을 주고받을 수 있는 기능까지 있으면 얼마나 좋을까? 찾아보니 다행이 존재했다. scp (secure copy protocol)을 이용하는 것이다. 내가 찾은 이용 방법은 맥 또는 리눅스 쉘에서 사용 가능한 방법이다. 윈도우의 경우에는 scp를 지원하는 프로그램을 설치해서 사용해야 한다. 파일을 다운받거나 업로드 하기전에 파일의 권한은 777을 주..

TS 데코레이터

데코레이터는 TS에서 사용 가능한 특정 형식의 함수이다. 데코레이터는 아직 완전한 기능이 아니지만, Angular 및 nestjs에서 도입하여 사용중인 기능이다. 아직 완전한 기능이 아니기 때문에 tsconfig.json 파일에 "experimentalDecorators" : true 값을 주어야 데코레이터가 잘 작동한다. 특정 형식의 함수라고 하면 솔직히 이해가 잘 안된다. 뒤에 나올 사용 범위 앞(위)에 데코레이터를 붙여서 이미 선언된 함수, 프로퍼티, 메소드 등을 수정해 주는 함수라고 생각하면 된다. 데코레이터 사용 범위 데코레이터는 다음에 적용 가능한 특정 형식의 함수이다.' 1. Class -> 클래스 선언 전에 사용해서 클래스의 생성자와 프로토타입을 수정할 수 있다. 2. Class Prope..

삼성페이 교통카드 후불체크카드 등록하기

삼성페이에는 교통카드 기능도 존재한다. 엄청 편리한 기능이다. 삼성페이에서 교통카드 등록을 마친 후 NFC를 켜고 교통카드 쓰듯이 가져다 대면 알아서 교통카드가 동작한다. 교통카드를 충전하기 위해서는 3가지 방법이 있다. 후불, 선불, 휴대전화 결제의 방법이 있다. 후불 교통카드는 말 그대로 사용한 다음달에 지불하는 방식이다. 선불은 미리 충전해 둔 다음 사용하는 방식이고, 휴대전화 결제는 다음달 휴대폰 요금에 붙어서 나오게 된다. 자세히 보면 선불 방식과 휴대전화 결제 방식은 수수료가 붙는 것을 볼 수 있다. 휴대전화 결제의 경우에는 수수료가 6퍼센트나 붙는다는 것을 알 수 있다. 선불은 보통 2퍼센트 정도 붙었다. 이렇게 수수료가 있는 이유는, 요금 연체의 가능성 때문이다. 그래서 수수료가 없는 선불..

IT 이야기 2021.09.12

TS 클래스 다중 상속하기

TS는 기본적으로 클래스 상속을 지원한다. 클래스 상속은 다음과 같이 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 class A { numA: number; } class B extends A { numB: number; } const newClass = new B(); newClass.numA = 1; newClass.numB = 2; cs 위의 경우에는 클래스 B에서 클래스 A를 상속받아 최종적으로 클래스B에는 numA 와 numB가 모두 들어간 것을 볼 수 있다. 하지만 TS에서는 한 개의 클래스에 대해서는 상속이 가능하나, 여러개의 클래스 상속(다중 상속) 은 안타깝게도 지원하지 않는다. 그렇다면 다중 상속을 사용할 경우에는 어떠한 식으로 접근해야 할까? 답은 mixin을 이..

RDS 접속 시 ec2 인스턴스 통해서 접속하기

현재 작업중인 서버는 postgresql을 RDS에 올려서 사용하고 있다. 현재 이 서버는 어디서든 접속이 가능한 상태이다. 이러한 상태가 되면 보안에 매우 취약해진다. 그래서 db를 사용할 때는 외부에서 바로 접속이 불가능하게 해 두는것이 보안상 좋다. RDS 를 외부에 노출 시키지 않는 이유 가장 큰 문제는 역시 보안이다. db는 모든 정보들이 담겨져 있는 공간인데, 이것이 외부 네트워크에 노출이 되어 있으면 보안에 상당히 취약할 것이다. 어디서든 바로 접속할 수 있다는 단점이 있다. 그래서 VPC안에 있는 ec2를 통해서만 접속할 수 있게 한다. 또한 애플리케이션 서버 또한 안전하게 rds에 접속할 수 있다는 장점이 있다. 이러한 설정을 하게 되면 기존의 경우에는 db의 암호, 유저만 알면 쉽게 접..

EC2 리눅스 인스턴스 포트포워딩 하기

현재 내 인스턴스에는 nestjs 기반의 어플리케이션이 구동중이다. 현재 5000번 포트로 구동중인데, 이 서버에 접속하기 위해서는 [서버 주소]:5000 의 형식으로 서버에 접속해야 한다. 웹 서버는 이름이 단순해야 보기 좋은데, 포트 뒤에 5000을 붙여버리면 약간 보기 불편해 진다. 그래서 이 주소를 없애는 작업을 하기로 했다. 모든 가능성을 생각하자! 사실 처음에는 기존의 도메인이 있어서 route53을 통해서 Elastic IP 값을 수동으로 넣어 주었다. 하지만 여기서는 포트 번호를 넣을 수 없었다. 그래서 생각해낸 게 80번 포트를 5000번으로 돌려서 사용할 수 있으면 좋겠다고 생각했다. 그래서 검색을 해서 포트포워딩이 가능한 iptables를 사용하기로 했다. 1 iptables -A P..

Docker 기본 개념

Docker는 가상 운영 체제 환경을 만들어주는 매우 편리한 프로그램이다. 마치 VirtualBox 같은 개념이라고 생각할 수도 있으나, 약간은 다른 개념이다. 개인 공부하는 겸 필요한 기능만 정리해 볼려고 한다. Docker는 각 운영체제에 맞는 버전이 따로 있다. 커널과 관련된 곳까지 관여하는 프로그램이라서 맥의 경우에는 M1 칩셋과 Intel 칩셋을 따로 구분한다. 아직까지 M1 버전은 완벽하게 지원하지 않는다고 한다. 언젠간 완벽하게 지원해 주겠지 뭐. Docker 의 기본 개념 Docker를 사용하는 이유는 간단하다. 특정한 개발 환경에서만 실행되는 애플리케이션을 실제 릴리즈 환경에 올리려고 할 때, 지금까지 했던 설정들을 같이 올려야 한다. 이 때 자신이 설정한 환경들을 수동으로 일일이 세팅하..

현업에서 자주 쓰이는 git 명령어 정리

git은 좋은 코드 버전 관리 도구이다. 공동 작업을 github를 이용하여 자주 하다보니 처음에는 모르는 것도 많고 실수 투성이였으나, 시간이 지날수록 git은 좋은 도구라는 것을 알게 되었다. git을 사용하면서 유용했던 cli 명령어를 정리해 보았다. 저장소 관련 명령어 git을 사용할려면 해당 프로젝트의 최상위 폴더에다 git 설정을 해 주어야 한다. git에 관한 설정이 들어있는 폴더는 .git 이다. 다음과 같은 명령어를 통해 git 저장소를 새로 만들어 보자. 1 2 3 4 git init git branch -M main git remote add origin [remote 저장소의 ssh 주소] git push --set-upstream origin master cs 근데 사실 이런거 하..

AWS S3 파일 전체(일괄) 다운로드 받기

아마존 웹 서비스에는 정말 다양한 서비스들이 있다. 그 중 하나가 s3라는 서비스이다. 간단히 말하면 구글 드라이브 같은 웹서버 운영에 필요한 사진, 동영상 등의 파일들을 저장해 두는 서비스이다. 오늘 이 파일을 일괄 다운로드 할 일이 생겼다. 하지만 aws 홈페이지에서는 객체 하나하나 일일이 다운하는 방법 밖에는 없었다. 이는 s3 구조에 따른 것 같다. 각 파일은 전세계에서 고유한 url 주소를 가지며, 각 폴더의 위치는 prefix처럼 태그 비슷하게 달려 있다. 여튼 파일을 일괄 (전체) 다운로드 하기 위해서는 aws command line (aws cli) 사용이 필요했다. Mac 기준으로 s3 파일 다운로드 방법을 정리해 보았다. aws cli 설치 aws cli을 먼저 설치해야 한다. 다음의 ..

M1 Mac VSCode에서 #include errors detected 오류 해결하기

오랜만에 기분좋게 42서울 과제를 해결하려 vscode를 실행했다. 그런데 갑자기 #include errors detected 라는 이상한 오류가 뜨기 시작했다. gcc를 이용해서 컴파일 할 때는 문제가 없었지만, 상당히 거슬렸다. 이유를 하나하나 찾아가 보았다. M1맥의 gcc 또는 g++ gcc와 g++은 각각 c언어 컴파일러, c++ 컴파일러이다. vscode에서는 c(++)에 관한 플러그인이 있는데, 이는 자동으로 컴파일러의 위치를 파악해 코드의 오류를 찾아낸다. 하지만 무슨 이유인지는 모르겠지만, M1맥 에서는 gcc(g++) 경로를 찾지 못하는 모습을 보였다. 아마도 수동으로 C/C++ Extension에 컴파일러 경로를 설정하면 될 것 같았다. 컴파일러 위치 찾기 최근에도 이걸 사용한 것 같..