본문 바로가기

전체 글59

Bastion 서버라는 것은 뭘까? 개발자라면 aws에 대해, 가상 서버인 ec2에 대해 들어봤을 것이다. 짧게 ec2에 대해 설명하자면 우리의 컴퓨터가 아닌 aws란 기업의 컴퓨터를 사용하는 것이다. 그렇다면 여기서 당연히 떠오르는 물음이 있다. 내 컴퓨터가 아닌 다른 컴퓨터를 원격으로 접속한다면 누구나 접속 가능해질거고, 그럴거면 이를 악용하는 사람이 분명히 나타날텐데 이를 사전에 방지하는 방법이 무엇일까? 원격 서버의 보안을 높이는 방법은 여러가지가 있겠지만, 그 중 하나인 Bastion서버에 대해 설명해보자 한다. 아까 누구나 접속 가능해지면 보안상의 위험이 생긴다는 문제가 있다고 했다. 그렇다면 근본적으로는 누구도 접속 가능하지 못하게하고 접속하고자 하는 원격 서버를 따로 접속 가능한 서버를 두는 구조는 어떨까? 이런 구조를 띈다.. 2023. 9. 28.
[DDD/Kotlin] DTO와 Command DTO라는건 뭘까? 개발을 전혀 모르는 사람을 기준으로 설명하자면, 데이터베이스에 데이터가 저장되기 전까지 클라이언트로부터 받은 데이터를 저장하고, 서비스로직을 수행한 뒤 Entity(테이블)에 매핑해줄때까지 해당 데이터를 가지고 있는 역할을 수행하는 객체이다. 그래서 나는 컨트롤러에서(맨처음 데이터를 받아주는 계층) 데이터를 DTO에 저장한 뒤 Entity로 매핑한 뒤 바로 저장해주었으나 최근 사이드 프로젝트를 개발하면서 command라는 개념을 처음 접하게 되었다. command 객체란 컨트롤러에서 데이터를 dto로 받아준 뒤 그 다음 계층으로 갈때 데이터를 매핑해주는 객체를 한 단계 더 생성하여 역할을 분리한다. 예제코드로 설명하자면 DTO 클래스 data class UserDTO(val id: L.. 2023. 9. 21.
[Spring/Redis] spring에서 redisTemplate을 쓰는 것과 CRUDRepository를 상속받아 사용하는 것은 어떤 차이가 있을까? Spring에서 redis에 데이터를 저장하는 방법 중 두가지와 두가지를 섞어쓰면서 내가 겪은 상황도 같이 설명하고자 한다. 일단 redisTemplate이란 뭘까? redisTemplate은 Spring에서 따로 관리하지 않고 직접 Redis명령어를 사용한다고 보면된다. 예를 들어 우리가 아는 Redis의 CRUD 명령어나 key값을 조회하는 명령어등을 Spring에서 제공하는 메소드를 통해 직접 요청을 날린다고 보면 된다. SQL로 따지면 mybatis로 쿼리를 직접 작성하는것과 비슷하다고 볼 수 있다. CRUDRepository를 사용하는 것은 Spring에서 제공하는 JPA를 활용해 우리가 아는 익숙한 JpaRepository를 활용하는 것과 비슷하다 다만 SQL, 테이블의 형식을 갖지 않은 DB.. 2023. 9. 14.
48회 SQLD 합격 후기 안녕하세요.. SQLD를 합격한겸 기뻐서 후기글을 씁니다.(학교 졸업요건을 채웠다!) 사실 아슬아슬한 합격점이지만 그럼에도 누군가에게는 도움이 될 수 있는 글이기도하고 기뻐서 적어봅니다. 일단 저의 수준은 효율적이지 않은 쿼리여도 짜긴 짜는편입니다. 쿼리문은 자유롭게 짤수있는편이나.. 이론을 따로 공부한적없습니다. 기본적인 인프라 지식은 특정 개념을 들으면 어떤 것이겠다 하고 아는정도입니다. (예를 들어 문제에서 스케일업이라는 말이 나오면 이건 DB의 용량을 키우는 것이겠구나 정도로 알고있음) 공부 기간 및 공부 방식 실질적 공부 기간은 6일입니다. 시험날이 일요일이었으니 월요일부터 하루에 30문제씩 풀고 마지막 금,토는 60문제씩 어느부분에서 틀렸나 다시 공부했습니다. 일단은 문제를 풀기전에 SQLD .. 2023. 4. 18.
[프로그래밍 언어론]구문법 구문법 문맥 자유 문법(CFG) 1. 터미널 심볼의 집합 T -> 자체로 기초 심볼, 이후로 작성법 정의X, 문법 규칙의 왼쪽에는 위치 불가능 2. 넌터미널 심볼의 집합 N -> 스트링들의 작성법이 문법 규칙에 의해 정의, 문법 규칙의 왼쪽에 위치 가능 3. 시작 심볼 S 4. 생성 규칙의 집합 유도 - 입력된 문장이나 프로그램이 문법에 맞는지 검사하는 것 - 어떤 스트링이 문법으로부터 유도 가능하면 문법에 맞는 스트링 - 컴파일러가 하나의 문장을 해석하기 위해 특정 규칙을 가지고 있어야 함 유도 방법 - 시작 심볼 S부터 시작한다. - 넌터미널 심볼 X를 생성규칙을 적용하여 Y1~Yn으로 대치한다 - 넌터미널 심볼이 없을때까지 반복 - 터미널 심볼의 경우 대치할 규칙이 없으므로 일단 생성되면 끝이며, .. 2023. 4. 4.
[Java] ArrayList안에 HashMap 저장 특정 데이터를 ArrayList안에 HashMap 저장하려고 한다. data: { categories: [ 0:{ "ko_name": "책", "code": "book" }, 1:{ "ko_name": "슬픔", "code": "sadness" } ] } 데이터를 이런식으로 뽑아줘야 하는 경우가 있다고 쳐보자. ArrayList안에 hash맵이 들어가는 데이터 형식을 선언하고 이를 ko_name따로, code 따로 분리해서 저장하려 했다. (이후 이를 categories라는 Dto에 매핑해준다.) public static final ArrayList categoryCodeResponse= new ArrayList(); @PostConstruct public static void categoryMap(){.. 2023. 3. 25.