til
56 posts
java) til - 20240425

자바 ORM 표준 JPA 프로그래밍 - 기본편 프록시와 연관관계 정리 - 프록시 프록시 기초 vs em.find() : 데이터베이스를 통해 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 내용 조금 수정됨 프록시와 연관관계 정리 - 즉시 로딩과 지연 로딩 프록시와 연관관계 정리 - 영속성 전이(CASCADE) 와 고아 객체 프록시와 연관관계 정리 - 실전 예제 5 - 연관관계 관리 본문 자바 ORM 표준 JPA 프로그래밍 - 기본편 프록시와 연관관계 정리 - 프록시 프록시 기초 프록시와 연관관계 정리 - 즉시 로딩과 지연 로딩 프록시와 연관관계 정리 - 영속성 전이(CASCADE) 와 고아 객체 프록시와 연관관계 정리 - 실전 예제 5 - 연관관계 관리

April 28, 2024
til
java
java) til - 20240424

자바 ORM 표준 JPA 프로그래밍 - 기본편 고급 매핑 - 상속관계 매핑 상속관계 매핑 관계형 데이터 베이스는 상속 관계X 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속 관계 매핑 : 객체의 상속과 구조, DB의 슈퍼 타입 서브타입 관계를 매핑하는 것을 말한다. 슈퍼타입 / 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브 타입 테이블로 변환 -> 구현 클래스 마다 테이블 전략 조인 전략 결과적으로 하위 객체들은 ID가 PK이자 FK로 갖추게 되고, ITEM을 자동으로 일괄 정리가 된다. : 해당 내용을 넣어주면 좋다. (각 자식을 구분하기 위한 컬럼을 자동 생성한다.) : 자식객체 엔티티에 등록하면 해당 값으로 DTYPE 을 지정해주게 된다. 기본적으로 사용하기 적절한 전략이라고 생각하면 좋다. 장점 테이블 정규화 외래키 참조 무결성 제약 조건 활용 가능 저장공간 효…

April 27, 2024
til
java
docker-kubernetes ) til - 20240424

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 200. 선언적으로 service 만들기 service.yaml 이렇게 구동한 다음 서비스에 접근하게 되면 어플리케이션에 접근이 가능해진다. 여기까지를 통해 어플리케이션을 선언적 방식을 통해 띄우는 것 까지 가능했다. 이를 통해 우리는 에러, 명령적으로 매번 쳐줘야할 번거로움을 해결했다. 201. 리소스 업데이트 & 삭제 어떻게 바꾸면 되는가? YAML 파일에 변경할 내용을 수정한 뒤 간단하게 apply 를 하면 된다. 즉, YAML 에서 설정 가능한 부분은 수정하고 적용하면 쉽게 구성을 바꿀 수 있는 것이다. 어떻게 삭제하면 되는가? 기존에 방식으로 명령어를 통해 하는 것도 가능하다. 하지만 -f 옵션과 함께 해당 config 파일을 지목해주면, 이 역시 동일하게 지정한 것들을 삭제하는 것이 가능해진다. 202. 다중 vs 단일 config 파일 master-deployment.yaml 개발자가 원하면 ya…

April 26, 2024
til
backend
intelliJ) Jar 파일 생성하기

introduce IntelliJ IDEA를 이용하여 Java 프로젝트를 Jar파일로 내보내는 방법을 정리한 글이다. 향후 정리할 예정이다. 원본 글 링크 making jar file 참고로 JAR(Java Archive) 파일이란  .jar 확장자 파일에 Class와 같은 Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있어 JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일입니다. JAR ( Java Archive ) / WAR ( Web Application Archive ) / EAR (Enterprise Archive) 파일의 특징,차이점에 관련된 내용이나 예제에서 사용하는 IntelliJ 에서 Java Project 생성에 대해 궁금하신 분들은 아래 포스팅을 참고바랍니다.  [Java] JAR WAR 차이점 및 특징 ( + EAR )  [IntelliJ] Java 프로젝트 생성하기 (HelloWorld 출력) 그럼 먼저 Jar파일을…

April 25, 2024
til
java
java) til - 20240424

자바 ORM 표준 JPA 프로그래밍 - 기본편 다양한 연관관계 매핑 - 일대다 일대다 단방향 실무에서 연관관계의 주인이 Team이 되는 경우를 말한다. 대충 상황적으로 Team 입장에서 Member를 기록해야 하나, Member는 Team을 고려하지 않는 경우 나올 수 있는 설계다. 그런데 실질적인 테이블 데이터 간의 연관관계를 생각해보면, Team 은 외래키를 가질 수가 없다. 여기서 이 관계의 핵심문제는 개발자 입장에서 일 쪽에 작업을 한것 뿐이라고 생각했는데, 관계 특성 상 다(N)에 해당하는 쪽에도 영향을 미쳤다는 점이다. 일대다 단방향 정리 일대다 단방향은 일대다에서 일(1)이 연관관계의 주인이 되는 것 테이블 일대다 관계는 항상 다(N) 쪽에 외래키가 있다. 객체와 테이블의 차이 때문에 반대편 테이블의 외래키를 관리하는 특이한 구조 을 꼭 사용해야함. 그렇지 않으면 조인 테이블 방식을 사용해야 한다. (중간 테이블을 하나 추가해야한다.) 일대다 단방향 매핑의 단점 엔…

April 24, 2024
til
java
docker-kubernetes ) til - 20240424

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 198. Pod와 컨테이너 사양(Spec) 추가 Spec 추가 template는 항상 Pod 를 대변하는 객체이다. 따라서 최초에 를 통해 deployment 를 설정한 것과는 다르게 설정되는 것이다. 더불어 이렇게 설정하는 것은 전체 Pod에 대한 설정이라고 생각하면 된다. Pod 설정하기 - 개체 -f 는 파일을 인식시키기 위한 옵션 값, 여러 개를 인식 시킬 때는 이 옵션을 여러번 사용하면 된다. 우선 이렇게 해보면 에러메시지로 가 필요하다고 이야기 한다. selector란 어떻게 하는 것인가. deployment 는 쿠버네티스 속에서 동적인 객체다. Pod의 확장 명령이 떨어지면 deployment 가 지속적으로 감시하며 살핀다. 이때 제어야 할 필요가 있을 때 가 필요해진다. Pod에 대한 라벨링, 티어 설정 등은 자유롭게 할 수 있고, 그걸 지정한 뒤 selector가 이걸 가리킴으로써 deploy…

April 24, 2024
til
backend
docker-kubernetes ) til - 20240423

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 196. 명령적 접근방식 vs 선언적 접근방식 명령적 접근방식에서 선언적인 방식으로 여러가지 명령어를 통해 쿠버네티스를 구동하는 것을 배웠다. 그러나 이러한 방식의 단점은? 어렵진 않으나 명령어를 외워야 한다. 매번 작업에 적용해야 한다. 이러한 점들은 docker 때와 비슷하게 불편할 수 있고, docker compose를 배운 뒤 훨씬 편해졌고, 이러한 내용이 kubectl에도 적용될 수 있다. A Resource Definition 위에서 언급한 것처럼 파일 내의 구성을 기반으로 deployment 를 생성할 수 있고, 이를 쿠버네티스는 지원한다. YAML 파일 형태를 지원한다. 예시파일 비교 명령적 접근방식 선언적 수행방식 개별 명령어를 쳐서 접근하고 실행시킨다 파일 기반으로 상태가 적용되고 수정된다. docker run과 유사 docker compose 와 유사 197. 배포 구성 파일 생성하기(선언…

April 23, 2024
til
backend
java) til - 20240423

자바 ORM 표준 JPA 프로그래밍 - 기본편 다양한 연관관계 매핑 - 다대일 연관관계 매핑 시 고려사항 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 어노테이션은 JPA가 제공하며, DB랑 매핑을 위해 만들어진 것들이다. 다대일 : 일대다 : 일대일 : 다대다 : -> 쓰면 안된다. 단방향, 양방향 테이블 외래키 하나로 양쪽 조인이 가능하다. 사실 방향이란 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 / 아니면 양방향 연관관계의 주인 테이블은 외래키 하나로 두 테이블의 연관관계를 맺음 객체의 양방향 관계는 A->B B->A처럼 참조가 2군데 객체 양방향 관계는 둘 중 테이블의 외래키를 관리할 곳을 지정해줘야 한다. 연관관계의 주인 = 외래키를 관리하는 참조 주인의 반대편 = 외래키에 영향을 주지 않고, 단순 조회만을 진행한다. 다대일 [N : 1] 다대일 관계에서 외래키는 반드시 다 쪽에 있어야 한다. 다대일 단방향 정리 가장…

April 23, 2024
til
java
java) til - 20240421

자바 ORM 표준 JPA 프로그래밍 - 기본편 연관관계 매핑 기초 - 양방향 연관관계와 연관관계의 주인 1 양방향 연관관계 양쪽에서 참조해서 갈 수 있도록 만드는 것. 테이블의 연관관계는 기존의 단방향과 달리 차이가 없다. 여기서 테이블을 기준으로 곰곰히 생각해보면, 어떤 관계량 양쪽에서 어느쪽 외래키를 가지고 있기만 해도 실질적으로 양방향인 것을 의미한다고 볼 수 있다. 이렇게 설정하면 이제 Team, Member 각 객체에서 양방향으로 연결되고 서로 왔다갔다 하면서 데이터를 접근할 수 있게 바뀐다. 물론, 이렇게 양방향인 것보다 객체 중심으로 생각해보면 단방향인게 나을 수 있지만 이는 후술할 예정… 연관관계의 주인과 mapped by mapped by = JPA 의 이해 난이도를 높이는 주범 객체와 테이블 사이에 연관관계를 맺는 차이를 이해해야 한다. 객체와 테이블이 관계를 맺는 것의 차이점 객체 연관관계 = 2개(객체의 참조는 양쪽에서 가능하게 된다.) 회원 -> 팀 연관관계…

April 22, 2024
til
java
cote) til - 20240421

n^2 배열 자르기 문제 설명 정수 , , 가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. 행 열 크기의 비어있는 2차원 배열을 만듭니다. 에 대해서, 다음 과정을 반복합니다. 1행 1열부터 행 열까지의 영역 내의 모든 빈 칸을 숫자 로 채웁니다. 1행, 2행, …, 행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 이라 할 때, , , …, 만 남기고 나머지는 지웁니다. 정수 , , 가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤  ≤ 107 0 ≤  ≤  < n2  -  < 105 입출력 예 n left right result 3 2 5 4 7 14 입출력 예 설명 입출력 예 #1 입출력 예 #2 나의 풀이 최초에는 이중 for문을 활용하여 해당하는 경우의 숫자배열을 다 만들었다. 하지만 이러한 형태는 n의 값이 조금만 늘어도 시간 …

April 22, 2024
til
algorithm
java) til - 20240421

자바 ORM 표준 JPA 프로그래밍 - 기본편 연관관계 매핑 기초 - 단방향 연관관계 목표 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 방향(Direction): 단방향, 양방향 다중성(Multiplicity): 다대일, 일대다, 일대일, 다대다의 이해 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요 예제 시나리오 회원, 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다 회원과 팀은 다대 일 관계이다. 객체를 테이블에 맞추어 모델링 연관관계를 고려하지 않은 객체 설계 이렇게 구조를 짜면 이러한 데이터를 생성할 때 애매함을 우선 보여준다. 뿐만 아니라 값을 찾을 때도 문제가 된다. 객체를 테이블에 맞춘, 데이터 중심의 모델링은 협력관계를 만들 수 없다. 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. 객체는 참조를 사용해서 연관된 객체를 찾는다. 테이블과 객체 사이에는 이런 큰 간격이 있다. 객체 지향 …

April 21, 2024
til
java
docker-kubernetes ) til - 20240421

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 195. Deployment 롤백 & 히스토리 rollout undo image를 잘못 설정 하는 등의 문제가 발생할 수 있다. 이렇게 된 상태에서 상태를 보기 위해서는 rollout 커맨드를 활용할 수 있다. 이렇게 되면 문제가 발생하고 이때 상태를 보고자 rollout 커맨드를 활용하면 대화용 세션으로 들어가게 된다. 실제로 이렇게 되면 대시보드에서도 pod에 문제가 발생하게 된다. 오래된 복제본이 종료가 발생하지 않으며, 신규 pod은 계속 pending 상태를 유지하는 것이다. 이렇게 되는 이유는 kubernetes에서는 정책상 신규 pod 가 정상 실행 전 까지는 이전 이미지를 담은 구버전 pod 가 종료되지 않으며, 이를 통해 서비스가 계속 유지 되도록 만드는 것이다. 이러한 에러가 발생해서 다시 정상적인 버전으로 이미지를 돌려야 한다. 이렇게 하고 나니 pod 의 문제가 해결되고 기존 버전으로 돌아오…

April 21, 2024
til
backend
docker-kubernetes ) til - 20240420

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 192. 컨테이너 재 시작 실습에서 /error 이라는 라우팅과 함께 Node 예제를 종료 시키는 코드를 갖고 있었다. 해당 URL 에 접근하게 되면, process 가 종료하게 되면서 에러가 발생하게 된다 . 이때 이렇게 되는 것은 pod와 pod의 컨테이너 상태를 모니터링 되고 있고, 모닌터링 과정에서 실패가 발생하면 다른 걸로 교체가 되거나 하는게 아닌, 일단은 해당 pod와 pod 내의 컨테이너를 다시 시작한다. 또한 이 내용은 kubernetes dashboard에서도 볼 수 있는 것이다. 또한 해당 pod로 들어가면 세부적으로 그러한 행동이 나타났다는 로그 등도 함께 확인이 가능하다. 193. 실제 스케일링 재시작과 관련한 유용한 명령이 하나 더 있다. 오토 스케일링 기능이 없다고 생각하면 kubectl 은 자동으로 pod의 숫자를 늘리거나 줄이지 않는다. 이럴 때 트래픽이 더 많이 유입될 것이라고 …

April 20, 2024
til
backend
java) til - 20240420

자바 ORM 표준 JPA 프로그래밍 - 기본편 준영속 상태 준영속 영속 -> 준영속 영속 상태의 Entity가 영속성 컨텍스트에서 분리(detached) 영속성 컨텍스트가 제공하는 기능을 사용하지 못하는 상태를 의미한다. 준영속 상태로 만드는 방법 : 특정 Entity 만 준 영속상태로 전환한다. : 영속성 컨텍스트를 완전히 초기화 한다. : 영속성 컨텍스트를 종료 시킨다. Entity Mapping : 객체와 테이블 매핑 Entity 매핑 소개 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity JPA가 관리하며 entity 라고 부른다. JPA 를 사용해서 테이블과 매핑할 클래스는 @Entity 가 필수로 붙어야 한다. 주의사항 기본 생성자 필수(파라미터가 없는 public 또는 private 생성자) final 클래스, enum, in…

April 20, 2024
til
java
java) til - 20240419

자바 ORM 표준 JPA 프로그래밍 - 기본편 플러시 플러시 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것. 플러시 발생 데이터 트랜잭션이 일어나고 끝나면 플러시는 발생한다. 이때는 커밋이 일어난게 아니므로 보내기만 한 상태를 의미 한다. 알아두면 좋은 것!, 플러시가 발생한다고 1차 캐시가 지워지는 것이 아니다. 즉 영속성 컨텍스트 자체는 유지되고 데이터베이스에 반영만 우선 시키는 것이고 커밋으로 확정 전 상태를 만들어 두는 것이다. 변경감지 수정된 Enitty 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시 하는 방법 : 직접 호출, 테스트용 혹은 강제 수동 쿼리로 쿼리 날아가는 것을 보고 싶을 때 사용이 가능하다. 트랜잭션 커밋 : 플러시 자동 호출 JPQL 쿼리 실행 : 플러시 자동 호출 JPQL 쿼리 실행 시 플러시가 자동 호출 되는 이유는? Flush 모드 옵션 굳이…

April 19, 2024
til
java
cote) til - 20240418

괄호 회전하기 리벤지 기존의 풀었던 방식은 테스트 코드에선 성공적이었으나, 실제 체점에서 엣지케이스를 잡지 못하여 다시 도전한다. 문제 설명 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. , ,  는 모두 올바른 괄호 문자열입니다. 만약 가 올바른 괄호 문자열이라면, , ,  도 올바른 괄호 문자열입니다. 예를 들어,  가 올바른 괄호 문자열이므로,  도 올바른 괄호 문자열입니다. 만약 , 가 올바른 괄호 문자열이라면,  도 올바른 괄호 문자열입니다. 예를 들어,  와  가 올바른 괄호 문자열이므로,  도 올바른 괄호 문자열입니다. 대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 가 매개변수로 주어집니다. 이 를 왼쪽으로 x (0 ≤ x < (의 길이)) 칸만큼 회전시켰을 때 가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 s의 길이는 1 이상 1,000 이하입니다. 입출력 예 s result …

April 18, 2024
til
algorithm
java) til - 20240416

자바 ORM 표준 JPA 프로그래밍 - 기본편 영속성 컨텍스트(1) JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping) 영속성 컨텍스트 Entity Manager Factory, Entity Manager 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 엔티티를 영구 저장하는 환경이라는 의미를 가진다. DB와 관련이 있으면서도 없다. 영속성 컨텍스트는 일종의 논리적 개념으로, manager를 통해서 접근이 가능해진다. J2SE 환경 Entity Manager 와 영속성 컨텍스트는 1:1로 생성이 된다. J2EE, Spring 프레임워크와 같은 컨테이너 환경 Entity Manager 와 영속성 컨텍스트는 N:1 의 관계를 가진다. Entity 의 LifeCycle DB에서 가져오는 객체 Entity 는 나름의 생명 주기를 갖고 있다. 비영속성(new / transient) : 영속성 컨텍스트와 전혀 관계가 없는…

April 18, 2024
til
java
cote ) til - 20240416

[PCCE 기출문제] 8번 / 창고정리 문제 설명 선빈이는 게임을 즐기던 중 가지고 있는 물건이 너무 많아 창고 정리를 하기로 했습니다. 선빈이가 보유한 게임 속 창고는 여러 칸으로 나누어져 있고 각 칸에는 물건들이 담겨있습니다. 창고를 정리할 방법을 고민하던 선빈이는 같은 물건이 여러 칸에 나누어 들어있는 것을 발견하고 우선 같은 물건끼리 최대한 겹쳐쌓는 방식으로 창고를 정리하기로 했습니다. 선빈이의 창고에 들어있는 물건의 이름과 개수는 리스트 형태로 주어지며, 한 칸에 겹쳐질 수 있는 물건의 개수에는 제한이 없다고 가정합니다. 예를 들어 창고의 각 칸에 담겨있는 물건의 이름이, 각 물건의 개수가 이라면 연필과 책을 한 칸에 각각 겹쳐 쌓아 간단하게 , 로 만들 수 있습니다. pencil book javacpp.jpg 주어진 solution 함수는 정리되기 전 창고의 물건 이름이 담긴 문자열 리스트 와 각 물건의 개수가 담긴 정수 리스트 이 주어질 때, 정리된 창고에서 개수가 가…

April 16, 2024
til
algorithm
docker-kubernetes ) til - 20240416

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 188. 첫 번째 Deployment - 명령적 접근 방식 사용 쿠버네티스를 배우면서 생기는 가장 기본적인 망각 중에 하나가, 바로 도커를 결국 사용은 한다는 점이다. 반대로 도커를 자체적으로 컨테이너를 실행하지 않는 다는 것이다. 필요한 프로그램, 도커 파일이 준비되어 있다면 docker 이미지를 준비한다. 이미지가 빌드 되고 나면 이미지를 이제 쿠버네티스 클러스터로 보내면 된다. (Pod) Pod 가 이를 실행하고 관리할 것이다 deployment 올릴 쿠버네티스에 상태를 파악해야 하므로 minikube status 로 상태를 파악한다. 이때 동작하는 minikube가 정상이 아니라면, 다시 minikube를 재시작 하면 된다. kubectl 을 기억하자. : 지난 시간에 이 툴을 설치했음. 해당 툴은 항상 로컬 기준으로 존재하고, 로컬 시스템에서 실행하는 명령이다. 마스터 노드와 해당 클러스터의 컨트롤러라고 …

April 16, 2024
til
backend
java) til - 20240416

자바 ORM 표준 JPA 프로그래밍 - 기본편 Hello JPA - 애플리케이션 개발 주의 Entity Manager 는 하나만 생성해서 애플리케이션 전체에서 공유한다. Entity Manager 는 thread 간의 공유가 아니라, 사용하고 버리는 구조다 JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다. 위의 내용 덕분에 데이터의 트랜잭션 사이에서 데이터 객체는 변동 사항이 발생하면 자동으로 알아서 데이터의 변화를 저장하고 반영이 된다. JPQL 소개 JPA 를 사용하면 Entity 객체 중심의 개발이 가능해진다. 기본적인 데이터의 탐색은 Entity Manager를 활용해도 된다. 하지만 JPA 에서 디테일하게 검색을 하기 위한 방식은? 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 JPQL은 테이블이 아닌 객체를 대상으로 검색하는 객체 지향 쿼리로 기존의 쿼리와는 약간 다르다. SQL 에 의존적이지 않음 이후 뒤에서 자세히 배울 예정 자바 ORM 표준 JPA…

April 16, 2024
til
java
java) til - 20240403

자바 ORM 표준 JPA 프로그래밍 - 기본편 자바에 다양한 것들이 있겠지만 SQL 을 이해하고 JPA 활용도를 높이기 위해 해당 내용을 우선적으로 강의를 듣고 정리해보고자 한다. Hello JPA - 프로젝트 생성 프로젝트 생성, 옛날엔 좀 그랬으나 지금은 intelliJ 를 활용해서 편하게 할 것 h2 가 연습용으론 좋다 빈 프로젝트를 생성하고, hibernate, h2 database driver를 설치한다. 이때 기존의 강좌와는 다르게 작성해야 한다. 더불어 사용 시 spring boot 를 사용하는 만큼 스프링부트 기반으로 버전 관리를 해주면 좋다. 4.0.0 자바 ORM 표준 JPA 프로그래밍 - 기본편 Hello JPA - 프로젝트 생성

April 03, 2024
til
java
cote ) til - 20240328

2016년 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각  입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 “TUE”를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예 a b result 5 24 “TUE” ```python # 내 마음데로 풀어보기 # 윤력은 2월 마지막이 29일 # 30, 31일 조심! 1, 3, 5, 7, 8, 10, 12월이 31일이가 def solution(a, b): 가운데 글자 가져오기 문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면…

March 28, 2024
til
algorithm
cote ) til - 20240326

해시 > 포켓몬 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫 번째(3번), 네 번째(3번) 폰켓몬을 선택 두 번째(1번), 세 번째(2번) 폰켓몬을 선택 두 번째(1번), 네 번째(3번) 폰켓몬을 선택 세 번째(2번), 네 …

March 26, 2024
til
algorithm
docker-kubernetes ) til - 20240320

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 183. Kuberntes: 요구 설정 & 설치 단계 로컬 머신에서 쿠버네티스를 다루기 위해 설치해야 할 구성요소는 다음과 같다: 클러스터: 쿠버네티스 클러스터는 마스터 노드와 하나 이상의 워커 노드로 구성되며, 이 클러스터는 실제 머신이나 가상 인스턴스에 분산되어 운영될 수 있다. 마스터 노드 소프트웨어: 마스터 노드에는 쿠버네티스의 핵심 구성 요소인 API 서버, 스케줄러 등이 설치되어야 한다. 워커 노드 소프트웨어: 워커 노드에는 Docker와 같은 컨테이너 런타임과 kubelet이 설치되어야 한다. kubectl: 쿠버네티스 클러스터와 통신하기 위한 커맨드 라인 인터페이스 도구로, 개발자와 관리자는 이를 사용하여 클러스터에 명령을 보낼 수 있다. 로컬에서 쿠버네티스를 실험하기 위해서는 다음 도구도 필요하다: minikube: 로컬 머신에서 쿠버네티스 클러스터를 쉽게 생성하고 관리할 수 있는 도구로, 가상 머…

March 25, 2024
til
backend
java) til - 20240320

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 15강. printf() 사용법, system.in.read() 사용법, Scanner 클래스의 여러 메소드 사용법 printf 사용법 정리 Java의 메소드는 출력 형식을 지정할 때 사용되며, 객체를 통해 콘솔에 텍스트를 출력하는데 유용합니다. 여기서 핵심 포인트를 세 가지로 정리됨 기본 사용법: 는 포맷 지정자를 사용하여 변수의 값을 문자열로 변환하고, 지정된 형식에 맞춰 출력한다. 기본 구조는 이다 포맷 지정자: 포맷 지정자는 기호로 시작하며, 출력할 데이터의 타입과 형식을 지정한다. 예를 들어, 는 정수를, 는 문자열을 나타낸다. 정밀도, 폭, 사용할 공간, 숫자 형태 등을 세밀하게 조정할 수 있다 예시: 정수 출력: → 101 소수점 아래 두 자리까지 출력: → 123.46 문자열…

March 25, 2024
til
java
cote ) til - 20240322

이진 변환 반복하기 문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 “c를 2진법으로 표현한 문자열”로 바꿉니다. 예를 들어, 이라면, x에 이진 변환을 가하면  이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 “1”이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 s의 길이는 1 이상 150,000 이하입니다. s에는 ‘1’이 최소 하나 이상 포함되어 있습니다. 입출력 예 s result 입출력 예 설명 입출력 예 #1 “110010101001”이 “1”이 될 때까지 이진 변환을 가하는 과정은 다음과 같습니다. 회차 이진 변환 이전 제거할 0의 개수 0 제거 후 길이 이진 변환 결과 1 “11001…

March 22, 2024
til
algorithm
네이버 코테를 위한 마지막 몸부림

드디어… 네이버 공채가 열렸다는 소식이 들렸다. 작년에도 1차 서류 통과는 했었고 드디어 때가 온 게 아닌가 싶다. 사실 대단한 일은 아니라고 생각한다. 아마 성실하게 하신 분들이라면 어렵지 않게 통과할 것이다. 작년 같은 경우에도 지금보다도 포트폴리오는 준비가 확실하지 않았으나 1차를 합격했었던 것으로 미루어 볼 때 진짜는 코딩 테스트를 통과 이후가 아닐까 싶다. 적성 검사까지 잘 맞을 수 있을지, 걱정 보단 조금이라도 손을 놀려서 파이썬 문제 풀이 방식을 익혀야지 ㅠ 코테.. 자신이 없긴 하지만 그래도 작년과는 다르다..! 마지막 스퍼트로 python 핵심 코테 기술들 위주로 정리하면서 학습 하려고 한다. 토요일 오전에 치는 시험… 목표는 3문제 중 2문제라도 맞추기다. 😂😂 알게된 핵심 내용 위주 사전 자료형에서 데이터를 찾아 탐색하는 것은 생각보다 시간 복잡도가 크지 않아 탐색 시 속도가 빠르다. 단 키가 주어질 때 이야기다 정규식을 활용하기 위해 re 라이브러리를 i…

March 22, 2024
til
algorithm
cote ) til - 20240321

나머지가 1이 되는 수 찾기 문제 설명 자연수 이 매개변수로 주어집니다. 을 로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 3 ≤  ≤ 1,000,000 입출력 예 n result 10 3 12 11 입출력 예 설명 입출력 예 #1 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다. 입출력 예 #2 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다. 음양 더하기 문제 설명 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solu…

March 21, 2024
til
algorithm
cote ) til - 20240320

크레인 인형뽑기 게임 문제 설명 게임개발자인 “죠르디”는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. “죠르디”는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. crane_game_101.png 게임 화면은 “1 x 1” 크기의 칸들로 이루어진 “N x N” 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 “5 x 5” 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 “1 x 1” 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음 그림은 [1번, 5번, 3번] 위치에서 순서대로 인형을…

March 20, 2024
til
algorithm
docker-kubernetes ) til - 20240320

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 181. 모듈 소개 본 모듈에서 진행할 학습 내용은 총 3단계 Kubernetes, 테스팅 환경 구축해보기 Kubernetes 객체들과 작업 진행해보기 실제로 예제를 통해 배포를 진행해보기(local 환경으로) 182. Kubernetes 는 인프라를 관리하지 않습니다. 쿠버네티스가 해주는 작업과 아닌 작업을 구분을 명확하게 하는 것이 해당 도구를 효과적으로 사용하는 가장 핵심 중에 핵심이다. 쿠버네티스가 할 수 없는 것은 머신의 구체적인 가상 인스턴스나 컴퓨터에 대해 전혀 모르며 쿠버네티스 API 서버, Kublet 및 다양한 서비스는 매뉴얼하게 스스로 설정해줘야 한다. 인스턴스나 시스템을 업데이트 하고, 운영체제 업데이트를 유지하며, 전체 네트워크 보안 그룹 항목의 관리 등은 결국 개발자의 몫이다. 쿠버네티스가 관심 가지는 영역은 실패한 컨테이너에 대해선 관심을 가진다. 포드를 생성, 포드에서 컨테이너를 실행…

March 20, 2024
til
backend
java) til - 20240320

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 12강. 실수 연산에서의 자동 타입 변환, + 연산에서의 문자열 자동 타입 변환, 문자열을 기본 타입으로 강제 타입 변환 1. 실수 연산에서의 자동 타입 변환 실수 타입의 기본형은 double 이다. 따라서 산술 연산식에서 실수 연산이 이루어지면 double 타입으로 자동 타입 변환되어 사용된다. (설령 int 타입 등과 혼합으로 계산이 되어도) 만약 정수 타입으로 연산이 반드시 필요하면, double 타입을 강제로 int로 변환해야 한다. 자바에서 소문자 또는 대문자 F가 없는 실수 리터럴을 double 타입으로 해석한다. 따라서 실수 리터럴 등을 연산한 뒤에 float 타입에 저장하면 컴파일 에러가 발생한다. 위 사진을 보면 중요한 부분을 시사 한다. 방법 1 의 경우 0을 얻는다. 왜냐면 서순…

March 20, 2024
til
java
cote ) til - 20240319

실패율 실패율 failture_rate1.png 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.…

March 19, 2024
til
algorithm
cote ) til - 20240318

비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 인 정사각형 배열 형태로, 각 칸은 “공백”(” ”) 또는 “벽”(”#”) 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 “지도 1”과 “지도 2”라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. “지도 1”과 “지도 2”는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 , 공백 부분을 으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다. secret map 네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의…

March 18, 2024
til
algorithm
cote) til - 20240318

part2. 알고리즘 유형 분석 - DFS, BFS, 백트레킹 그래프 자료구조 Graph Vertex(= node) edge 방향성 무방향 그래프 (= 양방향 그래프) 방향 그래프 순환 여부 순환 그래프(Cyclic Graph) 비순환 그래프(Acyclic Graph) 연결요소 Connected Component 정점 연결선(간선) 트리 자료구조(tree) 순환성이 없는 무방향 그래프 형태 트리는 특정하지 않는 한 어떤 노드이든 루트root 가 될 수 있다. 가장 바깥쪽 노드는 리프 노드 leaf node 라고 한다. node A에서 B로 가는 경로는 반드시 존재 하며 유일하다. (반드시 1개 존재) 노드개수 = 간선 개수 + 1 전산적으로 사용되는 구조에서는 이런 특징을 가진다. 자료구조에서의 트리는 부모 -> 자식 관계가 있는 방향 그래프이다. 루트 root 는 하나다 코드로 그래프를 나타내는 방법 1. 인접행렬 방향성이 있는 경우 같은 짝일 때 비대칭 구조가 되지만, …

March 18, 2024
til
algorithm
java) til - 20240315

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 09강. 실수 타입, 논리 타입, 변수의 참조 타입, String 클래스, Object클래스, toString(), 이스케이문자 왜 뒤에 f 등을 붙여서 실수를 표현하는가? 컴파일러에게 float 타입임을 알리기 위함 정밀도 면에서 float보단 당연히 double 이 정밀도가 높다 C언어에서는 논리타입은 존재하지 않는다(0, 1이를 대신함) 자바 타입은 참과 거짓을 의미하는 true, false를 논리 리터럴로 사용한다. (1byte) 자바의 참조타입(String, Object… etc) String 은 클래스 타입이며, 기본타입이 아닌 참조 타입임. 자바의 클래스의 최고 종상 클래스는 Object 클래스를 상속 받는다 기본적으로 참조 타입의 구조는 stack 에 heap에 생성되는 데이터의 주소값…

March 15, 2024
til
java
docker-kubernetes ) til - 20240315

kubernetes 가 정확히 무엇인가? 쿠버네티스는 기존 강의에서 언급한 수동으로 배포 및 웹 프로바이더들에 제약이 되는 등의 문제를 개선하는, 어떤 웹 클라우드 서비스에서도 독립적으로 구축이 가능한 오픈소스 시스템이다. 컨테이너 배포 관리, 컨테이너 오케스트레이션 가능, 자동 배포, 스케일링, 로드 밸런싱, 배포나 관리 등을 전반적으로 도와준다. 특히, 컨테이너를 모니터링하다, 다운이 되면 자동으로 교체하는 등에서 도움이 된다. kubernetes configuration 만 작성하면 쉽게 구성이 가능하다. 더불어 특정 도구로 클라우드나 어떤 머신이든 해당 속성으로 자동으로 배포 및 설정을 가능케 해준다.(즉 표준일 뿐 아니라 도커-컴포즈에서 좀더 확장되어 서버 전체를 설정, 관리 정책을 담은 일종의 통합 도구인 셈이다.) 여기에 더 나아가서 혹여 특수한 클라우드 프로바이더들 사이에 옵션을 추가하면, 해당 클라우드 프로바이더에 특화도 가능하며, 반대로 다른 클라우드에서 사용시 …

March 15, 2024
til
backend
cote) til - 20240315

part 2. 알고리즘 유형 분석 - 탐욕법 Greedy Algorithm 1 탐욕법 Greedy Algorithm 매 순간마다 최선의 경우만 골라서 선택하는 방식의 알고리즘 다른 경우는 고려하지 않고, 나중은 생각하지 않는다. 모든 경우를 다 보진 않아서, 완전탐색 알고리즘 보단 빠르다 어떤 경우가 최선인지 찾아야 하고, 규칙성을 발견하는게 포인트 당연한 말이지만 그렇다고 완벽하게 이상적인건 아니니 주의 2 동전 거스름돈 문제 A : 10, 50, 100, 500원 동전을 무한하게 갖고 있다. 손님에게 800원을 거슬러주려고 할 때 동전을 최소한으로 주는 방법은? 큰 단위부터 우선적으로 주는게 가장 효과적~ B: 만약 100, 400, 500원 동전을 무한하게 갖는경우? 400원짜리 2개 주는게 이득임(그리드로 풀수 없는 반례) 이러한 경우가 발생하는 이유는 A는 단위가 배수관계로 증대됨, B는 그렇지 않음. 배수의 관계로 B에서는 500원만으로 400원짜리 기준으로 만드는걸 만…

March 15, 2024
til
algorithm
cote) til - 20240314

part 2. 알고리즘 유형 분석 - 완전탐색 Chapter 2. 완전탐색 - 브루트포스 완전탐색 장점 : 모든 경로를 본다 = 결국 답을 발견한다. 단점 : 모든 경로를 본다 = 리소스를 많이 먹고, 모든 연산을 끝내야만 한 브루트 포스 Brute-force (무차별 대입) 모든 경우의 수를 다 넣어 답을 맞추는 방식 무식하지만 확실히 쓰인다. 암호학, 수학 등 학계에서나 ProblemSolving(PS)에서도 널리쓰인다. 우선 이 방식으로 답을 찾고 최적화하는 방법을 쓰기도 한다. Chapter 2. 완전탐색 - 예제문제(1) 그냥 완전탐색으로 값을 구할 수 있다. 하지만 그냥 하게 된다고 하면 입력의 값의 크기로 인해 1초라는 시간 안에 해결이 안됨. () 고려해 볼 만한 방법 정렬을 사용해 본다. : 보통 의 시간 복잡도가 소요됨 가장 큰 값이 들어올 때마다 기록하고, 모든 입력이 마무리 되면 더한다 : 의 시간복잡도가 예상된다. Chapter 2. 완전탐색 - 순열 …

March 14, 2024
til
algorithm
cote) til - 20240313

part 2. 알고리즘 유형 분석 - 자료구조 Chapter 1. 자료구조 - 배열, 벡터, 연결리스트 배열 Array 삽입 / 삭제 : O(N) - 삽입이나 삭제는 결국 내부 데이터를 옮기거나 하므로 최악의 경우를 상정하여 속도가 설정됨. 탐색 : O(1) - 메모리 상의 위치를 계산해서 접근하므로 접근의 속도가 매우 빠른 것이다. C++에서 사이즈 변경 불가 / Python은 리스트를 사용 벡터 Vector 삽입 / 삭제 : O(N) 탐색 : O(1) 동적 배열 : 사이즈 수정 가능 연결 리스트 Linked List 삽입 / 삭제 : O(1) 탐색 : O(N) - 노드 구조다 보니, 삽입이나 삭제는 노드들의 주소값 연결만으로 해결되지만 탐색은 모든 노드를 찾아 다녀야 한다. 자주 쓰이는 구조는 아니지만 다른 자료 구조들을 구현할 때 많이 쓰인다. Chapter 1. 자료구조 - 스택, 큐 스택 Stack(파이썬은 그냥 리스트로…) 큐 Queue Chapter 1. 자료…

March 13, 2024
til
algorithm
도커-쿠버네티스) til - 20240312

색션 11. Kubernetes 시작하기 모듈 소개 도커 컨테이너 배포 섹션에서 도커 컨테이너를 배포하는 방법은 배웠음 쿠버네티스란 실제로는 도구라기 보단 프레임워크, 개념 모음, 표준 이라고 할 수 있다. 모듈 컨텐츠 컨테이너 배포를 할 때 생기는 문제 이해하기 쿠버네티스가 무엇이며 왜 써야 하는가? 쿠버네티스의 개념과 컴포넌트들 수동 배포의 더 많은 문제점들 쿠버네티스 공식 사이트를 찾아보면 쿠버네티스에 대하여 “Kuberneetes is an open-source system for automating deployment, scaling, and management of containerized applications” 라고 부른다. 이를 통해 알 수 있는 것은 쿠버네티스가 단일 소프트웨어가 아닌 시스템이란 점이다. 컨테이너 배포에 도움이 되는 일체를 갖고 있다는 것을 알 수 있다. 우리는 아마도 문제 상황에 직면하게 된다. 컨테이너를 수동으로 배포하는 것에 대해 생각해보자.…

March 12, 2024
til
backend
cote) til - 20240312

part 0. 소개 강의 안내 강의 진행 언어 : python 가끔 C++ 섞을 예정 강의 구성 소개 part 1. 코딩테스트 준비 어떻게 해야 하나요 1. 코딩테스트란 2. 코딩 테스트 출제 경향 3. 코딩 테스트 채점 기준 4. 문제 해결 시작하기 part 2. 알고리즘 유형 분석 1. 자료구조 2. 완전탐색 3. 탐욕법 4. DFS, BFS, 백트래킹 5. 이분 탐색 6. 동적 계획법 part 1. 코딩 테스트 준비 어떻게 해야 하나요? chapter 1. 코딩테스트란? 온라인 저지를 꾸준하게 활용하는게 당연히 좋다. 본 강의는 백준을 주로 활용한다. << 나도 꾸준하게 풀긴 해야함 언어 고르기 무슨 언어로 문제를 풀어야 하는가? 3대장 : C++, java, python 본 강의는 파이썬 위주 진로가 확고하면 해당 언어로 연습하는 것이 좋다. 단, 마이너한 언어를 쓰면 문제 해결 시 난감할 수 있다. 기업 코텍에서는 언어 특성 차이로 인한 이슈는 없도록 내는 편 IT 기업들…

March 12, 2024
til
algorithm
자바 ) til - 20240304

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 08강 변수의 기본 타입 - 실수, 논리, 변수의 참조 타입, 이스케이프 문자 기억할 것들 실수 타입 자바는 기본적으로 실수 리터럴을 double로 해석하고 double타입 변수에 저장해야 한다. 위에 말은 반대로 말하면 실수를 float 에 저장시 컴파일 에러를 발생시킨다. 따라서 이를 해소하려면 숫자 뒤에 f, F 를 붙여야 한다. 이때 float , double 각 타입은 허용되는 최대 소숫점 이하 자리가 각 17, 15자리이다. 또한 정밀도는 double이 float 대비 2배 정도 좋은 편이다. 기본타입인 경우 자바여도 동일하게 C와 유사하게 동작하며, 기본타입이 아닌 것들이 전부 참조 타입으로 동작한다. 생각해볼 것들 TIL of Java Spring 08강 변수의 기본 타입 - 실수, 논…

March 04, 2024
til
java
개발자 영어 - 16

Introduce 본 내용은 Udemy를 통해 학습한 내용중 기억할 사항들을 정리한 내용들이다. 영어로 주석 제대로 달기 코드 주석 코드 주석의 목적 : 이해를 돕는 역할, 코드 수행하면서 머리 속에 정보를 정리 한다. 주의 나쁜 코드에 주석을 달지 말고 새로 짜라 - 브라이언 W. 커니핸, P.L. 플라우거 주석은 오래될 수록 코드에서 멀어진다. 따라서 잡음은 줄이고 의도는 명확하게 해야 한다. 당연한 것은 배제하고, 정말 필요한 것만을 남겨야 한다. 애초에 주석으로 설명할게 아니라 애초에 메소드의 명, 변수 명을 활용하여 주석 대신 설명할 수 있는게 낫다. 설명하지 말아야 할 내용 코드만 보면 누구나 알 수 있는 내용 나쁜 함수/ 변수명을 설명하려는 내용 설명하면 좋은 내용 코드가 특정 방식으로 작성된 이유 코드에 담긴 결함이나 향후 할 일 어떤 상수가 특정 값으로 정해진 이유 평범한 사람이 예상치 못한 특이한 동작 파일/클래스 수준에서 큰 그림을 설명하는 주석 코드 문서화 J…

January 04, 2024
til
자바) til - 202401020949

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 05 강 변수 선언, 초기화, 사용, 값을 바꾸는 방법, 주석의 의미, main()의 개념, … 기억할 것들 클래스 명은 가능하면 대문자로 시작해라 main()은 프로그램의 시작점 변수의 사용에 있어 반드시 초기화가 원칙 -> 실제 사용시 @Builder 를 통해 필요 없을 수 있는데, 더 자세히 이부분에 대해 이해해야 할 것 같다. 생각들 딱히 아직은 기초 내용을 복습하는거라 크게 문제는 없기도 하고 궁금한 사항들은 적은 것 같다. 계속 빠르게 복습하고 훑어야지… TIL of Java Spring 05 강 변수 선언, 초기화, 사용, 값을 바꾸는 방법, 주석의 의미, main()의 개념, … 기억할 것들 생각들

January 02, 2024
til
java
개발자 영어 - 13 ~ 15

Introduce 본 내용은 Udemy를 통해 학습한 내용중 기억할 사항들을 정리한 내용들이다. 13. 도입 코드 변수명과 주석의 연관성은? 물론 주석을 통해 정리할 수 있지만 변수명을 통해 오히려 주석을 적지 않아도 비즈니스 로직을 구체화 할 수 있다. 커밋 메시지의 중요성 바람직하게 커밋 메시지를 적어두면, 문제가 발생했을 때의 해결이 쉬워진다. 14.프로그래밍 과정에서 이름짓기와 관련된 심리학 여기서 다룰 내용 프로그래밍 과정에서 이름 짓기와 관련된 심리학 프로그램 개발 과정에서 영어로 이름 짓기 영어로 주석 제대로 달기 영어로 커밋 메시지 제대로 만들기 영어로 오류 메시지 제대로 만들기 이름의 중요성 스트루프 효과 [!스트루프 효과] 스트루프 효과 스트루프 효과는 심리학에서 널리 알려진 현상으로, 인간의 지각과 반응 사이에 발생하는 간섭을 설명합니다. 이 현상의 핵심은 다음과 같습니다: 색상과 단어의 불일치: 스트루프 효과는 특히 단어의 색상이 그 단어의 의미와 일치하지 않…

January 02, 2024
til
TIL_of_Network

TIL of Network 네트워크에 대한 이해도가 필요한 시점이 왔다고 생각했다. 백엔드 개발도 해보았고, 보안이나 연결도 얼추 해보았으나, 정작 네트워크에 대한 이해도가 높은지 애매했다. 그 와중에 이런 책을 발견하였다. 내용 구성이나, 이제는 읽어 볼 때 이해가 안되진 않을거란 생각이 들었고, 틈틈히 읽을 때마다 읽은 만큼 키워드를 저장 해 놓으려고 한다. 웹 정복은 한참 걸리겠지만…! 그래도 꾸준히 정리 해놓자. 1 네트워크는 어떻게 인터넷이 될까? 각 센터는 서로 직간접적으로 연결되어 있으며, 이러한 센터를 라고 부른다. 는 정보를 주고 받는 모든 네트워크 상의 기기들을 말하며, 노드의 공통점은 주소가 존재한다는 점이다.(IP) 네트워크를 걸쳐서 데이터를 전달해주는 중간 노드들 인터넷 트래픽을 구성하는 데이터 조각을 가리킨다. - : 는 네트워크 상에서 서비스를 제공하는 대상이며, 다른 노드로부터 정보를 전송 및 수신하여 사용하는 쪽 노드를 라고 부른다. …

December 18, 2023
til
TIL_of_Spring_230507

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 회원 관리 예제 - 백엔드 개발 회원 레포지터리 테스트 케이스 작성 main 메서드에서 실행하거나 웹 어플리케이션의 컨트롤러를 통해 기능 실행 여부를 판단이 가능하나 이는 시간도 걸리고 반복실행이 어렵다. 이에 자바는 이라는 프레임 워크로 테스트를 실행해서 이런 문제를 해결한다. 해당 방식이로 할 때 주의점은 전체 테스트를 돌릴 때, 과거의 테스트에 사용한 변수나, 데이터를 그대로 접근하게 되는 경우가 발생한다. 따라서 테스트가 하나 끝날 때 데이터를 초기화해주는 작업을 각 테스트별로 넣는게 용이하다. 해당 내용이 를 설정하는 것이다. 이렇게 테스트 케이스들을 전부 넣어서 tes…

May 07, 2023
til
java
TIL_of_Spring_230425

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 회원 관리 예제 - 백엔드 개발 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 회원 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 간단하게 하는 이유는 스프링 생태계 파악용이니까.. 너무 복잡하게 생각하진 말자. 컨트롤러 : 웹 MVC 컨트롤러 역할, 웹 환경에서의 다양한 요청의 1차적 집합소(?) 서비스 : 핵심 비즈니스 로직을 구현, 룰, 제한사항, 서비스의 설계에서 가이드 역할을 해주는 공간 레포지터리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리하는 역할 도메인 : 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주…

April 24, 2023
til
java
TIL_of_Spring_230424

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. MVC와 템플릿 엔진 MVC : Model, View, Controller 요즘은 MVC 스타일로 많이 사용한다. view 란 화면 자체를 그리는 것에만 집중해야 한다. 이에 비해 controller는 비즈니스 로직과 관련이 있거나 내부적 처리에 집중하느 것을 의미한다. 이것을 Model, view, controller 로 분리해서 집중한다는 말은, 한 마디로 내부 구조를 명확하게 구분지어 화면을 뿌리는 요소와 내부 로직을 명확하게 구분지어주는 것을 의미한다. 위의 예시로 작성을 하게 되면 localhost:8080/hello-mvc 로 GET 할 경우, 값을 받아야 함을 지정해줄 …

April 24, 2023
til
java
TIL_of_Spring_230419

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 빌드하고 실행하기 실제 동작하는 프로그램으로 만드는 것은 매우 간단하다. Mac OS 기준 명령어를 통해 알아서 돌아가게 된다. 빌드를 마친 후에는 경로를 따라 들어가면, 빌드가 된 완성 jar 파일이 눈에 들어올 것이다. 그 뒤 실행은 으로 정상 실행되는 것을 확인하면 빌드가 마무리 된 것이다. 이렇게 완성된 빌드 파일을 서버에 올리고 실행을 시키면 기본적인 서버가 구성이 되어 서버로 동작하게 될 것이며, 여기에 각종 파이프나 포트를 통해 마이크로서버의 구축이나, 도커를 활용한 컨테이너 기법을 통해 시스템의 구조를 여러모로 수정할 수도, 제작할 수도 있는 것이다. 추가로 …

April 19, 2023
til
java
반복문 - 25314 15552 11021

TIL of Algorithm 25314 - 코딩은 체육과목 입니다 문제 오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다. C++ 책을 열심히 읽었던 혜아는 간단히 두 수를 더하는 코드를 칠판에 적었다. 코드를 본 면접관은 다음 질문을 했다. “만약, 입출력이 �$N$바이트 크기의 정수라면 프로그램을 어떻게 구현해야 할까요?” 혜아는 책에 있는 정수 자료형과 관련된 내용을 기억해 냈다. 책에는 는 4$4$바이트 정수까지 저장할 수 있는 정수 자료형이고 는 8$8$바이트 정수까지 저장할 수 있는 정수 자료형이라고 적혀 있었다. 혜아는 이런 생각이 들었다. “ 앞에 을 하나씩 더 붙일 때마다 4$4$바이트씩 저장할 수 있는 공간이 늘어나는 걸까? 분명 는 12$12$바이트, 는 16$16$바이트까지 저장할 수 있는 정수 자료형일 거야!” 그렇게 혜아는…

April 19, 2023
til
TIL_of_Spring_230417

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 라이브러리 살펴보기 이전에 프로젝트를 생성하면서 라이브러리를 많이 받아오진 않았다. 하지만 막상 실제 다운로드 받아진 라이브러리는 정말 많은 것을 알 수있다. 요즘의 웹 어플리케이션 빌드에서 보통 몇 십메가 정도의 라이브러리들은 자동으로 다운로드가 되고 사용된다. Gradle이나 Maven 같은 빌드 툴들은 를 관리해주는 기능을 갖고 있다. 우리가 사용하려는 라이브러리를 선택하면, 해당 라이브러리가 동작하기 위한 의존 관계의 것들을 모두 자동으로 다운받고, 관리해주는 것이다. 인텔리제이의 우측에 보면 Gradle 항목이 있고, 이를 누르면 실제 의존관계를 확인할 수 있다. 또한…

April 17, 2023
til
java
반복문 - 8293 25304

TIL of Algorithm 8293 - 합 문제 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다. 출력 1부터 n까지 합을 출력한다. 예제 입력 / 예제 출력 작성 코드 후기 반복문의 구조에 부합하게 짜봤지만 제일 빠른 코드는 수학 방정식을 들고와 버리는 것이었구요;; 역시 수학이 필요하다는 건가 싶기도 하다. 25304 - 영수증 문제 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다. 영수증에 적힌, 구매한 각 물건의 가격과 개수 구매한 물건들의 총 금액 을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자. 입력 첫째 줄에는 영수증에 적힌 총 금액 X 가 주어진다. 둘째 줄에는 영수증…

April 17, 2023
til
TIL_of_Spring_230413

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 강의 소개 목표 => 간단한 웹 어플리케이션 개발 스프링 부트 프로젝트 생성 스프링 부트로 웹 서버 실행 회원 도메인 개발 웹 MVC 개발 DB 연동 - JDBC, JPA, 스프링 데이터 JPA 테스트 케이스 작성 ~ 큰그림과 핵심 기술들을 돌려보면서, 어디서 무엇이 어떻게 왜 쓰이는지를 파악하자 가 목표! 내가 이 강의에서 지켜 나가고, 배워가야할 것 첫 감 잡기에 만족하자 스프링 기술에 매몰되지 말자 실무에서 안 쓰는 건 과감히 제거하자. 김영한 교수님의 강의 시리즈를 다 볼 수 있을지는 애매하다(무엇보다 돈이;;). 일단 기본만 하고 실 프로젝트에 들어가봐야 알것 같긴한데… 흠…

April 13, 2023
til
java
반복문 - 10950

TIL of Algorithm 문제 두 정수 A와 B를 입력 받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다(0 < A, B < 10) 출력 각 테스트 케이스마다 A+B 를 출력한다. 예제 입력 예제 출력 작성 코드 후기 2739번도 풀었다. 하지만 워낙 쉬운 문제이기 때문에 스킵함. 오늘 느낀 거지만 파이썬 형변환도 그렇고 너무 쉬운거 아닌가.. range함수의 경우 사용 방식이 여러가지라 처음엔 어떻게 넣어야 정상 작동하는지 헷갈렸다. 지금은 완벽… TIL of Algorithm 문제 입력 출력 예제 입력 예제 출력 작성 코드 후기

April 13, 2023
til
조건문 - 2480

TIL of Algorithm 문제 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.  같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.  같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.  모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.   예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다. 3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오. 입력 첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 …

April 12, 2023
til