본문 바로가기

전체 글71

[Live-Study] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기 Overview JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 기선님이 주최하신 live-study 1주차입니다. 자바 개발자라고 떳떳히 말할 수 있을 기본기를 쌓아가는 과정입니다. JVM이란 무엇인가 이부분은 이전에 정리한 포스트로 대체하겠습니다. [Java] JVM이란? 컴파일 하는 방법 windows 기준으로 컴파일 하는 방법을 정리하겠습니다. 컴파일을 한다는 것은 .java파일을 .class 파일(바이트 코드)로 만드는 것을 의미합니다. JDK(Java Developer Kit) 자바 개발 도구를 설치하면 bin디렉토.. 2021. 1. 27.
[Java] VO(Value Object)란? 개발을 하다 자주 VO라는 개념을 들은적이 있습니다. 대략적으로 값 객체 패턴(Value object pattern) 즉, 객체를 값처럼 쓸 수 있고, 제약사항 중 하나는 객체의 인스턴스 변수가 생성자를 통해서 일단 설정된 후에는 결코 변하지 않음을 보장한다는 것입니다. 저도 위와 같이 얕게만 알고있었는데, 이번 기회를 통해 제대로 알아보려 합니다. 제가 봤던 재미난 글을 통해 포스팅을 작성하려합니다. VO(Value Object)? 만약 아래와 같은 질문을 받았다고 생각해봅시다. 사람의 나이를 나타내기 위해 어떠한 변수 타입을 사용해야 할까요? [] Integer [] Boolean [] String 어떠한 결정을 내릴건가요? "Boolean은 true, false니까.. 일단 아니고,, Integer.. 2021. 1. 26.
[Java] Code Convention 개발자라면 협업 시, 사용하는 언어의 코드 컨벤션을 지켜야 합니다. 이전까지는 느낌상 이렇게 하면 되겠다는 생각으로 개발을 했었는데, 굉장히 위험한 생각인 것 같아 정리하게 되었습니다. 이 포스트는 Google Java Style Guide 의 내용을 토대로 썼습니다. 1. 소개 Java 소스 파일은 아래의 규칙을 준수하는 경우에만 Google 스타일로 설명이 됩니다. Google에서는 어떤 코딩 스타일을 따르고 있는지 알아봅니다. 1.1 용어 참고 달리 명시되지 않는 한, 클래스라는 용어는 "일반"클래스, 열거 형 클래스, 인터페이스 또는 주석 유형(@interface)을 의미하기 위해 포괄적으로 사용됩니다. 클래스의 멤버라는 용어는 중첩 된 클래스, 필드, 메서드 또는 생성자를 의미하기 위해 포괄적으.. 2021. 1. 26.
[Java] JVM 이란? 자바 바이트코드(.class 파일)는 JRE(Java Runtime Enviromnment) 위에서 동작합니다. 이 JRE에서 가장 중요한 요소는 자바 바이트코드를 해석하고 실행하는 JVM(Java Virtual Machine)입니다. JRE는 자바 API와 JVM으로 구성되며, JVM의 역할은 자바 애플리케이션을 클래스 로더(Class Loader)를 통해 읽어 들여서 자바 API와 함께 실행하는 것입니다. 개발 관련 도구는 JDK에서 제공합니다. JVM에 들어가기 앞서 먼저 Java의 특징을 얘기하겠습니다. Java의 큰 특징은 아무 하드웨어(CPU)던, 아무 운영체제(OS)던 상관없이 컴파일 된 코드(바이트코드)가 플랫폼 독립적이라는 점입니다. 이러한 특징을 구현하기 위해 JVM이 필요합니다. 단순.. 2021. 1. 26.
[SpringBoot] Swagger를 통한 REST 요청에 전역 jwt 인증하기 안녕하세요, 이 포스트는 Jwt 설정, Swagger설정이 이미 완료된 서비스에서 활용할 수 있는 방법을 소개합니다. 문제점 그림과 같이 Swagger를 사용하면서 각 API마다 @ApiImplicitParam 을 통해 JWT를 받아왔었는데요, 서비스가 확대되고, jwt 토큰 인증이 필요한 API가 많아 질 수록 코드의 양과 가독성이 나빠 졌습니다. 또한 스웨거를 통한 테스트 진행시 각 API마다 jwt를 입력해야 한다는 번거로움 또한 있었습니다. 그림과 같이 Authentication을 받는 모든 곳에 jwt를 입력해야 했음. 해결 Swagger version 2.9.2부터 이렇게 번거로운 일을 쉽게 바뀔 수 있는 기술이 들어갔다고 합니다. 소개에 앞서 결과부터 확인 해보겠습니다. 원래는 없었던 Aut.. 2021. 1. 25.
[Swagger] Multi @ApiResponse에 동일 코드 사용시 나타나는 에러 안녕하세요. Swagger를 통해 Api문서를 정리하다 신기한 점을 발견하고, 이를 해결했던 방법에 대해 설명하려 합니다. 초기 코드 @ApiOperation(value = "게시글 저장") @ApiResponses(value = { @ApiResponse(code = 201, message = "저장 성공", response = PostSaveResponseDto.class), @ApiResponse(code = 400, message = "등록되지 않은 개인 미션", response = ErrorResponse.class), @ApiResponse(code = 400, message = "등록되지 않은 유저", response = ErrorResponse.class), @ApiResponse(code.. 2021. 1. 22.
[Jenkins] ExcuteShell 명령어에서 sudo를 사용하기 위한 설정 위 캡쳐와 같이, 젠킨스에서 빌드 진행 시 관리자 권한으로 실행이 필요한 경우가 있습니다. ex) sudo sh ../work.sh jenkins에 별다른 권한을 주지 않았다면 무조건 빌드 에러가 발생합니다. 그래서 권한을 주는 방법을 소개하려 합니다. 주의!!!! /etc/sudoers 파일이 잘못된다면 (path 설정 잘못, 띄어쓰기 잘못 등) sudo를 사용하지 못하게 됩니다. 관리자 권한 설정은 항상 주의해 주세요. 젠킨스에 권한주기 관리자 권한 설정 파일을 엽니다. $ sudo vim /etc/sudoers jenkins에 관리자 권한을 제공하기 위해 아래의 내용을 추가 한 후 저장합니다. jenkins ALL=(ALL) NOPASSWD: ALL 결론 이렇게 하면, 젠킨스에 모든 권한을 주는 거.. 2021. 1. 22.
우아한 테크코스 3기 프리코스 회고 우아한 테크코스 3기 프리코스를 경험하다 하다. 지원을 작년 10월, 우아한 테크코스 2기를 모집한다는 소식을 들었습니다. 이때 전 3학년 2학기 과정에 있었고, 1년 단위 졸업작품의 초기단계 진행 중에 있었습니다. 두마리의 토끼를 다 잡을 수 없다고 생각해, 눈물을 머금고, 지원을 포기했었습니다... 온라인 설명회 평소 우아한 Tech의 영상들을 보며 새로운 기술, 부족했던 지식들을 쌓았습니다. 또, 우아한 테크코스 2기 분들의 발표 영상을 보며 멋있다는 생각을 정말 많이 했습니다. 나도 누군가에게 발표를 할 실력을 가질 수 있을까... 나는 현재 어떤 개발자일까.. 고민이 깊어지던 중! 우아한 테크코스 3기 설명회를 한다는 소식을 듣고, 버선발로 달려갔습니다. 이날 제일 기억에 남는 것은 포비님의 말.. 2020. 12. 14.