728x90

분류 전체보기 166

[Spring Boot] Jenkins 로 자동 배포하기

현재 제가 하고 있는 프로젝트의 구성도는 아래와 같습니다. 위와 같이 구성되어 있는데요. 일단 Git-Hub 의 Master Branch 에 Merge 가 일어나거나 Push 로 인한 변경이 일어나면, Jenkins 에서 이를 감지하도록 되어 있습니다. 코드리뷰를 통해서 머지됬을 경우 즉각 적으로 Merge 를 할 수 있도록 하기 위해서 입니다. 자동 배포되는 과정에서 TEST 파이프 라인을 거치고 Build 까지 되도록 되있습니다. 만약 TEST 가 실패하게 된다면 Build 는 되지 않습니다.🤖 JENKINS 에서 TEST / BUILD 파이프라인을 거치게 되면 자동으로 Spring Boot Server 가 시작되어야 합니다. 이 조건을 위해서 선택지가 두가지 정도 있었는데 해당 선택지는 아래와 같습..

Java 2021.09.21

안녕 나의 개인 블로그..

개인 블로그를 떠나 보내며 회사 어드민 페이지를 만질일이 주로 있어서 React 를 학습할겸 개인 블로그를 만들었었는데, 이제는 떠나 보내주려고 합니다.🥲 위는 제 블로그의 사진 블로그가 없어지는 걸 보는 나자신.. 떠나 보내는데는 아래와 같이 여러가지 이유들이 있었습니다. 1. AWS 와 도메인 비용 대략적으로 한달에 10000 원 가량 소모가 유지비용으로 소모가 되었는데요. 제 블로그는 월 트래픽이 대략적으로 100~200 명대 였습니다. 따라서 그렇게 아까운 비용은 아니라고 생각했으나, 이제 다른 사이드 프로젝트를 하려고 AWS 를 이용하려면 이미 블로그가 프리티어 비용을 전부 차지해버려, 제 자 비용으로만 다른 프로젝트를 돌려야만 했습니다. 그래서 블로그를 없애고 조금 더 유의미한 사이드 프로젝트..

끄적 2021.09.20

Ruby Block, Proc, Lambda

Block? Ruby 에는 Block method 라는 것이 존재한다. 다른 언어로 치면 익명함수와 비슷한 존재이다. 함수의 몸체 그 자체이다. Block 메소드에 넘겨줘야 할 Argument 는 Pipe(|) 로 적어주고 실행될 몸체는 아래와 같이 적어준다. [1, 2, 3].each { |num| puts num } yield? 루비에는 yield method 가 있는데 이는 block method 를 호출하는 코드이다. 아래의 예시를 보자. def hello_block? yield end hello_block? { puts "Hello Block!" } & expression 특히 Ruby 에서는 & 을 쓸때 block 을 넘겨주어야 한다. 아래의 예시를 보자. def hello_empresand?..

Ruby 2021.09.20

Rails Query 성능 향상기

Rails 특정 부분에서 Where + Count 말고 Exist? 를 써야 하는 이유 우리가 기존의 쓰던 중복로직 검사를 하던 코드는 아래와 같다. where(condition).count 조합 위와 같은 로직을 작성하면 돌때 아래와 같은 쿼리가 나간다. 차이점? 저 위의 로직으로만 보면 언뜻 비슷해보이나 크나큰 차이가 있다. 아래와 같은 예시를 보자 예약 스케쥴과 - 예약에 관한 예약정보를 읽어온다고 해보자. 전제 조건은 아래와 같다 하나의 예약에는 여러가지 예약 일정이 걸려있을 수 있다. 하나의 배송에는 여러가지 주문이 걸려있을 수 있다. 예를 들면 아래와 같은 상태일것이다. 만약 여기서 1번 쿼리 where(:reservation_id => 1).count query 를 날려본다고 해보자. 위와 ..

Ruby On Rails 2021.09.20

회사코드 DeadLock 처리 정리

Deadlock Error 처리 에러 발생 위와 같이 DeadLock 이 나는 경우가 종종 잦아지는데 이유는 위와 같이 동일 요청이 두번오게 되는데 이 시점에 데드락걸릴 확률이 상당히 높습니다. 일단 간단히 데드락이 나는 이유를 위해서 코드를 봐야하는데 코드는 대략적으로 아래와 같은 구조입니다. 문제 해당 푸시 토큰과 같은 로우면를 업데이트 하고, 아니면 INSERT 해라 (INSERT... ON DUPLICATE KEY UPDATE) 해당 푸시 토큰과 유저 아이디가 같은 로우를 찾는 쿼리 푸시 토큰을 넘겨받았으면 nil 로 바꿔라 (어플리케이션 로직) 같은 푸시 토큰을 가지고 있는 로우가 있는데 유저가 다르다면 있다면 그건 nil 로 바꿔버려라 즉 위의 코드를 봤을때 중복 요청이 들어오면 충분히 데드락..

Linked List

Linked List Linked List 란 그들의 메모리 주소값으로 연결되는 선형적인 데이터 collection 이라고 할 수 있습니다. 그러므로 모든 Node 는 next position 을 가집니다. 대부분 data 와 nextnode 의 reference 를 가집니다. Node 를 python code 로 표현하면 아래와 같습니다. class Node(object): def __init__(self, data): self.data = data self.next = None LinkedList 는 여러가지 자료구조 형태가 있습니다 SingleLinkedList, Doubly Linked List 등등 Queue 를 구현하는 자료구조로 이용되기도 합니다. LinkedList 는 선형적인 구조를 지니..

자료구조 2021.09.20
728x90