전체 글 95

Docker Study - 도커란 ?

목차 도커 개요 도커는 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트입니다. 1-1 가상머신과 도커 컨테이너 가상머신 : 기존의 가상화 머신들은 하이퍼바이저(hyperVisor)를 이용해 여러개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식으로 각각의 운영체제들을 게스트라 하며 게스트 운영체제들은 다른 게스트들과는 독립된 공간과 자원을 할당받아 사용합니다. 다만 시스템 자원을 가상화하고 생성하는등의 관리를 하는 작업들은 하이퍼바이저의 관리를 통해 이루어지면서 성능의 손실이 발생합니다. 그리고 운영체제를 사용하기 위해 필요한 리소스들때문에 이미지의 크기가 커지며 애플리케이션으로 배포하기에 부담스럽다는 단점이 있습니다. 도커..

Programming/Docker 2023.01.22

JPA - 영속성 컨텍스트(persistence context) 파헤쳐보기

목차 개요 지난 포스팅에선 JPA의 큰 개념과 이론에 대해 알아보았습니다. 이번엔 JPA에서 가장 중요한 패러다임인 영속성 컨텍스트 (Persistence Context) 에 대해 알아보겠습니다. JPA를 공부하다 보면 자주 마주하는 단어가 영속성 컨텍스트인데, 저는 아무리 봐도 잘 머리에 남지가 않았습니다. 애매모호하게 알고만 있던 개념이다 보니 그런거 같아서 한번 정리하고 가면 좋을거 같습니다. Persistence Context JPA가 데이터를 관리하기 위해 엔티티를 사용해서 데이터베이스에서 데이터를 매핑하고 이를 저장해야하며, 이때 필요한 환경을 영속성 컨텍스트라고 합니다. 좀 더 간단하게 말하자면 "엔티티를 영구히 저장하기 위한 환경" 이라 하며 엔티티를 조작하기 위해 EntityManager..

Programming/JAVA 2022.12.28

JAVA - Lambda Capturing

목차 Lambda Capturing 먼저 람다식(Lambda Expressions)은 JDK 8 버전에서 추가된 기능으로 함수형 프로그래밍에서 보이는 arrow(화살표) 식으로 표현되는 문법으로 함수의 흐름을 명확하고 간결하게 표현하는 특징이 있습니다. 보통 데이터를 추출할 때 반복되거나 필터링이 필요할 경우 자주 사용됩니다. Java 에서 람다식은 함수로 취급되기 때문에 컴파일러가 .class 파일을 생성하지 않는다는 특징이 있습니다. 기본적으로 자바에서 람다식을 표현할 땐 (Parameter) -> function 의 구조로 이루어져 있으며, 파라미터로 넘긴 변수를 활용하여 작업을 수행합니다. 이때 람다 캡처링(lambda capturing) 은 파라미터로 넘겨받은 데이터가 람다식 내부에서 받은 변수..

Programming/JAVA 2022.12.06

JPA - JPA의 정의, 개요

목차 개요 요새 자바언어를 공부하시거나 사용하고 계시는 많은 개발자분들은 모를 수 없는 게 있습니다. 바로 JPA 저도 자바 개발자로서 JPA를 사용해보았고 대략 어떤개념인지는 알고 있었으나, 제대로 공부했다는 아니었어서 이번에 JPA관련 강의를 들으며 배운점과 추가적으로 공부한점을 모아 포스팅을 해보겠습니다. JPA와 ORM JPA란 Java Persistence API 의 약자로 자바 진영의 ORM(Object Relational Mapping) 기술의 표준입니다. 이렇게 이름만 들어서는 정확히 어떤기능을 하는건지 잘 모르겠습니다. 먼저 ORM에 대해 알아보자면 객체와 관계형 데이터베이스사이에서 매핑해주는 기술이며, 이를 통해 객체는 객체답게 설계하고 관계형 데이터베이스는 데이터베이스대로 설계할 수 ..

Programming/JAVA 2022.12.04

프로그래머스 - 기사단원의 무기(JAVA)

문제 설명 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다. 예를 들어, 15번으로 지정된 기사단원은 15의 약수가 1, 3, 5, 15로 4개 이므로, 공격력이 4인 무기를 구매합니다. 만약, 이웃나라와의 협약으로 정해진 공격력의 제한수치가 3이고 제한수치를 초과한 기사가 사용할 무기의 공격력이 2라면, 15번으로 지정된 기사단원은 무기점에서 공격력이 2인 무..

JAVA - Priority Queue(우선순위 큐) 알아보기

개요 오늘은 코딩테스트 문제를 풀이하다가 알게된, Queue 종류중 하나인 Priority Queue 에 대해 알아보겠습니다. 먼저 Queue 는 데이터를 일시적으로 쌓아두기 위한 자료구조 중 하나로 First In First Out (FIFO)의 구조로 이루어져 있고 이는 말 그대로 먼저 적재된 데이터가 먼저 나가게 됩니다. 그 예로 가장 적절한 건 아마 대기표일겁니다. 은행이나 식당에서 먼저 대기표를 뽑은 사람이 먼저 들어가는 방식과 동일합니다. 하지만 오늘 알아볼 우선순위 큐 는 순서대로 데이터를 적재하고 관리하는게 아닌 선언할때 우선순위를 먼저 정한 후 그 우선순위에 따라 자동 정렬되어 데이터가 나갈 때 우선순위가 높은 순서대로 추출되게 됩니다. 특징 높은 우선순위의 요소를 먼저 꺼내서 처리하는 ..

Programming/JAVA 2022.11.30

프로그래머스 - 명예의전당(1) JAVA 문제풀이

문제 설명 "명예의 전당"이라는 TV 프로그램에서는 매일 1명의 가수가 노래를 부르고, 시청자들의 문자 투표수로 가수에게 점수를 부여합니다. 매일 출연한 가수의 점수가 지금까지 출연 가수들의 점수 중 상위 k번째 이내이면 해당 가수의 점수를 명예의 전당이라는 목록에 올려 기념합니다. 즉 프로그램 시작 이후 초기에 k일까지는 모든 출연 가수의 점수가 명예의 전당에 오르게 됩니다. k일 다음부터는 출연 가수의 점수가 기존의 명예의 전당 목록의 k번째 순위의 가수 점수보다 더 높으면, 출연 가수의 점수가 명예의 전당에 오르게 되고 기존의 k번째 순위의 점수는 명예의 전당에서 내려오게 됩니다. 이 프로그램에서는 매일 "명예의 전당"의 최하위 점수를 발표합니다. 예를 들어, k = 3이고, 7일 동안 진행된 가수..

sendtime X 500global 스타트업 네트워킹 파티 후기

안녕하세요 이번에 우연찮은 기회로 참여하게 된 sendtime 주최 - 스타트업 네트워킹 파티후기를 포스팅해보려 합니다. 시원찮은 글솜씨지만, 좋은 경험을 한거같아서 남기려고 합니다. https://disquiet.io/@lgun202/makerlog/3517 [sendtime x 500global] 스타트업과 스타트업에 관심이 있는 개발자, 디자이너, 마케터 등의 사람들을 Want to start networking in the startup scene?then disquiet.io 처음 본 소식은 디스콰이엇 플랫폼에서 보게된 네트워킹 파티 참여자의 모집글이었습니다. 보자마자 어? 이거 재밌겠다싶었어요! 사실 네트워킹이나 인맥관리나 어떤 모임도 개발자로 취업하기 위해 다녔던 학원빼고는 없었기 때문에 이..

Living 2022.11.26

JavaScript - HTML onClick 파라미터로 Object 넘기기

개요 동적으로 태그에 하위 요소를 넣어야하는 작업이 있었는데, onClick 이벤트로 Object를 전부 넘기고 싶었다. 하지만 onClick 이벤트로 함수를 만들어 넘길 때 Object를 콘솔로 확인해보니 [Object Object] 로 뜨며 정상적인 상태가 아니었다. 해결방법 구글링에선 다양한 방법들이 제시되었지만, 딱히 유효한 방법을 찾지못하다가 생각난게 dataset 이다. onClick=functionName(this) data-value=object 식으로 넘기면 가능할거같았다. 예제코드 const htmlTable = $("#table"); for(...) { htmlTable.append(` `); } 그냥 Object를 넘기면 값이 제대로 넘어가지 않아서 JSON.stringfy로 문자열..

디자인 패턴 - SOLID

SOLID 원칙이란? SRP (Single responsibility principle) : 단일 책임 원칙이라 하며, 클래스는 단 한개의 책임만을 가져야 한다 는 뜻입니다 예를 들어 Add Class 가 있고 이 클래스는 사칙연산 중 더하기에 해당하는 책임만을 져야합니다. 빼기, 나누기, 곱하기 등 다른 연산의 책임을 가지지 않아야 하는 원칙인데, 복잡한 요구사항을 필요로 하는 프로그램에서 단 한가지의 책임만을 지키기는 어렵습니다. 이 원칙을 무조건 지켜야하는 강제적인 룰이 아닌, 되도록이면 최대한 지키면서 설계를 해야하는 것이 올바른 접근방식이라고 생각합니다. OCP (Open closed priciple) : 개방 폐쇄 원칙이라 하며, '개방' 이란 확장성과 관련된 엔티티, 모듈, 함수등에는 열려 ..

Programming/JAVA 2022.10.22