본문 바로가기

소소한 팁

(6)
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..
Go 언어에서 프로세스 실행 타임아웃(timeout) 지정하기 Go 언어의 장점은 goroutine이라는 가벼운 thread를 기반으로 동적인 처리를 효율적으로 제공한다는 것이다. 그리고 채널 등을 통해 goroutine을 어렵지 않게 제어할 수 있지만, 별도로 프로세스를 실행하는 경우에는 통제가 어렵다. 실제 내부적으로 Maven이나 Gradle 빌드를 별도의 프로세스로 실행하는 경우에 해당 프로세스들이 중지되지 않는 경우들이 종종 발생한다. 이런 경우 내부적인 goroutine 관리만으로는 프로세스를 중지할 수 없다. 이런 경우에 친절하게도 Go에서는 타임아웃이 적용된 프로세스를 시작할 수 있고, 타임아웃이 된 경우에 실행했던 프로세스를 "kill -9"와 같은 명령으로 강제 종료시키는 것을 지원한다. 이를 공통 함수로 활용하면 어렵지 않게 타임아웃을 적용할 수..
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 ..
Generic Methods를 통해 Spring Bean을 casting 없이 처리하는 Utility 클래스 Generics를 사용하면 여러 개별적인 데이터 타입들을 아우르는 공통 기능을 손쉽게 만들 수 있다. 그 중에서 잘 사용되진 않지만 static 메소드에 파라미터의 타입을 통해 리턴 타입을 처리할 수 있는 generic method를 사용하면 객체가 아닌 메소드 수준에서 generics를 손쉽게 적용할 수 있다. 이를 활용하여 casting 없이 지정한 타입을 통해 바로 Spring Bean 객체를 얻어오는 유틸리티 클래스를 만들 수 있다. import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.Applicatio..