분류 전체보기 219

어노테이션 정리

- MVC Model : 화면에 필요한 걸 담아간다. View : 화면 그리는 것에 집중 Controller : 비즈니스 로직에 집중 - @Service - @Repository - @Controller @GetMapping, @PostMapping ... @ResponseBody : HttpMessageConverter가 동작해서 API형태로 리턴 즉 JSON포맷으로 전달한다.( 객체 리턴시, 객체 멤버 JSON형식으로 리턴됨) @RestController : 컨트롤러를 JSON을 반환하는 컨트롤러를 만들어 진다. 이는 @Responsebody를 함수마다 안붙여주고 해당 컨트롤러내의 함수는 다 API형태로 리턴하게 해줌 요청이 들어오면 Controller를 가장 먼저 찾는다. 이후 Static을 찾아간..

Spring Boot 2022.03.20

빈 등록하기

- 스프링 빈 (in 스프링 컨테이너) 등록하는 2가지 방법이 있다. 1. 컴포넌트 스캔(@Controller,@Service,@Repository)와 자동 의존관계 설정(@Autowired) 근데 왜 컴포넌트 스캔이냐? => @Component라는 어노테이션 안에 위 Controller,Service,Repository같은 것들이 포함되어 있다. 젤 처음 Main실행될 때 패키지 하위는 다 뒤져서 포함시킨다. 참고 : 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때 기본으로 싱글톤으로 등록한다. 따라서 같은 스프링 빈이면 같은 객체이다. 2. 자바 코드로 직접 스프링 빈 등록하기 설정 파일에 이런 것들을 등록하라고 적어놓으면 된다. 정형화되지 않거나 상황에 따라 구현 클래스를 변경해야하면 2번 방법..

Spring Boot 2022.03.20

DID 서비스

DID 데이터 위변조가 불가능한 블록체인을 기반으로 탈중앙화된 신원확인 서비스를 지원하는 기술, 이를 통해 사용자가 자신의 정보를 선택적으로 제공하여 자신의 신원정보에 대한 주권을 강화하고 스스로 개인 정보에 대한 통제가 가능하다. 이 기술을 통해 특정 서비스의 이용, 컨텐츠의 소유 등을 인증할 수 있다.( => 개인 스스로가 자신의 신원을 인증하여 자신의 콘텐츠를 안전하게 보관하며, 콘텐츠에 대한 소유권을 신뢰성 있게 보장받을 수 있도록) DID는 블록체인 기반 인증으로 비대칭 암호화 알고리즘 방식을 사용하며 자신을 설명할 수 있는 DID Document를 직접 소유하면서 관리하여 스스로 신원 데이터의 통제, 신원 증명 권한을 가진다. DID Document는 자격증명을 검증할 수 있는 데이터를 담은 ..

BlockChain 2022.03.20

텐더민트(Tendermint) 합의 알고리즘

텐더민트 합의 알고리즘은 코스모스 블록체인의 엔진이다. 코스모스 블록체인은 블록체인 확장성 문제를 해결하는 코스모스 허브라는 메인넷 론칭을 준비하고 있다. 텐더민트는 비트코인, 이더리움의 poW의 문제를 풀기 위해 전체 검증자 중 3분의 2이상이 찬성으로 합의에 이르는 비잔틴 장애 허용(BFT)기반으로 설계됐다. 텐더민트는 BFT를 개량해, 퍼블릭 블록체인과 프라이빗 블록체인에서 모두 사용할 수 있게 했다. 이 코어 엔진은 초당 수천건의 트랜잭션처리가 가능하다. 이는 수많은 애플리케이션을 하나에 작동할 성능이라 생각하여 블록체인의 확장성 문제를 주목하게 된것이다. 이는 코스모스 허브라고 불리는데 블록체인들의 중간 역할을 하면서 블록체인간 통신 프로토콜을 통해 상호 통신한다. 텐더민트 코어 최근까지 블록체..

BlockChain 2022.03.19

메이븐(Maven) vs 그래들(Gradle)

Spring Boot를 편리하기 생성하기 위해 Spring Initializer를 사용할 수 있다 이때 Project에서 Maven과 Gradle을 골라야 하는데 어떤 차이가 있는지 정리하고자 한다. Maven은 자바용 프로젝트 관리 도구이다. 프로젝트를 진행함에 따라 여러 기능에 필요한 라이브러리를 사용할 수 밖에 없다. 이떄 이러한 라이브러리는 서로 연관되어 있는 라이브러리도 있고 업데이트도 되어서 프로젝트가 성공적으로 빌드되야 한다. 이러한 역할을 도와주는 것이 프로젝트 관리 도구이다. Gradle은 Groovy를 이용한 빌드 자동화 시스템이다. 여기서 Groovy는 언어인데 이 언어로 빌드에 필요한 스크립트를 작성하는 것이다. 이는 안드로이드 앱의 공식 빌드 시스템과 동일하다. 기존 메이븐의 경우..

Spring Boot 2022.03.19

프로그래머스, 길 찾기 게임 [파이썬]

길 찾기 게임 문제 설명 길 찾기 게임 전무로 승진한 라이언은 기분이 너무 좋아 프렌즈를 이끌고 특별 휴가를 가기로 했다. 내친김에 여행 계획까지 구상하던 라이언은 재미있는 게임을 생각해냈고 역시 전무로 승진할만한 인재라고 스스로에게 감탄했다. 라이언이 구상한(그리고 아마도 라이언만 즐거울만한) 게임은, 카카오 프렌즈를 두 팀으로 나누고, 각 팀이 같은 곳을 다른 순서로 방문하도록 해서 먼저 순회를 마친 팀이 승리하는 것이다. 그냥 지도를 주고 게임을 시작하면 재미가 덜해지므로, 라이언은 방문할 곳의 2차원 좌표 값을 구하고 각 장소를 이진트리의 노드가 되도록 구성한 후, 순회 방법을 힌트로 주어 각 팀이 스스로 경로를 찾도록 할 계획이다. 라이언은 아래와 같은 특별한 규칙으로 트리 노드들을 구성한다. ..

Algorithm 2022.03.18

프로그래머스, 실패율 [파이썬]

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

Algorithm 2022.03.08

프로그래머스, 야근지수[파이썬]

문제 설명 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다.Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요. 제한 사항 works는 길이 1 이상, 20,000 이하인 배열입니다. works의 원소는 50000 이하인 자연수입니다. n은 1,000,000 이하인 자연수입니다. 입출력 예. works n result [4, 3, 3] 4 12 [2, 1, 2] 1 6 [1,1] ..

Algorithm 2022.03.08

프로그래머스, 외벽점검 [파이썬]

문제 설명 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 도중에 주기적으로 외벽의 상태를 점검해야 할 필요가 있습니다. 레스토랑의 구조는 완전히 동그란 모양이고 외벽의 총 둘레는 n미터이며, 외벽의 몇몇 지점은 추위가 심할 경우 손상될 수도 있는 취약한 지점들이 있습니다. 따라서 내부 공사 도중에도 외벽의 취약 지점들이 손상되지 않았는 지, 주기적으로 친구들을 보내서 점검을 하기로 했습니다. 다만, 빠른 공사 진행을 위해 점검 시간을 1시간으로 제한했습니다. 친구들이 1시간 동안 이동할 수 있는 거리는 제각각이기 때문에, 최소한의 친구들을 투입해 취약 지점을 점검하고..

Algorithm 2022.03.07