SSH란?
2022. 3. 22. 14:31
기타 IT
SSH란 Secure Shell의 약자로 원격지에 있는 컴퓨터를 안전하게 제어하기 위한 프로토콜이나 이 프로토콜을 사용하는 프로그램들을 의미한다. Secure는 단어 그대로 보안이라는 의미이고, Shell은 컴퓨터를 명령어로 원격지에서 제어하는 방식이다. SSH가 적용된 서버를 SSH가 적용된 클라이언트가 제어하게 된다. 상호작용을 하는 방법은 암호화를 사용하게 된다. 기존에는 Telnet을 주로 사용했는데 평문으로 정보를 전송하기 때문에 중간에서 가로챌 경우 보안상 문제가 생기므로, Secure를 도입해서 SSH를 사용하게 되었다. 그 보안이 바로 암호화와 복호화 방식인 것이다. 암호화 방식 암호화 방식에는 여러가지가 있지만 핵심은 공개키와 개인키 쌍이 필요하다는 것이다. 간단하게 예를 들자면, 젠킨스..
@ParameterizedTest를 언제 사용해야 할까?
2022. 3. 3. 17:55
기타 IT
@ParameterizedTest를 언제 사용해야 할까? @ParameterizedTest와 조합으로 @ValueSource, @CsvSource를 많이 사용할 것이다. 나는 개인적으로는 잘 사용하지 않는 기능이다. 이유는 가독성이 떨어진다고 생각했기 때문이다. 아무래도 여러 케이스를 묶어서 테스트를 작성하다보니, 파라미터만으로 어떤 테스트를 의미하는지 이해하기 불편하다고 생각을 했다. 하지만 모든 것은 장단점이 있기 때문에 이번 기회에 피드백을 받고 사용을 해보며, 어떤 점이 좋을지 찾아보았다. @ParameterizedTest의 장점 여러가지가 있겠지만 내가 느낀 장점은 한 가지였다. 간결하게 작성할 수 있다. 아무래도 중복되는 케이스인데 데이터만 다른데 케이스가 많으면, 관리할 코드가 많아져서 이 ..
상태 패턴이란
2022. 1. 5. 15:46
기타 IT
상태 패턴이란 무엇인가? 상태에 따라 다르게 동작해야 할 때 사용할 수 있는 패턴이다. 볼링으로 언제 사용할 수 있는지 알아보자. 볼링은 총 10 프레임이 있다. 혼자 친다고 가정하고, 현재 프레임의 상태를 예로 들어보자. 프레임의 상태란 한 프레임에서 스트라이크, 스페어, 미스, 1번의 투구만 한 상태, 아직 투구 하지 않은 상태 이렇게 총 5가지의 상태이다. 아직 투구를 하지 않은 상태에서 투구를 시도하면 → 1번의 투구만 한 상태 or 스트라이크 상태가 되어야 하고, 1번의 투구만 한 상태에서 투구를 시도하면 → 스페어 or 미스 상태가 되어야 한다. 이렇게 5가지의 상태에 따라 투구 기능은 다른 동작을 하게 되는 것이다. 클래스 레벨로 알아보자. bowl 메서드만으로 예를 들어보자. Throwin..
템플릿 메서드 패턴
2021. 12. 29. 10:03
기타 IT
템플릿 메서드 패턴이란? 실행 과정/단계는 동일한데 각 단계 중 일부의 구현이 다른 경우 사용할 수 있는 패턴이다. 동일한 실행 과정을 제공하는 템플릿 메서드를 활용해 중복을 제거할 수 있다. 크게 두 가지 구조로 나뉜다. 실행 과정을 구현한 상위 클래스 일부 단계를 구현한 하위 클래스 상위 타입의 역할은 무엇일까? 실행 과정을 구현한 메서드를 제공하는 역할을 한다. 일부 단계 구현을 추상 메서드로 제공한다. 이 일부 단계 구현은 각 다른 구현이기 때문에 추상 메서드로 제공하며, 하위 클래스에서 구현하게 된다. 실행 과정 메서드에서 일부 단계 구현 메서드를 호출하는 방식이다. 보통은 하위 타입이 상위 타입의 기능을 재사용할지 정하기 때문에 흐름의 주체가 하위이지만 템플릿 메서드 패턴은 흐름의 주체가 상위..
전략(Strategy) 패턴
2021. 12. 23. 11:17
기타 IT
전략 패턴이란? 동일한 기능의 알고리즘이 다를 경우 해당 알고리즘을 쉽게 변경하기 위한 패턴이다. DI를 활용한 방식으로 OCP에 특화되어, 변경에 용이하다. 전략 패턴을 사용하지 않으면 어떻게 안좋은데? 동일한 기능이나 알고리즘이 달라져 자주 변경이 된다면 보통 if-else로 많이 작성을 할 것이다. 어떤 상황인지 살펴 보자. 아래는 과일 가게에서 할인 정책을 적용해 가격을 계산하는 기능이다. 해당 모듈은 가격을 계산하는 모듈이다. 가격 계산과 할인 정책이 같이 들어가 있다. 아마 보통 이렇게 작성되어 있는 코드가 많을 것이다. 나도 회사에서 100% 이렇게 되어있다. public class Calculator { public int calculate(boolean firstGuest, List it..
디미터 법칙과 Tell, Don't Ask 법칙
2021. 12. 10. 14:45
기타 IT
두 법칙은 객체 간의 결합도를 효과적으로 낮추기 위한 방법 중 하나이다. 의존하는 객체에 단 한 번의 메소드 참조만 하는 것이다. 조금 더 풀어보면, 데이터 중심이 아닌 기능 중심으로 코드를 작성하는 것이다. 즉, 캡슐화를 해야한다는 것인데 이는 데이터에 의존하는 절자지향 방식을 하는 사람에게는 생각보다 아주 많이 어려운 방법이다. 그렇기 때문에 두 가지의 규칙이 있다. Tell, Don't Ask 데이터를 물어보지 않고, 기능을 실행해 달라고 말하라는 규칙이다. 즉, 데이터를 나는 모르니까 너가 알아서 처리해줘!! 라는 것이다. 아래는 만료일자에 따라 어떠한 로직을 처리하는 코드이다. 먼저 절차 지향 방식의 코드를 살펴 보자. 내가 너의 데이터를 만져서 컨트롤 할게!! 나는 SI 재직 시절에 1..
POSIX의 EOF(End Of File) 규칙
2021. 12. 3. 17:28
기타 IT
의미 자체를 해석 해보면 파일의 끝이라는 의미인데 이게 무엇일까? 파일 끝에 공백라인을 넣어주라는 피드백을 받았다. 잉? 나는 실무에서도 불필요한 공백이라고 생각해서 눈에 보이면 제거를 했었다. 하지만 이렇게 52라인과 같이 개행을 넣어야 한다는 것이다. 왜 넣어야 할까? IEEE라는 곳에서 선정한 POSIX 규칙이기 때문이라고 한다. POSIX는 간다하게 설명하면 이식 가능 운영 체제 인터페이스인데 서로 다른 유닉스 OS의 API를 정리해서 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE라는 곳에서 규정한 인터페이스 규격이다. 이전에 C의 컴파일러 gcc는 POSIX기반으로 한줄 씩 읽는데 EOF에 개행이 없으면 병합 시 에러가 발생 했다고 한다. 요즘은 그럴 일이 없겠지만 이러한..
ec2에서 톰캣 서버 포트 포워딩 하기
2021. 10. 2. 14:51
기타 IT
✔️ ec2에서 8080 포트 접속 시 80포트로 리다이렉트를 왜 해야할까? 가비아에서 도메인을 구입하고 aws route53을 이용해 도메인을 등록했는데.. 8080포트를 붙이지 않으니 찾을 수 없는 페이지!! 라고 나왔습니다. 결국 도메인:8080 으로 접속을 해야하는 불편함... 과연 어떤 사용자가 이렇게 접속을 할까.. ㅜ.ㅜ 🔍 찾을 수 없는 페이지가 왜 나왔을까? 스프링부트로 개발을 진행했는데 내장 서버인 톰캣은 기본적으로 8080포트로 요청을 받게 됩니다. 하지만 브라우저는 기본이 80포트로 요청을 하기 때문에 위와 같은 현상이 발생하게 되는 것입니다. 🔍 iptables 명령어로 80포트로 포워딩 하기 간단하게 아래와 같은 명령어로 포트 포워딩을 할 수 있습니다. $ iptables -A ..