분류 전체보기 (21) 썸네일형 리스트형 Flutter(dart) https SSL 인증서 오류 (proxy, self-signed 인증서) Flutter 또는 dart에서 https 통신 시에, 다음과 같은 인증서 오류가 발생하는 경우가 있습니다. E/flutter (22784): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: HandshakeException: Handshake error in client (OS Error: E/flutter (22784): CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:393)) E/flutter (22784): #0 _SecureFilterImpl._handshake (dart:io-patch/secure_socket_patch.dar:1.. JetBrains IDE Terminal에서 vi 명령 모드(escape) 이동이 안되는 경우 설정 방법 IntelliJ와 같은 IDE를 사용하면서, Terminal(Alt-F12 또는 Option-F12)을 자주 사용하게 됩니다. Terminal에서 vi를 직접 사용할 일은 많지 않지만, git commit 메시지를 작성할 때 명령 모드 이동을 위해 esc 키를 누리면 편집 창으로 이동하게 되는 경우가 있습니다. 즉, 명령 모드로 이동할 수 없게 되는 거죠. ^^; 이것 저것 알아보다가 알게 되었는데, 이는 “Switch Focus To Editor” 기능으로 esc 단축키가 할당되어 있기 때문입니다. 이 단축키를 해제하거나 다른 키로 변경하면 간단하게 해결할 수 있습니다. - “File -> Settings” 메뉴 선택 후, “Tool -> Terminal” 항목으로 이동합니다. - 옵션 항목 중 “Ov.. <gRPC 시작에서 운영까지> 예제 정리 예제에 대한 독자 문의가 있어서, 전체 예제 및 실행에 대하여 정리했다. github.com/switchover/grpc-up-and-running 원서의 예제와 저자가 제시한 소스 repository(github.com/grpc-up-and-running/samples)에는 약간의 차이가 있었다. 출간 이후 수정된 것으로 보인다. 그러나 번역서에도 표현했지만, 저서 상의 내용을 그대로 싣다 보니 원서 상에 일부 잘못된 부분이 있었다. 이에 대해서 정오와 함께 코드 및 실행 명령 전체를 다시 확인해서 문제가 되는 부분을 수정 제시했다. 아울러, 책에는 코드의 일부만 표현된 부분이 있어, 실제 실행해 볼 수 없는 부분도 전체 코드를 작성했다. 다시 한번 정리하면서 다시 공부할 수 있는 기회가 됐다. Wri.. Go 언어에서 프로세스 실행 타임아웃(timeout) 지정하기 Go 언어의 장점은 goroutine이라는 가벼운 thread를 기반으로 동적인 처리를 효율적으로 제공한다는 것이다. 그리고 채널 등을 통해 goroutine을 어렵지 않게 제어할 수 있지만, 별도로 프로세스를 실행하는 경우에는 통제가 어렵다. 실제 내부적으로 Maven이나 Gradle 빌드를 별도의 프로세스로 실행하는 경우에 해당 프로세스들이 중지되지 않는 경우들이 종종 발생한다. 이런 경우 내부적인 goroutine 관리만으로는 프로세스를 중지할 수 없다. 이런 경우에 친절하게도 Go에서는 타임아웃이 적용된 프로세스를 시작할 수 있고, 타임아웃이 된 경우에 실행했던 프로세스를 "kill -9"와 같은 명령으로 강제 종료시키는 것을 지원한다. 이를 공통 함수로 활용하면 어렵지 않게 타임아웃을 적용할 수.. Maven에서 phase vs. lifecycle vs. goal Maven을 사용할 때에 헷깔리는 용어가 바로 phase, lifecycle, goal인 것 같습니다. 그래서 정리해 봅니다. (phase들은 파란색, lifecycle들은 녹색, goal들은 노란색으로 구분해서 작성한다.) Phase phase는 최소 수행 단위다. 예를 들면 compile, test, package, clean, ... 등이 대표적인 phase이다. Lifecycle Lifecycle은 관련 있는 phase들의 순서가 있는 묶임으로 생각하면 된다. Maven에는 다음과 같은 3개의 lifecycle이 있다. default : 빌드를 수행하는데, 23개의 phases로 구성된다. (validate -> .. -> generage-sources -> .. -> compile -> .. -.. Functional interfaces in Java (standard functional interfaces) Java 8부터 함수형 프로그래밍(functional programming)을 지원한다. Java 함수형 프로그래밍의 가장 기초는 아무래도 함수형 인터페이스(functional interface)이다. JDK 내에 많은 기능들, 특히 collections과 관련된 기능들은 함수형 인터페이스를 기반으로 제공된다(eg: ```Iterable``` 인터페이스의 ```forEach(Consumer)``` 메서드 정의의 ```Consumer``` 파라미터). 람다 표현식도 이 함수형 인터페이스를 활용해 코드를 간결하고 효율적으로 표현할 수 있게 한다. 1. 함수형 인터페이스 우선 함수형 인터페이스 정의부터 알아보자. Java 8의 ```java.util.function``` 패키지에는 43개의 함수형 인터페이스가.. 오픈소스 라이브러리 Maven Central Repository에 배포하기 (#4) Maven Central Repository에 라이브러리를 배포하는 마지막 이야기는 CI(Continous Integration)에 적용하는 것이다. 참고로 기존 글들은 다음과 같은 주제로 다루었다. 오픈소스 라이브러리 Maven Central Repository에 배포하기 (#1) : Maven & Central Repository 개요 오픈소스 라이브러리 Maven Central Repository에 배포하기 (#2) : OSSRH(Open Source SW Repository Hosting) 소개 및 배포 준비 오픈소스 라이브러리 Maven Central Repository에 배포하기 (#3) : OSSRH를 통한 deploy 처리 우선, CI 적용 시에 고려사항과 이에 대한 해결 방법은 다음과 같.. IntelliJ IDEA에서 maven이 반영되지 않을 때... JetBrain의 All Product Pack을 몇 년 전부터 개인적으로 사용 중이다. 내돈내산으로 싼 subscription 가격은 아니지만, 만족하면서 사용 중이다. 특히, 라이선스 상 회사에서 사용해도 문제가 없다. 그런데, 회사에서 IntelliJ IDEA 사용 중, 언젠가 부터 maven 반영이 잘 되지 않는 현상이 있었다. 물론 proxy를 사용하는 환경으로 인한 문제인데, 이전에는 maven 설정(settings.xml) 상 proxy를 지정하면 아무 문제 없이 사용했다. 몇 번의 구글링과 시도를 통해, 해결 방법을 찾았다. ^^ Settings 설정 중에 "Maven -> Importing" 항목에 있는 "VM options for importer"와 "Maven -> Runner" 항목.. JSON to Go struct Go 언어에서 Json 파싱하기 위한 구조체(struct) 구성은 일반적으로 어렵지 않지만, JSON 구성에 따라 까다로운 경우가 있다. 이런 경우 다음 URL을 활용하면 쉽게 구조체로 변환해 준다. https://mholt.github.io/json-to-go/ JSON-to-Go: Convert JSON to Go instantly This tool instantly converts JSON into a Go type definition. Paste a JSON structure on the left and the equivalent Go type will be generated to the right, which you can paste into your program. The script has .. 오픈소스 라이브러리 Maven Central Repository에 배포하기 (#3) 첫 글을 통해 Maven Repository와 Central Repository에 대해 간단히 알아봤다. 2020/11/08 - [SW 아키텍처 이야기] - 오픈소스 라이브러리 Maven Central Repository에 배포하기 (#1) 두 번째 글에서는 OSSRH(Open Source SW Repository Hosting)을 통해 Maven Central Repository에 배포하기 위한 준비 과정을 살펴봤다. 2020/11/14 - [SW 아키텍처 이야기] - 오픈소스 라이브러리 Maven Central Repository에 배포하기 (#2) 이제 준비가 되었으니 본격적인 배포를 시작해 보자. 6. Distribution 설정 JIRA issue를 등록하고 사용하고자 하는 GroupId에 대하.. 이전 1 2 3 다음