What I have to do. Good morning, Good evening, Good night.

BackendQuiz

면접 대비 10가지 질문 (1 ~ 10) 수정버전 1) JVM 에 대해서 설명해줄 수 있는가? 수정답변 : JVM은 클래스 로더, 가비지 컬렉터, 실행 엔진으로 구성되어 있으며 Runtime Data Areas의 메모리과 함께하며 java 프로그램을 구동합니다. JVM 관련 프로그래밍을 해본 적은 없지만 자바 성능 테스트를 위해 잠깐 써봤던 Scouter 프로그램에서 힙 메모리 사용량이나 CPU사용량등을 보며 구조에 대해 간단히 학습했던 경험이 있습니다. 먼저 JRE는 Java API와 JVM으로 구성되어 있으며 JVM은 Java Virtual Machine으로 Java byte code를 실행하는 주체이다.

Bastion

Bastion 적용기 AWS VPC AWS의 VPC(Virtual Private Cloud) 서비스는 가상의 네트워크 환경을 구성케하는 서비스이다. 이 서비스를 통해 Private Network와. public Network 환경을 디자인 할 수 있다. Instance를 생성할 때 Security group로만 접근을 제어하는 방안을 사용하곤 했는데, 실 서비스를 운영하면서 네트워크 접근의 보안을 위해 bastion 구성을 도입했고 일부분 구축한 경험을 정리해보고자 한다. Bastion (번역 - 요새)서비스는 bastion host를 통해 다른 VM에 ssh로 연결하게 하는 보안 방법이기 때문에 public subnet에 위치해야하고 방화벽 및 보안 정책을 적용시켜야한다.

ssl파일 만료일자 모니터링

SSL 만료 확인 Let’s encrypt를 쓰면 자동 연장이 되지만 3개월마다 갱신이 되는 것에 대한 불안감과 1년 내로 사라질 서버들이기에… 간단히 ssl 인증이 만료되는 것을 방지하기위해 간단히 shell script를 만들어서 crontab에 등록해놓았다. 스크립트는 아주 간단한데 먼저 ssl 위치를 확인하고 인증 만료 시간을 확인한다. $ openssl x509 -in /etc/httpd/conf/ssl/인증서.crt 오늘 날짜를 가지고와서 notAfter 타임과 비교하여 차이를 구한다. 조건 일자 이상인 경우 알림을 알린다. (필자의 경우 curl을 통해 post콜을 하였다.

리눅스 커맨드 v2

crontab 현재 실행중인 crontab list # crontab -l Crontab 편집 # crontab -e 다음과 같이 입력하면 vi처럼 편집할 수 있는 화면이 생긴다. 여기서 필요한 job들을 추가한 후 :wq로 저장하면 자동으로 crontab 에 job이 추가된다. job설정 주기 결정 * * * * * (분) (시간) (일) (월) (요일) 분, 시간, 일 ,월, 요일 순이며 요일의 경우 0과 7이 일요일이며 1부터 월요일, 6이 토요일이다. 주기 예제 * * * * * 매분 실행 0 0 * * * 매일 자정 실행 0,30 * * 1-5 월요일부터 금요일까지 매시간 0분, 30분마다 실행 */10 * * * * 매 10분 마다 실행 */10 22,23 5-10 * * 5일에서 10일까지 22시, 23시 매 10분마다 실행 job example * * * * * /root/test/test.

리눅스 커맨드 v1

요 근래 회사에서 주로 진행한 업무는 check_mk 모니터링 및 SSL 만료확인용 shell script 를 만드는 것이었다. 리눅스 사용시 몇 개의 익숙한 명령문만 사용하였지만, 이번에 사용한 여러 명령문을 정리해보려고 한다. 리눅스 커널 확인 getconf getcong utility shall write to the standard output the value of the variable spcified by the system_var operand 즉 시스템 환경변수를 확인할 수 있는 명령문이다. -v [path_var, pathname, system_var] 아마도 구성된 변수를 결정하는 specific한 사양이나 버전을 표시하는 것 같다.

EffectiveJava_Item_2

Effective Java 3/e Chapter 2. Item 2. 생성자 매개변수가 많다면 빌드를 고려하라 점층적 생성자 패턴 (telescoping constructor pattern) 필수 매개변수 생성자 + 선택 매개변수의 갯수에 맞는 생성자를 늘려가는 방식 매개변수가 많아지면 클라이언트 코드를 작성하거나 읽기 어렵다. public class NutritionFacts { priavte fianl int test1; priavte fianl int test2; priavte fianl int test3; priavte fianl int test4; public NutritionFacts(int test1, int test2){ this(test1,test2,0); } public NutritionFacts(int test1, int test2, int test3){ this(test1, test2, test3, 0); } .

EffectiveJava_Item_5

Effective Java 3/e Chapter 2. Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 인스턴스를 생성할 때 생성자에게 필요한 자원을 넘겨주는 방식 불변을 보장하여 여러 클라이언트가 공유하여 사용 가능 의존 객체 주입은 생성자, 정적 팩터리, 빌더 모두 응용 가능 생성자에 자원 팩터리를 넘겨주는 방식 팩터리 메서드 패턴 (Factory Method pattern 구현) Java8 Supplier Mosaic.java import java.util.function.Supplier; import java.util.stream.IntStream; @Slf4j public class Mosaic { private final Tile tile; private Mosaic(Tile tile) { this.

Effective JAVA 정리 chapter / item 1

Effective Java 3/e Chapter 2. Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 장점 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환된 객체의 특성을 제대로 설명하지 못한다. 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 표시할 수 있다. BinInteger(int , int , Random) vs BigInteger.probablePrime( int, Random) 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. 불변 클래스는 인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성을 피할 수 있다.

Who am I

Want, Will be a programmer. Time is not on my side. go hard, go ambitious. Lights wiil guide you home. I will try to fix you. Seoul / male / ecycle.hello@gmail.com

Init

시작했다. 2주동안 테마고르고 지우고 고르고 지우고 반영안돼서 지우고 하다가 간단히 쓰려고 이렇게 만들었다. 앞으로 주 2회 업로드를 목표로 블로그를 시작한다. 첫 단추를 잘 꿰었길.

## Spring Rest Docs ### 도입 ```text Spring REST Docs makes use of snippets produced by tests written with Spring MVC’s test framework, Spring WebFlux’s WebTestClient or REST Assured 3. This test-driven approach helps to guarantee the accuracy of your service’s documentation. If a snippet is incorrect the test that produces it will fail. ``` > 테스트 지향적인 접근 방법은 서비스 Document의 정확성을 보장하는데 도움을 준다. Spring MVC test를 통한 정보를 통해서 문서 조각(snippet)을 모아셔 api document를 만드는 툴 Asciidoctor 를 사용하여 HTML을 생성.