Zaccoding (20) 썸네일형 리스트형 [Gin] 바인딩 및 에러 처리하기 gin 은 golang의 인기있는(스타가 많은?) web framework 중 하나이며 http request의 header, uri, query, json body 등을 바인딩 하는 방법을 살펴보고 주의해야 할 점에 대해 알아보겠습니다. 목차 바인딩 할 태그 정의 Validation 추가 ShouldBindXXX 이용하기 전체 소스 코드 테스트 진행하기 에러 핸들링하기 마무리 1. 바인딩 할 태그 정의 우선 아래와 같이 태그를 이용하여 바인딩 할 필드를 정의할 수 있습니다. header : header:"header-key" uri : uri:"uri-path" query : form:"query-parameter-name" type HeaderParameter struct { XRequestID st.. Spring Boot Test 하기 (1) (모든 전체 코드는 github에 있습니다. ) Spring boot에서는 다양한 어노테이션 등을 이용해서 테스트를 쉽게 할 수 있도록 도와줍니다. 첫번째 포스팅에서는 Spring 기반의 Application 어떻게 이루어져있고 간단한 Rest API 를 만들어 보겠습니다. Overview Spring기반의 RESTFul Web Service는 아래와 같이 표현될 수 있습니다.(HandlerMapping 등은 생략) Spring layer (출처: https://terasolunaorg.github.io/guideline/5.0.1.RELEASE/en/ArchitectureInDetail/REST.html) (1) : User -> WebService로 HTTP POST 요청(Create) (2) : J.. Spring Cloud Service Discovery - Netflix Eureka (1) 전체 내용은 Github에 있습니다 :) 목차 DiscoveryClient Netflix eureka 개요 Netflix eureka 시작하기 DiscoveryClient 서비스 레지스트리는 서비스 인스턴스와 서비스가 제공하는 API를 포함하는 테이블입니다. (서비스 레지스트리는 CAP(Consistency 일관성, Availability 가용성, Partition tolerance 분리 내구성) 정리의 제약을 받는다고 합니다. CAP 이론을 정확히 알지못하지만 3가지를 만족하는 분산 시스템은 존재하지 않는다? 그래서 상황에 따라 2개를 만족하는 시스템을 선택한다? 이런 내용인 것 같습니다) Spring Cloud는 DiscoveryClient 추상화를 통해 다양한 유형의 서비스 레지스트리를 이용할 수 .. Spring Security + OAuth2(JDBC) + Swagger 서버 구축하기 전체 내용는 github 에서 확인할 수 있습니다 (스타는 사랑입니다) Spring security + OAuth2(JDBC) + Swagger를 모두 설명하기 보다는 구현에 초점을 두겠습니다. 또한 UserDetailService등의 구현 설명은 생략 하겠습니다. Index 의존성 추가 스프링 관련 설정 JDBC 기반 OAuth2 프로젝트 실행 테스트(SWAGGER-UI) 테스트(JUNIT) 의존성 추가 Security, OAuth2, Swagger 관련 의존성 추가 org.springframework.boot:spring-boot-starter-security org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2... [zookeeer-2] 주키퍼(zookeeper) 분산 락처리 전체 내용는 github 에서 확인할 수 있습니다 (스타는 사랑입니다) 하나의 어플리케이션에서는 같은 JVM 위에서 동작하기 때문에 java.util.concurrent 패키지의 Lock이나 Semaphore를 이용하여 하나의 스레드만 동작하게 할 수 있습니다. 하지만 이중화, 오토 스케일링 등과 같이 다른 물리 서버에서 동작 할 경우 위의 Lock, Semaphore 인스턴스를 이용하여 하나의 스레드만이 task를 수행 하도록 할 수 없습니다. 이를 해결하기 위해 1. -Dtask1.enabled=true과 같이 설정으로 하나의 WAS만 작업을 수행한다. 가장 간단한 방법이지만, 대부분 HA 구성을 위해 2대 이상의 서버가 동작하고 있고 해당 서버의 장애가 발생할 경우 해당 작업은 수행되지 않습니다. .. [zookeeer-1] 주키퍼(zookeeper) 기본 개념 및 CLI 사용법 전체 내용는 github 에서 확인할 수 있습니다 (스타는 사랑입니다) Zookeeper Zookeeper 란? Zookeeper 데이터 모델 Zookeeper 서버 구성도 설치 및 CLI 기본 사용 도커 컴포즈를 이용한 주키퍼 실행 Java client 기본 사용 Zookeeper 활용 Reference Zookeepr 란? 분산 코디네이션 서비스를 위한 오픈소스 프로젝트 분산 처리 환경에서 사용 가능 한 데이터 저장소 활용 분야 서버 간의 정보 공유 (설정 관리) 서버 투입|제거 시 이벤트 처리(클러스터 관리) 리더 선출 서버 모니터링 분산 락 처리 장애 상황 판단 Zookeeper 데이터 모델 일반적인 파일 시스템과 비슷 각각의 디렉터리 노드를 znode라고 명명(변경X, 스페이스X) 노드는 영구(.. [Ethereum-POA] Parity aura consensus 간단 분석 POA : Parity - Aura(Authority Round) Define of step Primary Node Block Difficulty Example Finality Reference Define step step=UNIX_TIME/t, 여기서 t는 duration Primary Node index=step mod n, 여기서 n은 signer 수 Block Difficulty max_value(==340282366920938463463374607431768211455) + parent_step - current_step + current_empty_steps // in parity source // Chain scoring: total weight is sqrt(U256::max_value(.. Publish / Subscribe 패턴 알아보기 Publish / Subscribe 패턴 알아보기 모든 소스 코드는 Github에 있습니다. 스타는 사랑입니다 :) publish / subscribe 관련 패턴은 Blocking Queue BlockingQueue를 이용하여 Publish / Subscribe 패턴 구현하기 자바의 java.util.concurrent.BlockingQueue 인터페이스 구현체를 통해서 Publish / Subscribe를 구현할 수 있습니다. 우선 Publisher와 Subscriber가 공통의 BlockingQueue 구현체 인스턴스를 가지고 메시지 Publish(publisher::offer()) 메시지 Subcribe(subscriber::take())를 통해서 메시지를 전달할 수 있습니다. 아래는 간단한 Pub.. 이전 1 2 3 다음