반응형 직장이 아닌 직업을 가지자!748 springboot에서 main args를 사용하려면? 내가 하고 싶은 것은 아래와같이 argument에 날짜를 넣고 그것을 메인쪽에 있는 String[] args에서 받아서 처리하는 것이다. 디버깅을 해보면 args에 위에서 설정했던 값이 들어오는것 처럼 보인다. 그러나 현실은 에러!! 아래에 보면 public void run()쪽에서 예외가 나버린다. java.lang.reflect.InvocationTargetException 콘솔창에 찍힌 오류 내용 Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodA.. 2021. 7. 2. [Spark-Study] Day-3 스파크 예제를 위한 셋팅 spark 예제 돌려보기 sbt로 build를 하기 위해 필요한 것은 아래와 같다. 1. 소스 2. build.sbt sbt clean 한뒤에 sbt package를 해보자! spark-submit 해보기! /usr/local/Cellar/apache-spark/3.1.1/bin/spark-submit --class MnMcount target/scala-2.12/main-scala-chapter2_2.12-1.0.jar mnm_dataset.csv 인텔리J에 셋팅 해보기! 인텔리J에서 프로젝트를 Open 해보자! 아래와 같이 인텔리J에 프로젝트를 잘 가져왔다. 프로젝트 구조는 위와 같다. MnMcount 소스 // scalastyle:off println import org.apache.spark.sq.. 2021. 7. 1. curl 명령어 사용시 정보 없이 조회 하는 방법 아래와 같이 curl로 찔러보았다! curl -XGET ${TARGET_URL} >> ${ERROR_OUTPUT_FILE_PATH} 2>&1 JSON형태만 저장되길 바랬는데..아래와 같이 원하지 않는 정보가 함께 파일에 쌓였다. % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed ^M 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 보이지 않기 위해서는 아래와 같이 -s, --silent 옵션을 사용하면 된다. curl -s -XGET ${TARGET_URL} >> ${ERROR_OUTPUT_FILE_PATH} 2>&1 아래와 같이 깔끔하게 저장되.. 2021. 6. 28. es 버전이 낮으면.. 주저리 es버전..1.2.1 완전 오래된..버전을 사용하면.. 공용으로 사용하는 spark 2.4.5 / scala 2.12 / elastic lib 버전 문제로 온갖 삽질 다함... es 버전을 못올리는 상황이라면? 공용 spark쪽 사용 X es lib를 버전업 못한다면 자체 개발 -> springboot + springdata + elasticsearch로 개발 으악! 이것도 역시나 버전문제 발생.. 그래서 방향 다시 틀었다. REST api를 curl로 찔러서 파일로 다운. 이 파일을 자바에서 처리 하는걸로! 운영업무에 있어서 버전관리가 가장 큰 문제구나.. 2021. 6. 27. [Spark-Study] Day-2 예제 돌려보기 p31 The Spark UI 저번시간 스파크 셋팅 이후 cd /usr/local/Cellar/apache-spark/3.1.1/bin에 가서 spark-shell을 실행 시켜준다. spark-shell 아래와 같이 환영 해줌! ㅋㅋ To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). Spark context Web UI available at http://아이피나옴:4040 Spark context available as 'sc' (master = local[*], app id = local-1624457045234). Spark session available as 'spark'. Wel.. 2021. 6. 24. [error] SERVER ERROR: Service Unavailable url=블라블라 Error.. not found 에러! 15:54:42.639 [warn] :::::::::::::::::::::::::::::::::::::::::::::: 15:54:42.640 [warn] :: UNRESOLVED DEPENDENCIES :: 15:54:42.640 [warn] :::::::::::::::::::::::::::::::::::::::::::::: 15:54:42.640 [warn] :: net.databinder.dispatch#dispatch-core_2.12;0.11.2: not found 15:54:42.640 [warn] :: org.scalatest#scalatest_2.12;2.2.4: not found 15:54:42.640 [warn] :: org.apache.spark.. 2021. 6. 14. [Spark-Study] Day-1 스파크 셋팅 mac에 아파치 스파크 설치 - brew info apache-spark - brew install apache-spark 3.1.1 셋팅 완료! 스파크는 아래와 같이 다양하게 사용이 가능하다! Spark Job Spark Stages - Job -> stage 즉, 각 Job마다 Stage가 parallel 하게 또한 연속적인 형태로 붙을 수 있다. - 스터디 시 그림만 보고 Job은 parallel하게 되고 연속적인 Single Stage가 호출 되는줄 오해 했음. Spark Tasks 최종적으로 머릿속에 큰 그림이 그려지는가? Spark 아키텍처 콜? Transformations, Actions, and Lazy Evaluation 각각의 특징을 설명할 수 있는가? Transformations와 A.. 2021. 6. 14. 맥북 ESC 사라짐 현상 현상 : vi를 편집하는데..esc가 사라졌다 ㅋㅋㅋㅋ 해결 : sudo pkill TouchBarServer 명령어를 쳐주면 터치바가 재실행 된다고 한다. ESC가 다시 생겼다..ㅋㅋ 끝~ 2021. 6. 9. D2Coding으로 폰트수정 개발자라면 많이들 사용하는 zsh 아래의 사이트를 참고하여 셋팅 후! https://ooeunz.tistory.com/21 폰트를 수정해보자! 체인지하는 부분이 아니여서 찾아보다가 서체를 먼저 설치를 해야한다는것을 알았다 ㅋㅋ 서체 변경은 https://github.com/naver/d2codingfont/releases/tag/VER1.3.2 (2021.08.14 수정)에서 D2Coding-Ver1.3.2-20180524.zip파일이 있다. 다운로드 후 압축 해제를 한다! 압축 해제를 하면 아래와 같이 나오는데 D2Coding directory로 들어가서 떠블 클릭을 해준다! 무엇을? 아래의 ttc, ttf, ttf 파일들을~클릭해서 서체를 설치 해준다. 서체 설치 후 iTerm Preferences에.. 2021. 5. 17. elk www.elastic.co/kr/what-is/elk-stack ELK Stack: Elasticsearch, Logstash, Kibana ELK Stack이란 무엇인가요? ELK Stack은 널리 알려진 세 개의 오픈 소스 프로젝트인 E=Elasticsearch(Lucene 기반), L=Logstash, K=Kibana의 머리글자를 합친 것입니다. Beats가 추가되어 이제 ELK Stack을 Elastic Stack이 www.elastic.co 간만에 elk 셋팅을 해보려고 하는데 귀여운 이미지에 흥미가 더 생겼다 ㅋㅋ 이제는 거의 필수적으로 사용되는 ELK logstash 등 수집부분은 fluentd 같은 녀석을 많이 사용한다. EFK인가 그럼? ㅋㅋ Elasticsearch - 검색엔진 Logs.. 2021. 4. 30. go cd go cd란? 오픈소스이다! 그리고 Continuous Integration and Continuous Delivery system이다. gocd는 gocd 서버와 gocd agent로 이루어져있다. 셋팅 시 자바기반이라 jdk가 필요하다. 그리고나서 go-server와 go-agent를 셋팅하면 된다. 셋팅 예제(CentOS기반) 1) 자바 설치 sudo yum install -y java-1.8.0-openjdk-devel.x86_64 # 자바 기반이라 자바 설치 2) go-server 설치 sudo yum install -y go-server # go-server 설치 sudo /etc/init.d/go-server start # goCD server start 3) go-agent 설치 sudo .. 2021. 4. 11. Producer-Consumer 패턴 더보기 Runnable과 Callable의 차이점은? acet.pe.kr/819 > 상황 성능이 좋지 않은 부분이 발생하여 그 부분을 해소하기 위해 멀티 쓰레드로 처리하려고 했다. 그런데 멀티 쓰레드 처리 후 나오는 리스트형 데이터가 재사용 되어지는 문제가 발생. > 결론 생산자-소비자 패턴을 사용하기로 함. 생상자 - 멀티쓰레드 처리 및 리스트형 데이터를 블라킹 큐에 넣어줌. 넣기만 함! 소비자 - BlockingQueue에 넣어진 것들을 사용함. 사용만 함! > 간단한 프로젝트 만들어서 테스트 함. @SpringBootTest class DemoApplicationTests { @Test void producerAndConsumerMethodTest() { BlockingQueue q = new Li.. 2021. 3. 18. Runnable과 Callable의 차이는? Runnable과 Callable의 차이는? - Runnable : 객체와 Exception을 발생 시키지 않음. - Callable : 특정 타입의 객체와 Exception을 발생 시킴. ㅇㅋ! 2021. 3. 18. WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '어쩌구@example.com/id_rsa' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "어쩌구@example.com/id_rsa": bad permissions ubuntu@example.co.. 2021. 3. 12. Docker 리서치 도커 등장 배경 docker 관련 문서 : https://github.com/remotty/documents.docker.co.kr 서버를 관리한다는 것 복잡하고 어려운 서버관리 시간이 흐르면서 서버환경이 종종 바뀌거나 오픈소스가 바뀌거나 하는 걸 볼수 있습니다. CentOS -> Ubuntu Chef -> Ansible -> 또 다른 오픈소스 DevOps의 등장으로 짧은 개발주기와 잦은 배포 마이크로서비스 아키텍처의 유행 -> 프로그램은 더 잘게 쪼개어져 관리는 더욱 복잡해짐. 새로운 툴은 계속 나오고 클라우드의 발전으로 설치해야 할 서버가 수백, 수천대에 이르는 상황(?) 이런 노답인 상황에서 Docker가 등장하고 서버관리 방식이 완전히 바뀌게 됩니다. 도커의 역사 도커는 2013년 3월 산타클라라.. 2021. 2. 3. 마이크로서비스 아키텍처(Microservice Architecture) 마이크로 서비스 아키텍처 큰 문제를 상대적으로 작게 분해해 해결 이렇게 작게 나눈 각 서비스가 독립적으로 역할을 수행 한가지만, 아주 잘 처리하자. 라는 것이 마이크로 서비스 아키텍처의 기본 철학이다. 단일 책임 원칙(SRP)를 중시(Single Responsibility Principle) 비즈니스 태스크를 작은 태스크로 나누며, 각 태스크마다 마이크로 서비스를 정의 한다. 비즈니스 요구사항과 태스크를 얼마나 잘 나눴는지에 따라 시스템에 두개 혹은 100개의 마이크로 서비스가 존재 마이크로 서비스 아키텍처 특징 시스템을 둘 이상의 실행 단위 또는 컴포넌트로 구성한다. 각 컴포넌트는 기능을 서비스 형태로 표출, 결합도가 낮으며 비즈니스 목적에 맞게 동작한다. 각 컴포넌트는 메시징 큐, HTTP 요청/응답.. 2021. 2. 3. SpringBoot 구조 - Monolith / Micro k8s 도입 전 클라우드 네이티브 개발에 대해서 알게 되었다. cloud native development? 왜 클라우드 네이티브 개발인가? 클라우드의 이점을 완전하게 활용하려면 애플리케이션에 대한 새로운 접근 방식이 필요하며, 컨테이너를 사용한 패키징, 현대화된 아키텍처 수용, 애자일 기술 활용이 이에 해당 합니다. 클라우드 네이티브 방식은 개발 가속화, 제공 가속화, 변화하는 요구에 대한 적응을 가속화할 수 있는 최적의 방법입니다. 클라우드 네이티브 개발은 바로 DevOps입니다. 이는 컨테이너, 마이크로서비스, 그리고 하이브리드 클라우드입니다. 애플리케이션 서비스를 더욱 신속하게 구축하기 위해 중요한 사항을 수용하도록 관점을 바꾸는 것이 매우 중요합니다. 우선적으로 마이크로서비스에 대해서 알아보도록.. 2021. 1. 4. AtomicInteger&LongAdder&Thread-Safe 자바에서 Thread-Safe 즉, 데이터에 대해 동시 접근을 제어하기 위해 Lock( 2020/11/24 - [Language/Java] - Java thread에서의 Lock의 종류?) 을 사용한다. 그런데 이 데이터가 그냥 값을 읽거나 업데이트 정도의 기능일 경우에는 Lock보다는 원자성(Atomic) 변수가 더 성능도 좋고 효율적이다. 아래는 Thread-Safe 이야기 하다가 나옴 ㅋㅋ 오늘 포스팅은 AtomicInteger와 LongAdder에 대해 알아보고자 한다. LongAdder의 경우 실제 서비스에서 사용하고 있다. 위의 사진에서 보면 여러가지 정보가 있는데 하나씩 살펴보면..! int a = 0; thread-1 thread-2 a+=1 a+=1 의 경우 CPU에 의해 처리가 되는데 .. 2020. 12. 1. Java thread에서의 Lock의 종류? 자바에서 2개의 Lock이 있는데 첫번째는 자바에서 thread간 동기화를 위해 synchronized 키워드를 사용하는것을 사용 합니다. 이런 synchronized 키워드를 사용하는 lock을 Intrinsic Lock 또는 Built-in Lock이라고 한다. // Mutual Exclusion public synchroized void intrinsicLockfunc(){ ... } // Wait synchronized(this){ ... this.wait(); ... } // signal synchronized(this){ ... this.notify(); ... } 두번째는 Java 1.5에서 java.util.concurrent.locks 패키지를 통해 제공되는 Explicit Lock이 있.. 2020. 11. 24. Jackson Annotation Examples @JsonInclude 어노테이션 속성을 제외 하는데 사용. ex) JSONObject _connects가 null인 경우에 제외! @JsonInclude(JsonInclude.Include.NON_NULL) private JSONObject _connects; @JsonIgnoreProperties 클래스 레벨의 어노테이션이고 무시할 속성을 표시 @JsonIgnoreProperties({ "id" }) public class BeanWithIgnore { public int id; public String name; } id는 무시되는걸 알수 있다. @Test public void whenSerializingUsingJsonIgnoreProperties_thenCorrect() throws JsonPr.. 2020. 11. 17. @Retryable 특정 Exception이 발생하면 일정 횟수만큼 재시도 할 수 있는 어노테이션이다. @EnableRetry 작성.(configuration 등) 재시도 하고 싶은 메소드에 @Retryable 작성. include : 특정 Exception이 발생할 때 retry exclude : 설정 된 Exception 재시도 제외 maxAttempts : 최대 재시도 횟수(default 3회) backoff : 재시도 pause 시간 ex) FailedStoreException 발생 시 최대 5번 시도! delay 10 @Retryable(value = { FailedStoreException.class }, maxAttempts = 5, backoff = @Backoff(delay = 10)) 참고 // // So.. 2020. 11. 17. 이전 1 ··· 7 8 9 10 11 12 13 ··· 36 다음 반응형