1. 간단 자기소개안녕하세요. 2년차 웹 개발자이자 java/spring 진영의 백엔드를 주력으로 하고 있는 김까따 입니다.현재 블록체인 쪽 node 기반의 풀스택 개발을 하고 있습니다. 2. 이번 챕터를 시작하며 꼭 해내고 싶었던 목표이번 챕터는 1주차엔 TDD 기반의 프로젝트였고 2주차엔 TDD + Clean Layed 아키텍처를 적용한 프로젝트 였습니다.TDD 기반의 red - green - refactoring 사이클의 개발과 클린 아키텍처를 적용하는 프로젝트를 2주간 진행하면서 익숙하지 않았던 개발 방법론을 적용하고 익숙해 져서 다음 프로젝트도 무사히 배운것들을 적용해 나가 항해를 완주하는 것이 목표였습니다. 3. 이번 챕터를 마무리하며 가장 기억에 남는 성취요구사항이 주어지면 먼저 분석하..
전체 글
은탄이 아닌 레포지토리1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)동시성 제어에 대한 여러가지 접근 방식TDD 개발방법론의 RED-GREEN-REFACTORING 방식으로 구현하기2. 시도처음엔 단순한 Syncronized 를 이용하여 동시성을 보장 하려고 했었음단위테스트 - 통합테스트 - 컨트롤러테스트 - e2e 테스트를 순차적으로 작성하며 기능구현을 함3. 해결Syncronized 를 사용시 메서드 자체에 Blocking 이 걸려 다른 스레드도 필요없는 대기를 하는 상황이 발생하였음.공유자원 의 대상을 메서드가 아닌 Domain 계층의 엔티티로 전환 하기위해 ConcurrentHashMap 과 ReentrantLock 을 이용하여 해결하였음4. 알게된 것상황 및 환경별 적절한 자료구조와 라이브러리를 이..
항해 플러스에 합류한 계기저는 현재 곧 만으로 2년 경력이 머지 않은 평범한 개발자 입니다.처음엔 한 지방에 있는 단순 솔루션 커스터마이징 회사에 잠깐 재직했다가 단순 코드한줄 없이 화면만 찍어내는 저를 보고 향후 미래가 걱정되어 무작정 서울로 뛰쳐 나오게 되었습니다.서울의 한 블록체인 서비스 회사에 취직하여 거래소 백엔드 개발자로서 신규기능 개발 및 유지보수 작업을 했었고 코인 사업이 시들해짐에 따라 경영악화의 이유로 1차 구조조정 대상이 되어 퇴사하게 되었습니다. 그리고 다시 본가로 내려가게 되었습니다.긴 공백기를 두고 본가와 가까운 한 블록체인 서비스 회사에 다시 합류하여 이번엔 노드진영의 풀스택 개발자로 재직중입니다.그러던중 이대로 시간만 지나면 경력이 채워지는 것에 대해 의구심을 가지게 되었고 ..
이전에 한 입 크기로 잘라먹는 리액트 강의 쿠폰을 받아 샀었다가 볼 일이 있겠거니 하고 묻어뒀던 강의 .. 최근에 이직을 하고 프론트까지 개발해야 하다보니 허겁지겁 인프런 강의를 꺼내봤다. 스프링 백엔드 개발자로서 프론트는 완전 처음이라 갈피를 못 잡았었는데 이정환님의 한입크기 강의가 굉장히 도움이 됐었다. 이번에 Next.js 로 프로젝트를 진행해야 하는 상황이 왔는데 마침 정환님께서 또 강의를 출시 예정이라고 한다..!! https://www.winterlood.com/post/%EC%82%AC%EC%A0%84%20%EB%93%B1%EB%A1%9D%20%EC%9D%B4%EB%B2%A4%ED%8A%B8%20-%20%ED%95%9C%20%EC%9E%85%20%ED%81%AC%EA%B8%B0%EB%A1%9..
https://www.acmicpc.net/problem/21318 문제 풀이package programmers;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import static java.util.Arrays.stream;public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static void main(String[] args) throws IOException { int n = Integer.parseInt(br.read..
1. 문제상황 Spring 백단에서 프로퍼티별 개발환경을 나누고 로컬에선 H2db, 개발서버에선 aws rds mysql 8.0 을 사용하도록 datasource를 연결하였다. 그리고 h2db쪽에서는 쿼리가 잘 날라가는 걸 확인. 테스트 완료후 ec2에 배포하고 개발서버에서 실행했는데 table이 없다고 나옴. 2. 시도한 방법들 - JPA Naming Strategy 기본적으로 아무런 설정을 하지 않으면 @Table 의 지정한 name 이 대 소문자를 구분하여 쿼리가 날라간다. 즉 , mysql 에서는 테이블 명이 USERS 였고 JPA entity 의 name 은 users 였기 때문에 테이블을 찾지 못하는것. 그래서 별도의 namingStrategy를 프로퍼티에서 지정해주거나 엔티티에서 Table..
스프링부트를 안 쓰고 간단한 라이브러리를 만드는 도중 다음과 같은 문제 발생. What went wrong: Execution failed for task ':compileJava'. > java.lang.NoSuchFieldError: Class cohttp://m.sun.tools.javac.tree.JCTree$JCImport does not have member field 'cohttp://m.sun.tools.javac.tree.JCTree qualid' 환경변수로 자바 버전이 21 이상인 경우에 gradle build 하니깐 자꾸 실패하길래 관련 글 서칭 https://github.com/projectlombok/lombok/issues/3393 [BUG] lombok 1.8.26 incomp..
https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📝문제 📝풀이 가장 큰 수를 만들기 위해서 배열안의 수를 큰 수가 될 수 있는 조건으로 정렬을 해야한다. 만약 [ 3, 30, 34 ] 안의 우위를 정할 때 기준운 문제에 나와 있듯이 각각 수를 이어 붙였을 때 제일 큰 수로 하면 되므로 정렬 조건은 (s1, s2) -> (s2 + s1).compareTo(s1 + s2) 추가로 [0, 0, 0, 0] 일 경우엔 0만 리턴하도록 예외처리. impo..