전체 글86 [Intellij] Error running 'Scala Console': Module is not specified 해결 Run Scala Console을 실행하였을 때 "Error running 'Scala Console': Module is not specified" 메세지가 나오면서 동작하지 않는 경우 Run Configuration에서 module specify 설정을 추가한다. 2019. 9. 4. Golang first-class function (일급함수) Go에서 함수는 일급함수로서 Go의 기본 타입과 같게 취급되며, 따라서 다른 함수의 파라미터로 전달하거나 다른 함수의 리턴값으로도 사용될 수 있다. func main() { // 정의된 함수를 파라미터에 전달 sum := func(i int, j int) int { return i + j } fmt.Println(calc(sum, 5, 10)) // 15 // 파라미터에 익명함수를 직접 정의 fmt.Println(calc(func(a int, b int) int { return a \- b }, 5, 10)) // -5 } func calc(f func(int, int) int, a int, b int) int { return f(a, b) } first-class citizens 일급/이급 객체의 개념.. 2019. 9. 3. Golang 함수 Go에서 함수는 func 키워드를 사용해서 정의한다. func 함수명(매개변수_이름 매개변수_자료형) 리턴값_자료형 {...} ()안에는 0개 이상의 매개변수의 이름과 타입이 들어가고, ()와 {}사이에 리턴값의 이름(생략 가능)과 타입을 작성한다. 그리고 {} 안에 함수의 로직을 구현한다. func main() { fmt.Println(sum(2, 3)) // 5 } func sum(a int, b int) int { return a + b } 위 코드는 int 타입 a와 int 타입 b를 입력받아 그 합을 구하는 sum 함수를 작성한 예시이다. 이 함수는 아래와 같이 리턴값에 이름을 붙여서 작성할 수도 있다. func sum(a int, b int) (r int) { r = a + b return r.. 2019. 9. 3. Multi-Thread 환경에서 Spring Bean의 Thread Safe 문제 해결 증상 Netty Server로 받아온 전문을 파싱하는 과정에서 시작점이 자꾸 바뀌어 정상적으로 파싱이 되지 않고 Exception이 발생한다. Single Thread로 설정하여 테스트하면 이러한 현상이 발생하지 않으며 Multi Thread 환경에서 테스트하면 함께 진행되는 다른 Thread의 값과 묘하게 연관 있게 바뀐다. 로그 nioEventLoopGroup7-7 & nioEventLoopGroup-7-8 [nioEventLoopGroup-7-7] Parse item key = MESSAGE_1, type=String, from=220, len=2, value=ne [nioEventLoopGroup-7-8] Parse item key = message_1, type=Long, from=0, len=.. 2019. 9. 2. [java] Thread 작업 완료 확인 - Future Future "Blocking 방식의 작업 완료 통보" Future 객체는 작업이 완료될 때까지 기다렸다가 최종 결과를 얻는 데 사용한다. 그래서 Future를 지연 완료(pending completion) 객체라고 한다. ExecutorService의 submit() 메소드는 파라미터로 받은 Runnable 또는 Callable 작업을 Thread Pool의 작업 큐에 저장하고 즉시 Future 객체를 리턴한다. 이후 Future의 get() 메소드를 호출하면 Thread가 그 작업을 완료할 때까지 기다렸다가(Blocking!) 작업을 완료하면 처리 결과를 리턴한다. Runnable Runnable task = new Runnable() { @override public void run() { // ... 2019. 9. 1. MSA(마이크로서비스 아키텍처)의 정의, 고려사항 MSA(마이크로서비스 아키텍처) In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimu.. 2019. 9. 1. REST 정의 및 특징, RESTful API REST REST(Representational State Transfer)는 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍처다. REST는 자원지향구조(ROA: Resource Oriented Architecture)로 웹 컨텐츠, DB의 내용 등 모든 정보를 하나의 자원으로 인식한다. 그리고 각 자원에 고유한 URI(Uniform Resource Identifier)를 부여함으로써 해당 자원에 대한 CRUD 작업을 HTTP 기본 명령어인 POST, GET, PUT, DELETE를 통해서 처리한다. HTTP method CRUD SQL POST Create INSERT GET Read SELECT PUT Update UPDATE DELETE Delete DELETE 1. 구성 Resourc.. 2019. 8. 31. Scala 논리 연산자 &와 &&, |와 ||의 차이 &&와 ||는 Short Circuit Evaluation을 사용한 논리 연산이다. Short-circuit evaluation은 논리 연산에서 첫 번째 인수만 보고 결과를 확실히 알 수 있을 때 두 번째 인수를 확인하지 않고 바로 결과를 결과를 반환한다. 즉, expr1 && expr2 연산에서 expr1의 값이 false인 경우 expr2는 실행되지 않는다. 마찬가지로 expr1 || expr2 연산에서 expr1의 값이 true인 경우 expr2는 실행되지 않는다. 반면 &와 |는 결괏값을 반환하기 전에 두 인수를 모두 검사한다. 2019. 8. 31. javaDoc에 샘플코드(xml 등) 작성하기 javaDoc에서 샘플코드를 작성할 때 아래처럼 바로 쓰면 문서상에서 보이지 않는다. /** * Transaction 처리를 위한 DataSourceTransactionManager를 지정한다. * transactionManager bean은 아래와 같이 정의해서 사용한다. * * * * @param transactionManager */ public void setTransactionManager(DataSourceTransactionManager transactionManager) { this.transactionManager = transactionManager; } 이때 와 @code 태그를 사용하면 해결된다. 샘플코드 자체는 @code 태그만으로도 작성이 가능하지만, 완성된 문서에서는 개행이 안.. 2019. 8. 31. [IntelliJ/Gradle] unmappable character for encoding MS949 해결 (UTF-8로 build task 실행) Command⌘ + Shift⇧ + A(Windows는 Ctrl+Shift+A)로 action/option 검색창을 열고 "Gradle Settings"를 검색 Gradle Settings 열기 Gradle VM Options에 -Dfile.encoding=UTF-8 추가 2019. 8. 30. VirtualBox에서 Spark Clustering 구성하기 - (3) Test Clustering! 2019/08/30 - [Dev/Spark] - VirtualBox에서 Spark Clustering 구성하기 - (1) Configuration guest OS Network VirtualBox에서 Spark Clustering 구성하기 - (1) Configuration guest OS Network 장비가 넉넉하지 못하여 VirtualBox에서 Spark Clustering을 구성하여 테스트를 진행하게 되었다. 다른 분들이 올려주신 예제들은 모두 큰 도움은 되었지만 딱 Spark 관련 설정들만 설명해주셔서 나처럼 deep-dive-dev.tistory.com 2019/08/30 - [Dev/Spark] - VirtualBox에서 Spark Clustering 구성하기 - (2) Install & p.. 2019. 8. 30. VirtualBox에서 Spark Clustering 구성하기 - (2) Install & port configuration 2019/08/30 - [Dev/Spark] - VirtualBox에서 Spark Clustering 구성하기 - (1) Configuration guest OS Network VirtualBox에서 Spark Clustering 구성하기 - (1) Configuration guest OS Network 장비가 넉넉하지 못하여 VirtualBox에서 Spark Clustering을 구성하여 테스트를 진행하게 되었다. 다른 분들이 올려주신 예제들은 모두 큰 도움은 되었지만 딱 Spark 관련 설정들만 설명해주셔서 나처럼 deep-dive-dev.tistory.com Install & port configuration Install anaconda3 wget https://repo.anaconda.com/a.. 2019. 8. 30. VirtualBox에서 Spark Clustering 구성하기 - (1) Configuration guest OS Network 장비가 넉넉하지 못하여 VirtualBox에서 Spark Clustering을 구성하여 테스트를 진행하게 되었다. 다른 분들이 올려주신 예제들은 모두 큰 도움은 되었지만 딱 Spark 관련 설정들만 설명해주셔서 나처럼 떠먹여 줘야 할 수 있는 사람들이 보고 따라하기엔 너무나도 힘든 여정들이었다. 그래서 VirtualBox 네트워크 설정부터 Livy로 remote에 구축된 spark clustering에 작업을 요청하는 것까지 총 3개의 글에 걸쳐 상세하게 다시 정리해보았다. 예시로 사용된 guest OS는 Ubuntu16.04며 이미 guest OS 생성은 완료되어 있다고 가정한다. 참고로 생성할 때 디스크와 메모리 용량을 낭낭하게 잡아두는 것을 추천한다. 아무 생각 없이 기본 설정대로 만들었다가 용량이.. 2019. 8. 30. Mac, Windows에서 Zeppelin 설치 및 설정 한동안 spark 개발 환경을 zeppelin을 이용해서 구성하려고 이런저런 삽질들을 많이 했었다. 결국 Windows 환경 지원도 제대로 안 되고(링크 참고), 업뎃도 요즘 안 되는듯하여 jupyter lab으로 갈아타게 되었다. 그래도 혹시나 zeppelin을 이용한 spark 분석 환경을 구성하는 분들에게 도움이 되고자 정리해보았다. 참고로 버전 충돌도 엄청 심해서 Zeppelin 0.8.0 version에서 Spark 2.2.3 version, Java 8 version의 조합으로만 정상적으로 동작한다. 이 사실을 알기까지 원인도 모를 에러로 며칠이나 고생을 했는지 모른다.😇 설치 방법은 Zeppelin Install Guide 공식문서를 참고하였다. Install in Mac Zeppelin 다.. 2019. 8. 30. openssl에서 unable to write 'random state' 에러 발생원인 및 해결법 $ openssl genrsa -aes256 -out rootca.key 2048 Generating RSA private key, 2048 bit long modulus .....................................+++ ......................+++ unable to write 'random state' e is 65537 (0x10001) openssl 사용 중 unable to write 'random state'라는 오류 메시지가 발생한다면 윈도우 명령창을 관리자 권한으로 실행한다. 윈도우 이외의 OS에서는 sudo 명령을 사용하면 된다. openssl는 인증서를 생성할 때 랜덤 값을 생성하는데 해당 파일을 생성하지 못해서 발생하.. 2019. 8. 30. Netty의 주요 특징 - 비동기, 이벤트 기반 Netty는 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크로써 유지보수를 고려한 고성능 프로토콜 서버와 클라이언트를 빠르게 개발할 수 있다. Netty 홈페이지에는 Netty를 위와 같이 정의한다. 나는 각 용어의 개념과 의미를 구분 짓는 것에 약하므로(ㅠㅠ) Netty를 이해하기 위해 몇몇 키워드들에 대해 정리해보았다. Keyword 1. 비동기 동기 vs 블로킹, 비동기 VS 논블로킹 비동기를 떠올리면 자연스럽게 동기, 블로킹, 논블로킹이라는 단어들도 함께 떠오른다. 대충 동기와 블로킹이 호출한 후 다른 일을 하지 못하고 대기한다는 점에서 비슷하고, 비동기와 논블로킹이 호출한 후 다른 일을 수행할 수 있다는 점에서 비슷한건 알지만 정확한 차이가 뭔지는 정확하게 설명하기 어렵다. 여기저기에서 긁어.. 2019. 8. 30. 이전 1 2 3 4 5 6 다음 more