GRPC 

gRPC는 구글이 개발한 오픈소스 RPC(Remote procedure call) 시스템이다. HTTP/2와 Interface description language인 프로토콜 버퍼(Protocol Buffers)를 기반으로 하고 있다. 인증, 양방향 스트리밍, timeout, cancellation, 블럭킹, 넌블럭킹등의 기능을 제공한다. gRPC를 이용하...

클래스와 함수 

클래스에 대해서 좀 더 자세히 살펴보자. 테스트를 위해서 Time이라는 클래스를 만들었다. class Time(object) """represents the time of day. attributes이제 Time 클래스로 부터 새로운 객체를 만들어서 hour, minutes, seconds 어트리뷰트를 추가했다.time = Time()time.hour = ...

웹 애플리케이션에서의 context 활용 

Go의 context패키지는 프로세스 혹은 API 간에, 값, 시그널, 취소(cancelation), 데드라인(deadline)등을 전달하기 위해서 사용한다. REST API 서버를 만든다고 가정해보자. 서버는 요청 받으면, 이에 대한 컨텍스트를 만들 수 있다. 그리고 이 요청을 처리하기 위한 함수를 호출 할 수 있다. 이러한 함수의 호출 체인에 컨텍스트를...

Python에서 mongodb 사용 

테스트 환경 우분투리눅스 17.04 python 2.7.12 mongodb 2.6.11는 설치했다고 가정한다. pymongo 패키지를 설치한다.$ pip install pymongo패키지가 제대로 설치됐는지 확인한다.>>> import pymongoMongoClient를 이용해서 몽고디비에 연결한다.>>> from pymongo import MongoCli...

웹 애플리케이션에서의 로깅 

웹 애플리케이션 서버는 웹 엑세스로그와 애플리케이션 로그다. 웹 엑세스 로그는 NginX와 Apache 웹 서버가 남기는 , 메서드(GET, POST, PUT, DELETE), HTTP Status Code, 접근 시간, 클라이언트 애플리케이션 정보등을 포함한다. Combined 로그 형식을 널리 사용한다. 127.0.0.1 - frank (Win98; I...

golang-mysql 

LAMP는 최근 몇년 동안 가장 인기있는 소프트웨어 모음이었다. LAMP에서 M은 Mysql으로 괜찮은 성능과 (특히)뛰어난 사용성으로LAMP 스택의 성공을 견인했다. NoSQL이 주목을 받고 있지만 MysSQL은 여전히 가장 인기 있는 데이터베이스로 웹 기반의 많은 서비스들이 백앤드 데이터베이스로 사용하고 있다. Go언어는 SQL 데이터베이스를 위한 제너...

Facade pattern 

Facade는 건물의 외관을 의미한다. 여러 클래스를 사용 해야 한다고 가정해보면, 개발자는 각각의 클래스로 부터 객체를 만들어서 사용해야 할 것이고, 각 클래스의 세부동작을 알고 있어야 할 것이다. Computer클래스가 있다고 가정해보자. 이 컴퓨터를 끄고, 켜기 위해서는 CPU, 메모리, 하드, 운영체제 등 수많은 작업을 수행해야 한다. 객체지향에서는...

Golang factory method pattern 

팩토리는 공장이라는 뜻을 내포하고 있다. 우리가 공장에 어떤 제품을 요청하면, 공장에서 그에 맞는 제품을 내놓는다. 이때 개발자는 공장의 내부를 알고 있을 필요가 없다. 그냥 공장에서 제공하는 제품의 목록과 이름을 알고 있으면 된다. 소프트웨어 공학에서 팩토리 메서드는 메서드의 구현을 서브 클래스에 위임하는 개발 방법이다. 개발자는 필요에 따라서 다양한 구...

코틀린 클래스와 상속 

class 키워드로 클래스를 만들 수 있다.class Invoice {}클래스 선언은 클래스 이름, 클래스 헤더(매개변수 및 기본 생성자)와 중괄호로 묶인 클래스 본문으로 구성된다. 클래스 헤더와 본문은 선택사항이다. 즉 아래와 같이 사용 할 수 있다.class Empty 코틀린은 하나의 기본생성자(primary constructor)와 하나 이상의 보조생...

Kotlin - return and Jumps 

코틀린은 3개의 점프 포현식을 제공한다. 1. return 1. break 1. continue 이들 모든 표현식은 다른 표현식의 일부로 사용 할 수도 있다.val s = person.name ?코틀린은 모든 표현식에 label을 붙일 수 있다. 라벨은 식별자 뒤에 @를 붙이는 식으로 완성한다. 예를 들어 abc@, fooBar@들은 유효한 라벨이다....