본문 바로가기

프로그래밍257

3. gRPC 코어 컨셉과 설계, 라이프 사이클 Core concepts, architecture and lifecycle An introduction to key gRPC concepts, with an overview of gRPC architecture and RPC life cycle. grpc.io 서비스 정의 많은 RPC 시스템처럼, gRPC는 서비스를 정의하는데 기반을 둔다. 원격으로 부를 수 있는 메소드에 대한 정의를 구체화할 수 있습니다. 기본적으로 서비스 인터페이스와 페이로드 메시지 구조를 처리하기 위해 Protocol buffers를 (Interface Definition Language, IDL)을 사용합니다. 다른 대안을 사용할 수 있습니다. service HelloService { rpc SayHello (HelloReques.. 2022. 4. 10.
2. gRPC Dart 샘플 프로젝트 설치 https://grpc.io/docs/languages/dart/quickstart/ 기본적으로 Flutter와 Dart는 연결된 상태라고 가정하고 시작합니다. GitHub - grpc/grpc-dart: The Dart language implementation of gRPC. The Dart language implementation of gRPC. Contribute to grpc/grpc-dart development by creating an account on GitHub. github.com 다트 언어로 작성된 예제 파일을 다운 받아 줍니다. helloworld 프로젝트를 열어고 Dart SDK 경로가 연결되지 않은 경우, Settings에서 작업을 해줍니다. // Run the Exampl.. 2022. 4. 10.
1. gRPC란 무엇인가? gRPC는 구글이 최초로 개발한 오픈 소스 원격 프로시저 호출 시스템이다. 전송을 위해 HTTP/2를, 인터페이스 정의 언어로 프로토콜 버퍼를 사용하며 인증, 양방향 스트리밍 및 흐름 제어, 차단 및 비차단 바인딩, 취소 및 타임아웃 등의 기능을 제공한다. 위키백과 최초 출시일: 2016년 8월 Introduction to gRPC An introduction to gRPC and protocol buffers. grpc.io gRPC는 포로토콜 버퍼를 사용하며 Interface Definition Language(IDL)을 메시지 교환 포맷으로 쓴다. 클라이언트에서는 직접적으로 서버 메소드를 호출할 수 있다. 분산 어플리케이션과 서비스를 만드는데 쉽다. gRPC는 서비스의 정의를 기반으로 하는데, 서버.. 2022. 4. 10.
[Flutter] Dialog insetPadding /// Defaults to `EdgeInsets.symmetric(horizontal: 40.0, vertical: 24.0)`. /// {@endtemplate} final EdgeInsets? insetPadding; Dialog insetPadding 속성을 통해 숨겨진(?) 패딩값을 조절할 수 있다. 예전에 안드로이드에서 테블릿에서만 Padding 잡혀 있던 거 생각나네 ㅋㅋ 2022. 4. 10.
[Flutter] 카드에 반투명한 이미지 만들기 1. 카드에 이미지를 뛰운다. 꽉 채워서 2. 해당 카드를 반 투명하게 만든다. 3. 중간에 텍스트를 뿌린다. Container( padding: const EdgeInsets.only(left: 8, right: 8), width: double.infinity, height: 250, child: Card( child: Image.network( 'https://storep-phinf.pstatic.net/linesoft_01/original_13.gif?type=pa50_50', fit: BoxFit.fill, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(15), ), ), ), Image쪽에 0.5 alpha, colo.. 2022. 4. 9.
[Flutter] ScrollView Scroll Glow 효과 없애기 class MyBehavior extends ScrollBehavior { @override Widget buildOverscrollIndicator( BuildContext context, Widget child, ScrollableDetails details) { return child; } } MaterialApp의 속성으로 scrollBehavior가 있는데 여기에 넣어주자. https://stackoverflow.com/a/51119796/17141266 2022. 4. 9.
[Flutter] BottomSheet 확장하기 showModalBottomSheet( isScrollControlled: true, context: context, builder: (BuildContext bc) { return Wrap( children: [...] ) } ) isScrollControlled가 중요하다. 해당 속성을 주지 않으면 마진이 먹지 않는 경우가 있음. 2022. 4. 8.
[Flutter] Navigator.push() in Dialog 예를 들어 버튼을 하나 가진 Dialog가 있을 때 OK버튼을 누르면 다른 화면으로 이동하도록 처리를 해야 한다. 이런 상황에서 보통 람다함수를 받을 수 있도록 Dialog를 설계하여 버튼을 누르는 상황에서 함수를 실행할 것이다. 비슷한 처리를 하던 다른 부분에서 왜 동작이 정상적으로 이루어 졌는지 확인을 해보니 Delayed 처리가 되어 있었다. Future.delayed(const Duration(milliseconds: 1500, ), () { Navigator.of(context, rootNavigator: true).pop('dialog'); ... 중략 Navigator.push(context, MaterialPageRoute(builder: (context) => const newScreen.. 2022. 4. 7.
[Flutter] TextFormField 정리 final GlobalKey _formKey = GlobalKey(); FormKey를 선언하여 사용 영역 widget에 Form을 감싸고 key 속성으로 추가를 해둔다. 이러한 처리를 하는 이유는 나중에 전체 텍스트 필드에 대하여 error가 있는지 판단하기 위함이다. formKey쪽에서 이를 인식해서 쉽게 이용할 수 있다. 입력할 때 커서 색상, HighLight 색상을 바꾸려면 MaterialApp의 테마에서 해당 속성을 처리하면 된다. textSelectionTheme: const TextSelectionThemeData( cursorColor: Color.fromARGB(255, 255, 0, 255), selectionColor: Color.fromARGB(255, 185, 185, 185),.. 2022. 4. 6.
[Flutter] 스크린 하단에 Widget 배치 찾아보면 Column 안에 넣어서 정렬을 해가지고 .. 밑에 배치를 시키는 그런 방법이 많이 나오는데 내가 발견한 쉬운 방법은 Expanded 위젯을 사용하는 방법이다. Column( children: [ const Expanded( child: Center(child: null), ), // 위젯 자리 const Padding(padding: EdgeInsets.only(bottom: 32),), ], ) Column의 children에 하나씩 배치를 하는데 가장 하단까지 margin을 주기에는 무리가 있다. (기기마다 스크린 크기가 달라서 하드코딩으로는 문제가 생길 것이다.) 방법을 찾아보니 Expanded를 이용하여 자리를 차지하도록 하고 맨 밑에 원하는 만큼의 Padding을 주는 방법이 있어서 .. 2022. 4. 3.