JMX Beans 정보를 prometheus에서 보기 위해서 설정 중 오류입니다. github.com/prometheus/jmx_exporter prometheus/jmx_exporter A process for exposing JMX Beans via HTTP for Prometheus consumption - prometheus/jmx_exporter github.com config.yaml 생성 --- startDelaySeconds: 0 hostPort: 127.0.0.1:1234 username: password: jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:1234/jmxrmi ssl: false lowercaseOutputName: false lowe..
apple push notification service를 사용 중 문제가 발생했습니다. github.com/jchambers/pushy pushy 라는 오픈소스를 사용하고 있는데 갑자기 아래 코드에서 경과시간이 오래걸리더군요 final PushNotificationResponse response = sendNotificationFuture.get(); if (response.isAccepted()) { log.warn("Push notification accepted by APNs gateway."); } else { log.info("Notification rejected by the APNs gateway: {}", response.getRejectionReason()); if (response.g..
오래만에 더 이상 개발하지 않고 유지 관리 중인 Hystrix Dashboard를 실행하려다 아래와 같은 오류가 발생했습니다. ]$ ./gradlew jettyRun 오류: 기본 클래스 org.gradle.wrapper.GradleWrapperMain을(를) 찾거나 로드할 수 없습니다. gradle 프로젝트인데 gradle-wrapper.jar 파일이 보이지 않습니다. ]$ ls -al gradle/wrapper/ gradle-wrapper.properties 아래와 같이 gradle wrap 명령어를 실행합니다. gradle이 설치되어 있지 않으면 brew로 설치하세요 ]$ brew install gradle ]$ gradle wrap This version of the JMH Gradle plugin..
메시지를 받아서 전달해 주는 오픈소스로 RabbitMQ를 많이 사용한다. RabbitMQ 운용 중에 발생하는 상황에 대해서 정리해봅니다. 문제 Application에서 message publish할 때 아래와 같은 오류가 Application log에 남고 RabbitMQ와의 연결이 끊어집니다. 큐에 있던 consumer 들이 모두 제거되서 메시지를 처리하지 못하는 상황이 발생합니다. Caused by: java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) ~[?:1.8.0_73] RabbitMQ 로그에는 아래와 같은 로그가 남습니다. {writer,send_failed,{error,t..
요즘 AWS 강의를 들으면서 뭔가 목표를 세우고자 AWS 자격증에 대해서 알아봤습니다. AWS 자격증이 이렇게 많은지 몰랐네요 AWS Certification 상세보기 AWS Certification - AWS 클라우드 스킬 검증 - AWS 인증 받기 6개월의 기초 AWS 클라우드 및 업계 지식 aws.amazon.com 위 링크에 들어가면 아래와 같이 해당 자격증 별로 시험안내서 및 샘플 문항들이 있습니다. 예를 들면 AWS 공인 솔루션 아키텍트는 아래와 같은 능력 및 지식이 요구됩니다. 인증을 통해 검증되는 능력 AWS 기술을 기반으로 안전하고 강력한 애플리케이션을 설계 및 배포하는 방법에 대한 지식을 효과적으로 입증합니다. 고객 요구 사항을 기반으로 아키텍처 설계 원칙을 사용하여 솔루션을 정의 모범..
오늘 java8 default gc에 대해서 검색을 해도 공식 문서에서는 잘 검색이 안된다. stackoverflow에 default가 parallelGC라고 하는 글들이 있어서 직접 실행해보았다. 우선 sdkman으로 최신 java를 설치한다. sdk install java 8.0.232-zulu jps 명령어로 현재 자바 애플리케이션 pid를 구한다. 1. jcm 명령어로 확인 jcmd 11839 VM.flags | grep GC 아래와 같이 VM Flag를 확인한다. java 8 -XX:-BytecodeVerificationLocal -XX:-BytecodeVerificationRemote -XX:CICompilerCount=3 -XX:InitialHeapSize=134217728 -XX:+Mana..
hazelcast mancenter를 이용하면 아래와 같이 여러 상태 정보 등 다양한 기능을 제공합니다. 아래와 같이 Map Browser를 이용하면 key에 해당하는 value를 얻을 수 있습니다. 근데 String이 아닌 integer, long 타입인 경우 값을 얻을 수 없는데 console에서 제공하는 명령어도 같은 현상이 있습니다. https://stackoverflow.com/questions/33074937/why-i-cant-get-the-map-entry-in-hazelcast-mancenter-console Why I can't get the map entry in hazelcast mancenter console? I'm running simple java class with this..
hazelcast management center 3.12.1 을 실행하고 UI에서 초기 사용자 username, password를 등록했습니다. 크롬에서 로그인 하려고 하니 아래와 같이 Access denied! User has no roles!가 뜨네요 UI 상에서 사용자 등록 시에 Role 설정이 안되나해서 mc-conf.sh로 사용자를 만들었으나 동일한 현상입니다. ./mc-conf.sh create-user -n=admin -p=비밀번호 -r=admin 누가 호환성 이슈 아니냐고 issue를 제기했으나 처리가 안됐네요 저도 safari에서 하니까 됩니다. 우선 시간이 없으니 넘어갑니다.
스프링 문서 중에 Task Execution and Scheduling 을 이용하면 비동기 작업과 스케줄링 작업을 쉽게 구현할 수 있다. https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#scheduling Integration As a lightweight container, Spring is often considered an EJB replacement. We do believe that for many, if not most, applications and use cases, Spring, as a container, combined with its rich supporting function..
기본 프로젝트 다운로드 java 11 프로젝트여서 ./gradlew 수행 시에 sdkman 등으로 버전을 맞추고 빌드 명령 실행 git clone git@github.com:yepapa/spring-boot-boilerplate.git ./gradlew build Pivotal Web Service 가입 후에 조직 또는 프로젝트 생성한다. 추후에 수정할 수 있으니 알맞게 넣는다. https://console.run.pivotal.io/organizations/new Pivotal Web Services console.run.pivotal.io cf push에 사용할 manifest 정의 방법은 아래를 참고한다. 프로젝트에 이미 정의되어 있음. https://docs.pivotal.io/pivotalcf/..
maven만 사용했더니 gradle도 서서히 잊혀지네요...^^;; 아래와 같은 간단한 명령을 실행합니다. ./gradlew clean build lombok을 사용하는데 log 변수에 error: cannot find symbol ..... log.debug("service"); ^ symbol: variable log location: class UserService 3 errors FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Compilation failed; see the compiler error output for details. lombok 설정이 누락..
Java String에 대해서 면접 볼 때 이렇게 많은 질문을 할 수 있다니... 1. 자바에서 String은 무슨 인가? 데이터 타입인가?String은 int, long, double과 같은 primitive data type은 아니고 클래스 혹은 더 간단히 사용자 정의 타입이다.java.lang 패키지에 정의되어 있고 내부에 character array에 저장되어 있다.(java9부터는 compact string과 관련해서 byte array로 저장됨) 2. 자바에서 String은 왜 final로 선언되어 있나?String은 보안, 최적화, String pool 유지를 위해서 final로 선언되어 있다. public final class String implements java.io.Serializa..
String은 자바에서 가장 많이 사용하는 클래스 중 하나이다. String은 불변객체(immutable) 이고, StringBuffer는 가변객체(mutable)이다 이 말은 String 연산은 항상 새로운 객체를 생성하고 StringBuffer 그렇지 않다는 이야기이다. 요즘은 위와 같은 String + 연산은 자바 컴파일러가 StringBuilder 또는 StringBuffer로 대체한다.15.18.1. String Concatenation Operator +If only one operand expression is of type String, then string conversion (§5.1.11) is performed on the other operand to produce a string..
java에서 가장 많이 사용되는 클래스는 String 객체이다.JVM이 우리가 "Hello"라고 정의하는 String literal을 String Pool을 이용해서 효율적으로 메모리에 저장한다.우리가 문자열 변수를 만들면 JVM이 pool에서 찾고 있으면 해당 메모리 주소 참조를 반환하고 없으면 pool에 추가하고 그것의 참조를 반환한다. String은 불변객체이고 new 연산자를 이용하면 항상 객체를 생성한다. String literal로 만들면 String Pool을 이용할 수 있다.java6에서는 PermGen 영역에 있어서 런타임 시 늘릴 수 없고 가비지 컬렉터 대상이 아니었다.java7부터 Heap 메모리에 저장되어 OOME(OutOfMemoryError) 등의 위험이 감소하였다.java8까지..
기술 블로그 정리 naver 기술 블로그https://d2.naver.com/helloworld kakao 기술 블로그http://tech.kakao.com/ airbnbhttps://medium.com/airbnb-engineering netflix tech bloghttps://medium.com/netflix-techblog facebookhttps://code.facebook.com/posts/ amazon tech bloghttps://developer.amazon.com/blogs pivotal bloghttps://content.pivotal.io/blog NHN Entertainmenthttps://meetup.toast.com/?page=2 codecentric (spring boot a..
Bean Validation은 자바의 객체 검증을 위한 표준Version JSR Release Hibernate Validator Compatible Bean Validation 1.0 JSR 303 2009년, Jave EE6 hibernate-validator 4.3.1.Final Bean Validation 1.1 JSR 349 2013년, Jave EE7 hibernate-validator 5.1.1.Final Bean Validation 2.0 JSR 380 2017년 8월 Jave EE8 hibernate-validator 6.0.1.Final 2.0은 인증된 구현체로 hibernate-validator 6.0.1.Final 버전 이상이다.1.1과 2.0의 주요 변경사항은 다음과 같다.supp..
급하게 관리자 페이지를 작성해야 될 일이 생겨서 눈여겨 봐둔 vue-element-admin을 이용했습니다.10년 전쯤 javascript와 html, css를 이용해서 웹사이트를 작성해봤고 jquery등 유명한 라이브러리들을 사용해 본 정도의 실력이라요즘 트렌드에 맞는 웹 개발은 익숙치 않은 상태에서 관리자 페이지가 필요했습니다.react. vue, angular 등 간단히 tutorial 정도는 실행해봤으나 실제 프로젝트를 구성하려고 하면 쉽지 않은데 vue-element-admin은 이미 구조가 잡혀있어서 처음 접하는 사람이 공부하기 좋은 소스네요vue 기반이고 라우팅을 할 수 있게 해주는 vue-router, 상태 관리를 해주는 vuex, 다양한 UI 라이브러리를 제공하는 element io, m..
카카오에서 한 첫 개발자 회의 if에 다녀왔습니다.역시 카카오에서 한 개발자 컨퍼런스여서 기조연설부터 사람이 많았습니다. 카카오 인공지능 카카오 i를 적용한 카카오 미니 등 관련 제품 광고를 시작 전에 계속 보여주네요카카오 CTO(최고기술책임자) 신정환님의 기술 동향 및 제품 설명 후에 카카오 i(카카도 인공지능)에 대해서 설명을 들었습니다. 현대자동차와 함께 카카오i가 결합된 제네시스 광고영상을 보여줬는데 너무 또박또박 애기해서 아직 음성인식 수준이 이정도인가 의아해했네요SKT 누구도 그렇게 또박또박 애기 안해도 되는 것 같던데.... 아래는 1년 전 제네시스 G70에 적용된 카카오 i 입니다. 다음으로는 평택 소사벌 더샵에 적용된 카카오 i를 보여줬는데 그냥 말로 불 끄고 엘레베이터 부르는 동영상입니..
전 팀에서 애자일 방법으로 업무를 진행했던 경험을 적습니다. 약 1년간의 애자일 방법론을 접해보았네요 플래닝보통 1~4주 단위의 스프린트 사용하고 우리는 2주 단위의 스프린트로 업무를 진행함팀원 중 애자일에 익숙한 사람이 스크럼 마스터를 함.제품 책임자(Product Owner) 는 없이 진행함. 스토리포인트를 시간으로 정의하고 최대 2일(16시간)까지 할 수 있는 업무로 스토리를 만들어서 백로그에 저장함. 속도(Velocity)는 보통 60~70%로 잡았다.예를 들면 팀원 5명이 있고 2주단위 스프린트, 일 8시간이라면 하루에 40시간 * 10일(2주) = 400 포인트 * 60% = 240중간에 휴가가 있거나 다른 업무가 있는 경우 해당 시간을 제외한다. 속도는 스프린트를 진행하면서 알맞게 조절한다 ..
ribbon 설정을 위해 아래와 같이 https로 설정해줬습니다. store: ribbon: listOfServers: https://store.com 아래와 같은 오류가 나네요 Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake 아래와 같이 port를 붙여주니 정상적으로 동작합니다.store: ribbon: listOfServers: store.com:443 내부적인 로직은 보지 않아서 정확한 원인은 모르나 80포트로 인식하는 듯 합니다. ribbon 관련 문서를 보면 뒤에 포트가 붙어 있습니다. ribbon https 통신 오류 발생 시 위와 같은 상황인지 확인해 보세요 ^^