우아한테크코스/레벨 1 - Java8 [Soft Skills] 레벨 1 글쓰기 - 유연성 강화 우테코에서는 매 레벨마다 한 편의 글을 쓰도록 하고 있다.이전 기수 주제는 "우테코 한달 생활기" 였다고 한다. 이번 기수의 주제는 다음과 같다.유연성 강화 스터디의 경험을 시리즈로 작성한다.유연성 강화 스터디를 통해 발견한 나, 그리고 변화할 나우테코에서 개발자에게 필요한 자세 중 하나로 '유연성'을 강조하고 있다.우리는 일반적으로 성과 증명 마인드셋으로 살아왔다. 그래서 성과를 내지 못하거나 실패하면 좌절을 마주하기도 하고 극도한 스트레스를 받기도 한다.(하지만 이것이 무조건적으로 나쁘다는 것은 아니다. 적절한 성과 증명 마인드셋은 좋은 성과를 내는 원동력이 되기도 한다.)반면 학습 마인드셋을 가지게 되면 실패나 어려움을 겪더라도 그 과정에서 내가 무엇을 배울 수 있을지, 앞으로 어.. 2024. 4. 13. [JAVA] JDBC 연결 Java에서 JDBC 드라이버를 사용해 DB와 연결하는 작업을 수행했다. 그 과정을 순서대로 정리해보았다.JDBC란 JavaDatabase Connectivity로, 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.이번 프로젝트에서는 MySql 서버를 사용하는 프로그램을 만들기로 했다. 1. Gradle 의존성 추가build.gradle에 mysql-connector-java 를 추가해준다.runtimeOnly("com.mysql:mysql-connector-j:8.3.0") 2. 설정파일 추가데이터베이스에 접근하기 위한 정보를 yml파일을 이용해 설정한다.application.yml파일server: localhost:13306 // MySQL 서버 주소database: chess // M.. 2024. 4. 4. [GitHub] 코드리뷰가 익숙하지 않은 분들을 위한 GitHub에서 코드리뷰 하는법 코드리뷰가 익숙하지 않은 분들을 위한 코드리뷰 하는 법을 정리해보고자 한다. (사실 그게 바로 나...🥲) 이번에 네 번째 우테코 미션을 하면서 리뷰어에게 코드 리뷰를 요청했다. 여러 코멘트가 달렸고 각 코멘트마다 열심히 답변을 작성해서 다시 리뷰 요청을 보냈다. 그런데 돌아온 리뷰에는 뭐지? 내 의견과 질문에 대한 아무런 답변도 돌아오지 않았다. 뭐지.. 뭔가 이상한데... 하고 다시 내 답변들을 보니 평소와 달리 "Pending"이라는 문구가 붙어있었다. 그렇다. 리뷰어에게 내 답변이 전송되지 않은 것...! 얼마나 이상하게 생각했을까🤔 그렇다면 뭐가 문제였는지, 어떻게 하면 되는지 한번 알아보자. 직접 테스트해보기 위해 계정 2개를 사용했다. 1. PR 보내기 PR(Pull requests)는 re.. 2024. 3. 30. [JAVA] 상태 패턴(State Pattern) with BlackJack 블랙잭 게임을 구현하다보면 현재 내 상태에 따라 수익을 계산하는 방법이 결정된다.(블랙잭으로 승리하면 베팅 금액의 1.5배 받기 등) 그래서 승패를 결정하거나 수익을 결정하는 과정에서 if()절을 사용해서 조건을 확인하는 메서드가 많아졌다. 이 때 사용할 수 있는 패턴 중 하나가 '상태 패턴'이다. 처음 이 방식을 알았을 때의 신선한 충격이란🤔 그렇다면 상태 패턴이 무엇인지, 상태 패턴을 어떻게 적용할 수 있는지 알아보자. ❯ 상태 패턴(State Pattern) 객체가 상태에 따라 행위를 다르게 할 때, 상태를 객체화하여 행동을 변경(지정)할 수 있도록 하는 행동 디자인 패턴이다. 구현 방식을 간단히 설명하면 아래와 같다. 상태를 인터페이스로 캡슐화 한다. 세부 상태는 클래스로 표현한다... 2024. 3. 19. [JAVA] 캐싱 활용하기 블랙잭 게임 구현을 하면서 '카드덱'이라는 객체를 사용하게 되었다. 나는 실제 (카지노에서의)규칙을 적용해서 여러벌의 카드덱을 사용하는 방식으로 구현했는데 그 과정에서 new Card()를 통해 계속해서 새로운 카드를 생성하는 방법을 사용했다. 그런데 리뷰어로부터 "카드가 만들어질 수 있는 경우의 수는 52개이고, 매번 새 인스턴스를 생성하는것은 낭비일 수 있다. 카드 인스턴스를 캐싱해보는건 어떨까?" 라는 피드백을 받았다. 생각해보면 new Card(3, 다이아몬드), new Card(3, 다이아몬드) 처럼 같은 카드가 발급될 경우 굳이 새로운 객체를 만들어서 넘겨줄 필요가 없다. 미리 생성되어있는 총 52개의 카드 중 하나를 선택해서 전달해주면 된다. ❯ 캐시란 무엇일까? The cache is a .. 2024. 3. 11. [JAVA] VO(Value Object) vs DTO(Data Transfer Object) with record 이번 미션에서 추가된 요구사항 중 하나가 "모든 원시 값과 문자열을 포장한다"였다. 사다리 타기 미션을 예로 들면 사다리에 필요한 참여자 이름, 결과이름(상품명), 높이를 각각 String, String, int 타입으로 받아오는데 이걸 원시값으로 사용하지 않고 Participant, Prize, Height로 포장하면 되겠다! 생각했다. 그렇게 코드 구현을 하고 비즈니스 로직을 작성했다. 로직을 수행하고 나온 결과를 출력하기 위해 view로 데이터를 전달하려는데 이건 Participant 자체를 전달해야 할까 아니면 DTO에 담아서 보내야 할까 고민이 됐다. 기존에 알고 있던 VO와 DTO의 역할을 생각하면 아래와 같이 진행되어야 한다. VO로 원시 값을 포장해서 사용하고 -> View에 값을 전하기 .. 2024. 3. 5. 이전 1 2 다음