본문 바로가기

전체 글

(39)
스타트업에서 대기업 계열서로 이직 후기(feat.F-lab) 개발자로써의 인생을 처음 시작했던 스타트업에서 이직을 결심하고 약 1년동안 이직을 준비하면서 가장 힘들었던 것을 뽑는다면 피드백이 없다는 것이었습니다. 면접을 여러 번 경험해 보신분들은 알겠지만 면접을 보면서 볼 수록 궁금한 것이 내가 왜 붙은거지? 내가 왜 떨어진 거지? 라는 의문이라고 생각합니다. 경력 기술서나 포토폴리오와 같은 이력서도 중요하지만 처음에 고생하여 틀만 잘 갖춰지면 서류를 합격하는 것에 대해서는 큰 어려움은 없을 것이라고 생각합니다.(2021년을 기준으로 개발자 품귀 현상으로 인한 이유도 있다고 생각합니다.) 하지만 아무리 서류가 합격하더라도(코딩 테스트가 합격하더라도) 결국 면접에서 합격하지 못하면 좌절을 맞이할 수 밖에 없었습니다. 또한 그러한 좌절은 영문도 모른채 몇 일간 머리 ..
자바의 신(1, 2권) 📚 자바의 신 기본 타입은 8 개다 (정수 5개, 실수 2개, 불리언 1개) 변수는 네가지 (지역, 매개, 인스턴스, 클래스) VO 는 데이터를 담아 두기 위한 목적 DTO 는 데이터를 다른 서버로 전달하기 위한 목적 (DTO 가 VO 를 포함) 클래스에 static 변수를 사용하면 클래스 변수로 선언되기 때문에 모든 인스턴스가 같은 값을 바라보게 된다. static 블럭은 객체가 생성되기 전에 한 번만 호출되고, 그 이후에는 호출하려고 해도 호출 할 수가 없다. 그리고, 클래스 내에 선언되어 있어야 하며, 메소드 내에서는 선언할 수 없다. 즉, 인스턴스 변수나 클래스 변수와 같이 어떤 메서드나 생성자에 속해 있으면 안 된다. static 블럭은 여러 개의 객체가 생성되도 처음 객체를 생성할 때 한번만 ..
[GIT] Git pull 전략 (default, --ff -only, --rebase) git pull 을 별도 옵션 없이 하게되면 다음과 같은 warning 이 발생하는 것을 볼 수 있습니다. warning: Pulling without specifying how to reconcile divergent branches is discouraged. You can squelch this message by running one of the following commands sometime before your next pull: git config pull.rebase false # merge (the default strategy) git config pull.rebase true # rebase git config pull.ff only # fast-forward only You can..
[Travis CI] yml 및 secret 파일 암호화하는 방법 Travis CI 사용 시 암호화된 yml 파일로 빌드하기 Travis CI 를 Github 를 이용하여 구성할 때 중요한 것이 중요한 정보가 된 yml 파일을 올리는 것입니다. DB Connection 정보나, AWS Secrect key, Access Key 등 암호 정보가 포함된 파일이 노출된다면 큰 문제가 발생할 수 있기 때문입니다. 하지만, CI 를 구성하기 위해선 이런 정보가 없다면 Build 가 실패하게 됩니다. 이러한 CI 를 구성하기 위해 Travis 에서 제공하는 파일 암호화를 이용하여 구성하는 방법을 알아보겠습니다. Travis CI CLC 구성 우선 Travis CI 의 CLC(Command Line Client) 를 이용하기 위해 아래 커맨드를 입력하여 설치합니다. (Mac OS ..
[Spring] HandlerMethodArgumentResolver 사용하여 Custom Annotation 구현 및 테스트하기 HandlerMethodArgumentResolver 를 이용하여 Custom Annotion 을 만들어 User 정보를 쉽게 가져오기 회원을 관리하는 API 를 만들게 되면 꼭 필요로 하게 되는 것이 HandlerInterceptorAdapter 를 이용하여 HttpServletRequest 에 정보를 저장하여 사용자 정보 필요로 하는 Controller 에서 꺼내여 사용하는 방식입니다. 만약, HttpServletRequest 을 사용하지 않고 static 변수나 공유 가능한 변수 형태로 사용하게 된다면 Thread safe 하지 않기 때문에 Multi-thread 환경에서는 다른 사용자의 정보를 노출하게 되는 위험한 상황을 만들 수 있습니다. 하지만, 매번 API 에서 HttpServletReque..
[Spring] Optional 의 3가지 생성 방법 Java 를 기반으로 개발을 진행하다보면 NullPointException 을 자주 만나게 됩니다. 주로 Runtime 에 발생하기 때문에 찾기도 쉽지가 않고 이러한 예외를 미리 방지하기 위해서는 복잡한 방어로직이 필요하게 됩니다 . 이러한 문제를 해결하기 위해 Java 8 에서 나온 것이 Optional 입니다. Optional 인스턴스는 다음과 같은 특징을 가지고 있습니다. 불변 인스턴스 입니다. hashCode, equals, toString 메서드는 인스턴스 상태에 따라 달라집니다. Optional 의 3가지 정적 팩토리 Optional 의 객체 생성 메서드는 3가지의 정적 팩토리 메서드가 존재합니다. 특정 객체가 Optional 객체 생성이 필요할 때 다음과 같이 3가지 방법으로 감싸 생성할 수..
[Spring] Meta Annotation 이란?(@Target, @Retention) Spring 에서는 Anntotation 사용에 대한 기능을 상당히 많이 제공하고 있습니다. 주로 사용하는 @Controller, @Service, @Repostiroy 등 많은 Annotation 이 존재합니다. 해당 Annotion 은 각 기능에 필요한 만큼 많은 기능을 내포하고 있으며, 이러한 내용을 잘 알지 못해도 필요한 기능만 쉽게 사용할 수 있도록 제공되어지고 있습니다. 하지만, 이러한 Annotion 에 대해 불필요한 내용이 포함되거나 필요한 내용이 있는 경우 Cusotom 을 할 경우가 존재합니다. 그 중 로깅 등 AOP 설정할 때 주로 사용되는 @Target 과 @Retention 에 대해 알아보도록 하겠습니다. meta-annotaiton ? meta-annotation 은 다른 ann..
[MYSQL] Replication 이란? 주문이 이뤄지고,결제가 이뤄지는 서비스를 운용하면서 가장 중요한 것이 가맹점이 볼 수 있는 시각화된 데이터입니다. 이러한 통계 데이터를 실제 운용되는 Source DB 에서 바로 가져오는 것은 상당한 무리가 갈 수 있습니다. 특히, 한 테이블에서 바로 가져오는 것이 아니라 여러 테이블을 조인하여 조합 후 가져오는 형태라면 더더욱 부하가 발생합니다. 이러한 문제를 해결하기 위한 방법 중 하나가 바로 Replication 입니다. Mysql 공홈에서는 Replication 에 대해서 다음과 같이 설명하고 있습니다. Replication enables data from one MySQL database server (known as a source) to be copied to one or more MySQL..