오늘도 끄적끄적

느리더라도 꾸준하게

t Markup Language

YAML

YAML Ain’t Markup Language
YAML is a human friendly data serialization standard for all programming languages.

YAML은 마크업 언어가 아니고, 사람에게 친숙한 데이터 Serializaition 표준이다.
아마 XML, HTML과 같이 YAMLML이 들어가서 사람들의 오해를 샀던 모양이다.
마크업 언어는 태그를 이용하여 문서나 데이터의 구조를 표현하는 언어이다. (HTML, XML)
Serialization(직렬화)은 데이터를 시스템 외부(파일로 쓰거나 네트워크로 전송하거나)에서 사용할 때 사용한다. (Byte Array, JSON, YAML)

더 읽어보기 »

BNF(Backus–Naur form)

프로그래밍 언어를 정의하기 위한 메타 언어이다.
정규화 표현에 많이 사용들 한다고 한다.
표기법 창시자인 베커스와 그 표기법을 향상시킨 나우르에 의해 베커스 나우르 표기법이란 이름으로 불리고 있다.

표기법

1
<이름> ::= <표현식>
더 읽어보기 »

오늘은 서버를 구성할 때 필수적인 로깅에 대해 알아보자!
우선 환경 별로 profile 쪼개기가 진행된 상태에서 시작한다.
최종 결과물은 github 저장소에서 확인 가능하다.

로깅 라이브러리

여러가지 logging 라이브러리가 있는데 Spring Boot 2.0에서는 사진과 같이
Java Util Logging,
Log4j 2,
Logback을 기본적으로 사용할 수 있다.

더 읽어보기 »

Spring Boot 1.x와 달리 Spring Boot 2.0에서는 Profile 설정하는 게 좀 달라졌다.
알아보자.
최종 결과물은 github 저장소에서 확인할수 있다.

디펜던시

우선 아래 이유로 Lombok을 추가할 것이다.

  1. Facade 패턴을 이용해서 어떤 로깅 라이브러리에서도 동작할 수 있게 만들어주는 @Slf4j
  2. DI 할 때 코딩할 양을 줄여줘서 우리의 생산성을 조금이나마 높여주는 @RequiredArgsConstructor
더 읽어보기 »

어이쿠야… 정말 백만년만에 포스팅하는 것 같다…
나태하게 살지 말기로 작심만 몇 번째 하는 건지 ㅠㅠ
여튼 이번에 JPA를 통해 엔터티를 용도에 맞게 잘게 쪼개보다 보니 겪었던 이슈를 간단히 정리해봤다.

엔터티 상속

먼저 Deal(상품) 클래스이다.
이 녀석은 베이스(부모) 클래스이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Getter
public class Deal {
@Id
private long id;

@Enumerated(EnumType.STRING)
@Column(name ="deal_type")
private DealType type;

private int price;

@OneToMany(mappedBy = "deal")
private List<CategoryDealMap> categoryDealMaps;
}
더 읽어보기 »

Layer 1(Physical Layer)

랜선, 랜카드는 너무 익숙하고 짜치니 일단 생략.
기본적으로 이더넷 방식을 기준으로 설명.

  • 리피터(Repeater): 신호를 증폭해주는 것
    LAN선의 경우에 최대 거리가 100m인 것들이 있다. (데이터의 무결성을 보장할 수 있는 거리인 듯)
    이런 장비가 그럼 어떻게 수 십 km 떨어진 곳에 있는 데이터를 받아올 수 있는 것일까?
    바로 최대 거리인 100m 내에 리피터라는 장비를 둬서 데이터를 전달만 하는 역할을 하는 걸 보고 리피터라고 한다.
    음악 장비에 있어서는 엠프(소리를 크게 내주게 하는 장비) 정도로 이해하면 편할 것 같다.
    OSI 7 Layer의 1 Layer(Physical Layer)에 속한다.
    허브가 리피터 역할까지 하고 가격도 싸지면서 거의 쓰이지 않는 장비로 알고 있다.
    무선랜의 경우 신호의 세기를 증폭시켜주는 중계기/리피터/증폭기 등등으로 쓰이는데 예전에 사용하던 유선랜 리피터와 해주는 역할이 유사하긴 하다.

  • 허브(Hub): 멀티포트(Multiport) 리피터
    리피터의 역할을 하는데 포트가 여러 개인 것이다.
    리피터는 입력한 데이터를 그대로 출력한다고 했고, 허브에서는 멀티포트로 연결된 장비들에게 이 데이터를 그대로 전달하는 역할을 한다.
    1번 포트에 연결된 장비가 데이터를 보내면 이더넷 특성상 1번 포트를 제외하고 나머지 모든 포트로 데이터를 뿌리게 된다.
    눈치 없는 2번 포트에 연결된 장비가 동시에 데이터를 보내게 되면 이더넷의 특성 상 CSMA/CD 프로토콜을 사용하고 충돌이 발생하게 된다.
    이 때 충돌한 두 장비는 다시 눈치게임을 통해 데이터를 뿌리게 된다.
    위와 같이 같은 허브에 물려있는 모든 장비는 같은 Collision Domain 상에 존재하게 되는 것이다.
    따라서 허브가 엄청 많은 포트를 지원한다고 해서 꼭 좋은 것만은 아니다.
    위와 같이 데이터를 어느 한 순간에만 보낼 수 있는 허브를 Shared Hub라고 부르고,
    위와 같은 특성 때문에 인터넷 속도를 사실 N빵 했다고 보면 된다.
    Collision Domain은 별도의 허브를 쓴다고 해서 해결되는 게 아니라 오히려 Collision Domain의 범위를 늘리는 일이다.
    아마 인터넷/IP 공유기가 허브이지 않을까 싶다.

  • 모뎀(Modem): 아날로그 신호 <-> 디지털 신호
    아날로그 신호(빛, 전기) -> 디지털 신호(0, 1)를 수행하는 장비를 Modulator(변조기)라고 부르고,
    반대인 디지털 신호 -> 아날로그 신호를 수행하는 장비를 Demodualtor(복조기)라고 부르고, 이 둘을 합친 게 모뎀이다.
    과거에는 전화선으로 연결을 해서 매우 느렸지만 요즘에는 빛을 신호로 사용하는 기가광랜 등등의 등장으로 모뎀 장비도 크게 성장하였다.

더 읽어보기 »

이더넷(Ethernet)

네트워킹 방식에는 아래와 같은 애들이 존재한다.

  • FDDI
  • ATM
  • Token Ring
  • Ethernet

이더넷 말고도 전공 시간에 배웠는데 다 까먹었다.
전공 시간에는 이더넷에 대해서는 잘 안 배우고 CSMA/CD 방식에 대해서만 배웠는데 이더넷과 연관이 있다고 하니 뭔가 와닿는다.

더 읽어보기 »

Subnet

서브넷이란 Sub Network, 네트워크의 서브, 메인 네트워크를 쪼갰다고 보면 된다.
AWS 관점에서 봤을 때 메인 네트워크는 VPC라고 보면 된다.

Public Subnet

Public Subnet이란 외부에서 접근이 가능한 네트워크 정도로 이해하면 될 것 같다.

더 읽어보기 »

자세한 내용을 보고 싶으면 Amazon VPC란 무엇인가?를 참고하면 된다.

VPC(Virtual Private Cloud)란?

가상의 네트워크라고 보면 된다.
네트워크는 분산되어 있는 컴퓨터 자원들끼리 통신이 가능하게 끔 구축되어있는 환경 정도로 이해하면 될 것 같다.
즉, 네트워크에는 네트워크 외부와 통신이 가능한 인터넷 뿐만 아니라 네트워크 내부에서만 통신이 가능한 인트라넷 등등이 있다.
그 앞에 가상이 붙었다 싶이 물리적으로 네트워크를 구성한 게 아니라 논리적인 단위로 네트워크를 구성한 것이다.
이렇듯 클라우드 컴퓨팅은 많은 레이어들을 추상화 해놓고, 자동화 해놓음으로써 물리적으로 구축하기 힘든 환경을 손쉽게 제공해준다는 장점이 존재한다.

VPC 생성

더 읽어보기 »

이번 포스트에서는 평문의 데이터를 암호화/복호화 하는 방법에 대해서 이해해보자.
사람이 알아볼 수 있는 데이터를 평문(plain text)라고 말하고, 평문을 암호화한 걸 암호문(cipher text)라고 부른다.
수학적 원리를 알아보는 것도 아니기 때문에 간단하게만 정리해봤다.

키(KEY)

암호화/복호화 할 때 핵심 역할을 한다.
예를 들면 알파벳 순서를 3칸 땡겨라와 같은 키가 있을 때 키는 두 가지 관점에서 바라볼 수 있다.

  1. 알파벳 순서를 땡겨라/밀어라 - 알고리즘
    암호화 할 때 땡겨라 였으면 복호화 할 때는 밀어라 가 된다.
  2. 3칸 - 비밀번호
    비밀번호에 따라서 동일한 알고리즘이지만 암호화 했을 때 다른 값이 나온다.
더 읽어보기 »
0%