gRPC란? gRPC는 Google에서 개발한 RPC(Remote Procedure Call) 시스템으로 TCP/IP + HTTP 2.0 프로토콜을 사용하며 IDL(Interface Definition Language)을 통해 protocol buffer로 통신합니다. gRPC에서는 클라이언트 애플리케이션이 마치 로컬 객체인 것 처럼 다른 서버의 함수를 직접 호출할 수 있습니다. 많은 RPC 시스템처럼 gRPC는 서비스 정의에 기반을 두고 있으며, 직접 파라이터와 리턴 타입을 사용하여 원격으로 호출할 함수를 지정합니다. 클라이언트 측에서는 서버와 동일한 함수를 제공하는 stub(일부 언어에서는 클라이언트)을 지니고 있습니다. 프로토콜 버퍼(Protocol Buffers) 기본적으로 gRPC는 구글에서 오..
![MQTT 안드로이드 코틀린 클라이언트 + 서버 만들기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxOF45%2FbtrM7oUvuy7%2FaDlYPbjdFLkqzGi754hkO1%2Fimg.png)
MQTT란? MQTT(Message Queueing Telemetry Transport)는 2016년 국제 표준화된 발행(Publish)-구독(Subscribe) 기반의 메시지 송수신 프로토콜로 최소한의 전력과 패킷으로 통신합니다. TCP/IP 프로토콜 위에서 동작하지만 가벼우면서도 많은 통신 제약을 해결할 수 있기에 모바일과 IoT 같은 환경에서 어울려 사용하기 좋습니다. MQTT 구조도 또한 Topic 기반으로 발행/구독을 하기에 자신이 원하는 Topic을 Brocker을 통해 구독(Subscribe)하면 해당 Topic으로 발행(Publish)되는 메시지를 받을 수 있습니다. 이러한 아키텍처 덕에 IoT에서도 강한 이점을 보이며, Topic 분류 기준에 따라 같은 기능이라도 여러 방식으로 디자인을 ..
컴포즈 웹 프로젝트를 생성 후 빌드를 시도하자마자 아래의 오류가 발생하였습니다. KJS / Gradle: Configuration failed: Could not find node-14.17.0-darwin-arm64.tar.gz (org.nodejs:node:14.17.0) 연계된 레포지토리가 삭제된 것인가 생각을 하다, 이전 gRPC를 다루는 과정에서 M1에 해당되는 ARM64 바이너리가 릴리즈 되지 않아 고생했던 기억을 떠올리며 방법을 찾던 중 노드의 버전을 변경해보라는 내용을 찾아 적용해보았습니다. build.gradle.kts repositories { rootProject.plugins.withType { rootProject.the().nodeVersion = "16.0.0" } 적용 후 s..
![혼합현실 UX를 위한, 메타버스를 디자인하라](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdrxl7f%2FbtrOwPbZcAj%2FKBCN3St9kiwUAYFcTRL2uk%2Fimg.png)
이전에는 4차 산업혁명, 유비쿼터스가 유행이었다면 최근 메타버스라는 3차원의 가상세계가 유행하고 있으며, 이에 따라 넥슨은 신규 메타버스 플랫폼 PROJECT MOD를 준비하고 페이스북은 회사명을 `메타`로 변경할 정도로 최근 많은 회사에서 집중적으로 투자하고 있습니다. 이 메타버스가 무엇인지, 그리고 그 세계를 거리감 없이 디자인하여 사용자에게 보여주는 방법을 담은 도서, '메타버스를 디자인하라' 를 리뷰해보겠습니다. 본 리뷰는 한빛 미디어의 '나는 리뷰어다'를 통해 받은 도서입니다. 메타버스란 메타버스는 메타(meta: 초월, 변화)와 유니버스(universe: 우주, 세계)의 합성어로 현실세계와 같이 사회, 경제, 문화 활동이 이뤄지는 3차원의 가상세계입니다. 1992년 Snow Crash 소설에서..
Build Error Log 2022-02-25 13:43:50.714 3448-3498/com.autocrypt.mi.bf2u.barrierfree E/AndroidRuntime: FATAL EXCEPTION: pool-23-thread-1 Process: com.autocrypt.mi.bf2u.barrierfree, PID: 3448 java.lang.IllegalArgumentException: com.autocrypt.mi.bf2u.barrierfree: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Stron..