728x90

전체 글 169

[Google Cloud Platform] 이미지 이전하기

GCP 서버 변경기 기존 서버가 일일 3000원 가량의 가격이 측정되고 있었음.. 너무 비쌈😂.. 그래서 급하게 서버를 옮겨야 하는 상황이 발생함. 그래서 서버를 옮기기에 좋은 방법은 뭘까를 생각하다가, 기존 도커처럼 이미지형태로 인스턴스를 관리할 수 있도록 도와주거나 쉽게 도커를 쓸 수 있도록 도와주는 Image Registry Service 를 사용하기로 하였다. 그래서 현제 인스턴스를 이미지로 만들어 두었다. 이제 이렇게 만들어진 이미지는 도커 이미지와 동일한 형태로 GCP 내에서 쉽게 사용할 수 있으며 이것을 통해 인스턴스를 쉽게 마이그레이션 할 수 있었다. 바뀌고 난뒤 젠킨스 바뀌고 난뒤 도커로 뛰어진 서버 느낀점 요즘 사이드 프로젝트를 하거나 회사일을 하면서 느끼는 점은 도커처럼 이미지 형태로..

카테고리 없음 2021.09.26

ES6 이후 함수들

ES6 함수의 추가 기능 ES6 이전의 함수들은 함수 사용 목적에 따라 명확히 구분되지 않았음. 일반 함수로도 호출이 가능했고, 생성자 함수로도 호출이 가능했음. 이게 문제가 됬던이유는 [[Call]] 과 [[Construct]] 를 공부했을때 배운것은 인스턴스를 생성할 수 있는 함수 객체는 constructor, 인스턴스를 생성 할수 없는 함수 객체는 non-constructor 인데 ES6 이전의 함수들은 아래와 같은 구분이 되지 않는 특성때문에 아래와 같은 로직이 가능하다. var person = { age: 99, myAge: function() { return this.age } } var bar = person.myAge; console.log(bar()); // undefined 위와 같은 ..

JavaScript 2021.09.25

[M1] Apache Jmeter로 Socket Server Test 하기

최근 회사에서 소켓 서버를 구현하게 되면서, 스트레스 테스트를 할 일이 필요해졌다. 처음에는 Go 언어로 Client 코드를 직접작성했으나, 단순 연결성이나 메세지를 주고 받는 정도에 그쳤고, 더 많은 부가 정보를 알기 위해서는 기존에 좋은 테스트 툴을 사용하는 것을 추천받았다. 두 가지정도의 방안을 생각했는데, 첫번째로는 Naver 가 만든 Ngrinder 이라는 테스트 툴이였다. 이미 유명한 툴이고 많은 이들이 사용하고 있을 툴이라고 생각한다. Groovy 로 Script 를 구성할 수 있는게 매력적이였다. http://naver.github.io/ngrinder/ nGrinder Please post questions in Discussions not Issues. nGrinder 3.5.3 ver..

Java 2021.09.24

[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