Golang을 사용하다보면 임시 구조체를 사용하면 생각보다 유연하고 편하게 작업 할 수 있다. 함수 내에 스택에 할당됨으로 함수내에서만 사용가능하다. 일반적으로 사용하는 구조체와의 차이점이라고 할 수 있다. type Test struct{ TestId string } func Tt(){ t := &Test{} } 일반적으로는 위와같은 방법으로 구조체를 생성하고 사용하지만 다음과 같이 사용하면 구조체를 임시로 사용가능하다. func Tt(){ var Test struct{ TestId String } t := &Test{} } 위와 같이 함수내에 구조체를 정의 하여 사용할 수 있고, 슬라이스로도 사용이 가능하다. 활용방안은 데이터베이스를 사용할때 ORM 은 각 테이블에 관한 정보는 제대로 가져오나 (gro..
사실상 gRPC를 사용한다면 필드이름이랑 json으로 변환할때 큰 신경을 안써도 된다. 적어도 내가 하는 프로젝트에선 하지만 gRPC를 HTTP 통신을 하고싶다면 요청은 큰 문제가 없지만 응답을 받을때 우리가 예상한 키 값으로 넘어 오지 않는다. 가령 message Test{ string first_name = 1; ==> JSON firstName string last_name = 2; ==> JSON lastName } 위와 같이 _ 가 camelCase형식으로 바뀌디 때문에 예상한 응답이 아닐 경우가 있다. 이럴때는 gRPC gateway 의 ServeMux에 옵션을 추가해주면 해결된다. gwMux := runtime.NewServeMux( runtime.WithMarshalerOption(runt..
gRPC 는 통신을 할때 protobuf 를 사용하는데 gRPC를 사용하기전 tcp 통신으로 protobuf를 파이썬에서 만 사용해봤었다. 이번 프로젝트에서 gRPC를 사용하게 되면서 gRPC Gateway 통신에도 oneof 를 사용해 보려고 한다. 아직 protobuf 자체를 Go에서 사용해 본것이 아니고 gRPC에서만 테스트한 예제이다. message Test{ int64 admin_id = 1; int64 user_id = 2; } 만약 위와같은 필드를 사용하는데 둘중 하나의 필드만 사용한다면 oneof 키워드를 사용할 수 있다. message Test{ oneof id_oneof{ int64 admin_id = 1; int64 user_id = 2; } } 그렇다면 Go에서 위와 같은 oneof..

텐서플로 라이트를 활용한 안드로이드 딥러닝 책이다. 안드로이드에서 딥러닝을 활용하는 방법을 소개하는 책인데, 처음부터 말하자면 아쉬움이 많이 남는 책이다. 이 책은 딥러닝에서 대표적인 텐서플로를 활용하여 안드로이드 앱을 제작 하는 방법을 소개하는데 책의 내용이 텐서플로보다는 안드로이드 앱 제작에 대한 내용이 상당히 많다. 물론 초심자가 보기에는 당연, 안드로이드 개발자가 아니고 딥러닝 개발자 라면 안드로이드 플랫폼에 대해 어색할 수도있다. 그도 그럴 것이 딥러닝은 대게 파이썬으로 구현하여 사용하기에, Kotlin, Java와 같은 언어의 플랫폼에서 활용 하는 것과는 다르기 때문이다. 그렇다고 해서 모델을 자바로 개발하는 것은 아니기에, 어떻게 해서 텐서플로가 안드로이드 플랫폼에서 돌아가고, 어떻게해서 딥..

크로스플랫폼의 대표 주자라고 할수있는 리액트 네이티브 초심자를 위한 책인데 사실 react를 조금 알고 있으면 보기 편하다. 당연히 해당 플랫폼에서 제공하는 환경에서 개발하는 것이 가장 좋지만, 시간 적인 여유, 앱의 특성에 따라 크로스플랫폼으로 개발을 한다면 상당한 프로젝트의 시간을 줄일 수 있다. 책에서도 말하지만 해당 플랫폼에서 최신의 기술을 적용하기에는 리엑트 네이티브 자체에서 제공하는데 시간이 걸리는 단점이 있다. 하지만 이것이 모든 단점이라고 할수는 없듯이 최신기술을 적용한다고 하여 무조건적인 이점을 얻는 것도 아니고 한번의 개발로 Andorid, IOS 에 앱을 배포 할수 있다는 큰 메리트를 생각한다면 최신의 기술의 지원에 대한 부재는 충분히 커버 할 수 있다고 생각된다. 초심자를 위한 책이..