본문 바로가기

분류 전체보기86

[Kotlin] Java Scripting API (JSR-223) JSR-223 Kotlin은 Java scripting engine을 사용하기 위한 툴로 Java Scripting API를 지원한다. 원래 우리의 프로젝트에서는 Java scripting engine으로 Nashorn을 사용했었는데, 이게 jdk11부터 deprecated(관련 링크 - https://openjdk.java.net/jeps/335) 되면서 다른 대안이 필요해졌다. 그래서 서치하다 보니 Kotlin에서 제공하는 Java Scripting API(JSR-223)가 있었다. Kotlin 1.1 버전부터 지원한다. 우리는 이미 백엔드 서버 개발을 Kotlin으로 하고 있었기 때문에 큰 변경 없이 이를 사용할 수 있었다. 제공하는 기능은 Nashorn과 거의 유사하다. 사용자가 작성한 스크립트 .. 2019. 10. 19.
Error running '{ClassName}': Command line is too long. Shorten command line for {ClassName}. 해결; Shorten command line IntelliJ에서 테스트를 실행할 때 또는 개발한 애플리케이션을 실행할 때에도 이러한 에러가 발생하면서 실행되지 않는 경우가 있다. IntelliJ에서 바로 실행할 때에는 class path를 자동으로 잡게 하는데, 이 때문에 run command가 너무 길어져서 발생하는 문제이다. 정상적으로 실행되는 경우에도 알고 보면 아래처럼 어마 무시하게 run command가 길다. 이 run command에 길이가 OS limit를 넘으면 실행할 수 없게된다. 이를 해결하기 위해서는 Run/Debug Configuration에서 Shorten command line의 옵션을 수정한다. 4가지 옵션중 하나를 선택할 수 있다. None: 기본 옵션 값. IDE에서 긴 classpath를 줄여주지 않는다. comm.. 2019. 10. 16.
Docker Container Networking 간단 정리 공식문서: https://docs.docker.com/v17.09/engine/userguide/networking/ docker network ls 명령으로 구성된 network 종류 확인 가능 $ docker network ls NETWORK ID NAME DRIVER SCOPE 9802b1bb6468 bridge bridge local f78513044503 docker_dask_default bridge local 8eeeb223ac9f docker_gwbridge bridge local u6u3pgytc9qr hadoop-net overlay swarm 94e45591dbd0 host host local cuz7djbr1y1z ingress overlay swarm a214353d85c3 non.. 2019. 10. 15.
Kotlin에서 Util 함수 작성하기 - Top-Level Functions Java에서 Util 함수를 만들 때는 주로 Util class를 만들어서 사용하였다. 이런 Util 작성 패턴을 Kotlin에서 그대로 사용하면 아래와 같은 코드가 된다. // Don't object MapUtils{ fun Map2JsonString(map: mutableMap) : String{ return objectMapper.writeValueAsString(map) } } // Usage val map: MutableMap = mutableMapOf("K" to "V") MapUtils.Map2JsonString(map) // {"K":"V"} 하지만, Kotlin에서는 Top-Level Function을 대신 사용하는 것이 좋다. Java에서와 같이 추가로 Util class를 작성할 필요.. 2019. 10. 14.