728x90

분류 전체보기 173

InnoDB 엔진의 특성

들어가기 전에 앞서, 이 책은 Real My SQL 1판을 읽고 정리한 내용입니다. 틀린 내용이 있댜면 댓글로 남겨주시면 감사하겠습니다. InnoDB 엔진은 우리가 주로 사용하는 데이터베이스 엔진 중 하나이다. InnoDB 는 도대체 어떤 특성을 가지고 있을까? 그 특성에 대해서 간단히 공부해보도록 하자 첫번째 특성, InnoDB 는 프라이머리로 기본적으로 기본키로 클러스터링을 구성한다. 즉 프라이머리 키 값의 순서대로 FileSystem 에 저장된다는 뜻이다. 따라서 Primary Key 값을 통한 범위 탐색을 하게 되면 빠르게 검색할 수 있는 이유이다. 두번째 특성, InnoDB 는 잠금이 필요없는 일관된 읽기를 제공한다. InnoDB 스토리지 엔진은 MVCC 를 이용해서 락을 걸지 않고 읽기 작업을..

Switch 문 반복을 없애기

Switch 문을 어떻게 걷어낼 수 있을까? 이건 참 어려운 경우라고 생각한다. 하지만 Switch 의 경우에는 해당 Type 을 걷어내지 않는 이상 불가능하기에 숨기는 형태로 진행할 수 있다고 생각한다. 예를 들면 아래와 같은 코드를 보자 public class PayRoll { private static final String COMISSIONED = "COMISSIONED"; private static final String HOURLY = "HOURLY"; private static final String SALARIED = "SALARIED"; public Money calculatePay(Employee e) { switch(e.type) { case COMISSIONED: return cal..

Java 2021.10.07

JVM 구조

서론 이 스터디 내용은 백기선님의 자바 스터디를 참여하기 위한 정리 내용으로, 아래 링크에서 참가 가능합니다. 1900 원 정도의 구독비로 해당 스터디 내용을 확인할 수 있으니 자바에 대해 공부하고 싶으신 분들은 참가 하시는 것을 추천 드립니다. 백기선님 유튜브 참고로 읽으시면서 틀린 내용이 있을 수도 있습니다. 댓글로 지적해주시면 감사하겠습니다 목표 자바 소스 파일을 JVM 으로 실행하는 과정 이해하기 학습할 것 JVM 이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성요소 JDK 와 JRE 의 차이 JVM 이란 무엇인가? JVM 이란 Java Virtual Machine 의 줄임말으로 추상적인 컴퓨터 머신이라고 이해하는게 좋지 ..

Java 2021.10.07

루비의 상속구조

루비도 잘 알려진 객체지향 언어이다. 사실 최근에는 루비 온 레일즈라는 프레임워크를 아는 사람은 있어도, 이게 루비라는 언어로 이루어져 있다는 걸 모르는 사람도 보았다 😂 뭐 여튼 루비도 나름의 루비만의 장점이 있다. 서론은 뒤로 하고, 오늘은 루비가 어떻게 상속구조를 이루고 있는지 적어보려고 한다. 일단 보통언어와 비슷하게 루비도 아래와 같은 코드로 상속구조 표현이 가능하다. class Bird def speak puts "tweet" end end class Duck < Bird def speak puts "quack" end end duck = Duck.new duck.speak 위와 같이 적고 실행하게 되면 아래와 같은 결과가 나온다. "quack" 당연해 보인다. Duck 안에 speak 가 있..

Ruby 2021.09.28

[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
728x90