전체 글 체스 게임 1 2020. 4. 17. 8주차부터 10주차까지는 우테코에 합류하고 처음으로 멘붕이 왔던 주차이다. 8 ~ 10주차에 진행했던 체스게임 미션 때문이다. 난이도가 갑자기 어려워진 느낌에 복잡하고 생각할 것도 정말 많았다. 거기에 TDD, 클린코드 등등 익숙치 않은 원칙들을 지키며 코딩하려니 힘들었다. 구현을 하던 중간에 구조를 바꿔야겠단 생각이 들어서 코드를 다 엎고 다시했었는데, 마감 시간이 다가오자 진짜 멘붕이왔다. 포비는 미션이 끝나고 이번 미션이 멘붕을 의도한 미션이라고 말씀해주셨다. 프리코스때 부터 항상 캡틴의 의도대로 다른 사람은 몰라도 나는 정확히 흘러가는 것 같다고? 느꼈다., 우테코에서 진행하는 근로 장학에도 합류하게 됐다! 나는 코드 리뷰 부분을 맡게되었다. 의미있는 코드 리뷰를 찾아서 다른 분들이 보기 쉽게 또.. null 반환보다는 Optional을 활용하자. 2020. 4. 10. javable에 업로드 된 제 글을 옮겨온 글입니다. 😊 자바는 객체를 사용하여 모든 것을 표현한다. 그로 인해 메소드가 특정 조건에서 값을 반환할 수 없을 때, null을 반환하는 방식은 흔히 하는 실수이다. null 반환의 문제점 List에서 어떤 정수의 배수 중 최솟값을 반환하는 메소드를 살펴보자. public static Integer findMinMultiple(List numbers, int anyNumber) { Collections.sort(numbers); for (Integer number : numbers) { if (number % anyNumber == 0) { return number; } } return null; } 위 메소드는 List numbers에서 anyNumber의 .. 블랙잭 2 2020. 3. 30. 코로나19 때문에 집에서 공부를 하다가 7주차 부터는 집에서 벗어나 우아한 테크코스 교육장에 가게되었다. 교육장에 오랜만에 간 첫 날 오전 강의가 끝나고 아버지가 다치셨다는 전화를 받았다. 아버지옆에 간호할 사람이 필수로 있어야했고 오랜만에 간 교육장을 뒤로하고 병원에서 7주차의 대부분을 보내게 되었다. 변명은 아니지만.., 이런 이유로 7주차는 미션도 힘겹게 마무리했다. 7주차에는 6주차에서 하던 블랙잭 미션의 2단계 미션을 진행했다. 6주차에서는 승 / 패로 게임 결과를 표시했다면 7주차 2단계에서는 플레이어들이 배팅을 하고 배팅 결과로 게임 결과를 표시하도록 요구사항이 변경된 미션이다. 배팅한 순간 Money는 User의 손을 떠나기 때문에 Money는 User의 소유가 아니라고 생각했었다. 그래서.. 블랙잭 1 2020. 3. 18. 코로나 바이러스가 점점 심해지고 있어서 재택 교육이 계속해서 연장되고 있다. 그래서 이번 주는 페어 프로그래밍을 온라인으로 진행했다. 구글의 행아웃을 통해 화상으로 대화하고 각자 push & pull하는 방식으로 진행했다. 이번 주는 미션을 진행하면서 몰랐던 Java API 몇 가지를 페어에게서 배울 수 있었다. CQS원칙에 대해 공부하고 정리할 수 있었다. 객체 지향적인 설계, 유지보수하기 좋은 구조에 대해 깊은 고민을 할 수 있었다. 이번 미션은 프리코스때 해봤던 블랙잭게임 이다. 2단계에 걸쳐서 총 2주동안 진행되는 미션이다. 페어에게서 배운 점 Map result = playerResults.stream() .map(UserResult::getReverseResult) .collect(Collec.. Command Query Separation 원칙 2020. 3. 13. 우테코에서 로또 미션을 구현할 때 다음과 같은 메소드를 작성한 적이 있다. public boolean hasNext() { return this.count-- > 0; } 작성할 당시엔 위 메소드에 아무런 문제가 없다고 생각했다. 하지만 위 사진처럼 리뷰를 받았고 Command Query Separation(CQS) 원칙에 대해 공부를 하게 되었다. Query 결과값을 반환하고, 시스템의 관찰가능한 상태를 변화시키지 않는다. 따라서 부작용에서 자유롭다.(free of side effects) Command 결과를 반환하지 않고, 대신 시스템의 상태를 변화시킨다. CQS 원칙은 말 그대로 결과값을 반환하는, 조회의 기능을 하는 Query와 상태를 변경 시키는 Command를 분리하는 것이다. public .. AWS EC2 서버에서 SSH로 MySql 접속이 안될 때(Window) 2020. 3. 10. SSH에서 EC2서버로 접속한 다음 RDS에 등록한 MySql로 접속을 시도했다. 하지만 계속 EnterPassword에서 입력이 되지않고 넘어가지도 않았다. 구글에 계속 검색해보고 여러가지 해결방법을 시도해봤는데 되질 않았다. 그러다 정말 운좋게 stack overflow에서 글을 발견했다. 글의 내용대로 EC2 서버에서 ifconfig를 입력해보니 내 IP주소와는 다른 주소가 있었다. 그래서 RDS 보안그룹에서 기존 내 IP만 등록을 해놓은 걸 ifconfig를 통해 알게된 IP주소를 추가해줬다. 그랬더니 마법처럼 MySql에 접속이 가능해졌다. 아마 Windows에서는 putty를 통해 SSH로 EC2서버로 접속할 때 IP주소가 바뀌는 것? 같다. Windows만 이러는지 맥/리눅스도 이러는지 잘은.. PuTTY로 AWS EC2 인스턴스에 접근이 안될 때 2020. 3. 10. 윈도우에서 PuTTY를 통해 SSH로 EC2 인스턴스에 접속할 때 계속해서 실패했었다. 튜토리얼에 나온 방법대로 PuTTy에서 똑같이 했는데 계속 실패해서 결론적으로 PuTTYgen에서 .pem을 변환했던 .ppk파일에 문제가 있다고 생각했다. 꽤 많은 시간을 삽질하고 한 블로그에서 알려준 방법으로 PuTTYgen에서.ppk파일을 변환하고 PuTTY에서 EC2에 접근을 성공했다. 다시 같은 문제를 겪지 않기 위해서 글로 남겨둔다. 인스턴스를 생성할때 받은 .pem파일에서 인스턴스를 생성할때 받은 .pem파일을 puttygen에서 Load한다. Generate를 클릭하고 마우스를 움직여서 실행을 완료시킨 후 public/private으로 각각 변환하는데 이때 public키는 RSA로 변환하고 private.. Exception 정리 2020. 3. 4. 우테코 강의자료에서 Exception 부분을 눈으로만 읽다가 기억에 남지 않아서 글로 정리하고자 한다. Exception의 상속구조 Error 애플리케이션이 정상적으로 동작하는데 심각한 문제가 있는 경우 Exception 비즈니스 로직 상에서 에러가 발생하는 경우 사용한다. Exception을 사용하는 경우 컴파일 시점에 Exception을 확인할 수 있다. Checked Exception 또는 Compile Time Exception 이라고 한다. RuntimeException NumberFormatException과 같이 Runtime 시에 발생하는 에러를 처리하는데 사용한다. UnChecked Exception 또는 Runtime Time Exception이라고도 한다. Checked Excepti.. 이전 1 ··· 8 9 10 11 12 13 14 ··· 31 다음