분류 전체보기
-
우아한테크캠프 Day08우아한테크캠프 2018. 7. 12. 17:37
학습에 있어 가장 중요한 건 지치지 않고 꾸준히 가는 것이다. (일정한 리듬을 만들면서 가는 게 더 중요하다)by. 박재성 교수님 테스트 코드관련 피드백SessionUtils에 대한 테스트코드를 작성해볼 생각은 안 했나? 세션에 대한 테스트는 어떻게 할 수 있나?SessionUtils은 테스트하기 어렵지 않기 때문에 테스트 코드를 작성하면 좋다. (유틸 클래스는 단위테스트하기 좋다.) 테스트 코드의 장점단위테스트를 하다 보면 자연스럽게 버그를 찾게 된다. 테스트 코드 작성 팁메소드 하나 만들 때마다 단위테스트를 진행할 것코드를 작성할 때와 테스트하는 시점이 멀어지면 멀어질수록 디버깅하기가 어려워진다. Day08 학습 내용 최종적으로 Exception을 잡아서 제어해야 하는 곳은 컨트롤러다. 코드를 작성할..
-
우아한테크캠프 Day07우아한테크캠프 2018. 7. 11. 09:00
상태 값을 가지는 객체에 메시지를 보내 일을 시켜라.장점1. 로직에 대한 중복 제거2. 테스트하기 쉬워짐 테스트하기 어려운 코드(DB에 종속적인 코드)와 테스트하기 쉬운 코드를 분리해야 한다. 특히, API를 만드는 관점에서 메소드를 만들면 좋다. (ex. 회원 정보를 업데이트하는 메소드 내에 비밀번호를 검사하는 부분이 없다면, 사용하는 입장에서 둘 다 호출해줘야 하는 불편함이 생긴다.) 회원 정보를 업데이트하는 메소드 내에 비밀번호 검사하는 부분이 없는 경우@PutMapping("/users/{id}/update") public String update(@PathVariable int id, User user) { User savedUser = users.get(id); if (!user.matchPa..
-
Git과 Github 정리우아한테크캠프 2018. 7. 10. 21:45
로컬 저장소 사용을 위한 Git git branch와 git checkoutgit branch와 git checkout을 한 번에 실행하는 방법 : git checkout -b '브랜치이름' git merge브랜치 병합 : git merge (해당 브랜치를 가져와서 병합)ex) 기준이 되는 브랜치(master)에서 git merge를 수행한다. 이렇게 해야만 master 브랜치가 변경된다. 실제 프로젝트에서 발생할 수 있는 상황들1. 불필요한 파일을 무시하는 법touch .gitignore※ .gitignore파일을 운영체제나 IDE에 맞춰 자동으로 생성해주는 웹사이트 (https://www.gitignore.io/) 2. merge할 때, 충돌 해결하는 법 (수동으로 해결)> step1 3. 커밋한 내..
-
우아한테크캠프 Day06우아한테크캠프 2018. 7. 9. 19:42
빠르게 개발하기는 좋지만, 유지보수 하기 어려운 코드를 작성하지는 않은지 끊임없이 생각하자 (by 박재성 교수님) Day06 학습 내용 브라우저가 웹페이지를 그리는 과정1. HTML데이터를 파싱한다.2. 웹 엔진이 가지고 있는 HTML/XML 파서가 문서를 파싱해서 DOM Tree를 만든다.3. 파싱하는 중 CSS 파일 링크를 만나면 CSS 파일을 요청해서 받아온다. CSS 파일을 읽어 CSSOM(CSS Object Model)을 만든다.4. DOM Tree와 CSSOM을 사용해 Render Tree를 만든다.5. Render Tree의 노드들이 화면의 어디에 위치할지 계산한다.6. 웹페이지를 그린다. 한번에 요청해서 받는 구조가 아니라, 분리돼서 요청 가고 분리돼서 응답을 받는 구조다. (화면 깨짐이 ..
-
우아한테크캠프 Day05우아한테크캠프 2018. 7. 9. 10:52
오늘 수업에서 가장 와 닿았고, 나 자신을 반성하게 했던 말은 아래와 같다. 코딩하다 문제를 만났을 때 그 속에서 문제를 해결하는 방법을 찾아봐야 한다후퇴를 하려고 하지 말고, 돌아가려고 하지 말고 Day05 학습 내용 생성자 대신 static 팩토리 메소드 사용을 고려하자 (이때, 생성자는 private으로)1. 생성자와 달리 팩토리 메소드는 메소드명을 가질 수 있다. (가독성 증가)2. 생성자와 달리 호출될 때마다 매번 새로운 객체를 생성할 필요가 없다. (불필요한 인스턴스 생성 방지)3. 자신의 인스턴스만 반환하는 생성자와 달리 static 팩토리 메소드는 자신이 반환하는 타입의 자식 객체도 반환할 수 있다. (다형성)4. 생성자에 로직을 넣지 않아도 된다. ex. 추후 추가 예정 객체지향프로그래밍..
-
우아한테크캠프 Day04우아한테크캠프 2018. 7. 5. 20:04
오늘 오전에 우동소(우아한테크캠프 동기를 소개합니다)를 진행한 뒤, 멘토와의 점심시간을 가졌다.우동소를 하며 든 생각은 동기들이 말을 정말 잘한다는 것이었다. 발표 실력이 다들 좋아 깜짝 놀랐다.나도 더욱 분발해야겠다. Day04 학습 내용 테스트 케이스는 기능 요구사항을 분석해 만든다. 기능 요구사항1. 각 자동차에 이름을 부여할 수 있다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.2. 자동차 이름은 쉼표(,)를 기준으로 구분한다.3. 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다. 테스트 케이스 (테스트 케이스를 만들 때는 "어떤 input이 들어왔을 때, 어떤 output이 나온다"는 포맷으로 만든다.)1. 게임에 참여할 자동차 이름을 입력..
-
우아한테크캠프 Day03우아한테크캠프 2018. 7. 4. 18:51
코드 작성할 때 가장 중요한 것은 중복코드 제거 (프로덕션 코드뿐만 아니라 테스트 코드도) 지금 우리에게 가장 필요한 역량은리팩토링 역량 (많은 시간을 들일 것)테스트 코드 하나 완성될 때마다, 바로 리팩토링 진행 역시 박재성 교수님 수업은 믿고 듣는 수업이다. Day03 학습 내용 자동차 경주게임을 TDD로 진행하며 어려웠던 점1. 우승자를 구하는 로직을 테스트코드 작성할 때, 초깃값을 내가 원하는 형태로 만들 방법이 없어서 어려움을 겪었다. (Car 정보를 개발자가 임의로 조정할 수 있어야 테스트하기 쉽다.) * 반성 : 우승자 구하는 메소드에 input으로 초깃값을 넣어주는 방법을 왜 생각 못 했을까? 2. 자동차를 move 하는 메소드 내부에서 랜덤 숫자를 생성하는 부분이 있어 테스트하기 어려웠다..
-
자바8 스트림 API & Optional<T>우아한테크캠프 2018. 7. 3. 22:50
자바8 기능을 의식적으로 사용하는 전 직장 동기 덕분에, 나 또한 자바8 기능을 의식적으로 사용하고 있다. 스트림 데이터 소스(배열, 컬렉션, 파일 etc...)가 무엇이든지 간에 같은 방식으로 처리할 수 있게 해준다. 스트림을 사용할 때 장점코드가 간결해지고 이해하기 쉽다. 스트림 연산중간 연산 : 연산결과가 스트림 ex) map( ), flatMap( )자르기 - skip( ), limit( )걸러내기 - filter( ), distinct( )정렬 - sorted( )스트림 타입 변환 - map( )데이터 조회 - peek( )Stream을 Stream로 변환 - flatMap( ) 최종 연산 : 연산 결과가 스트림이 아님 ex) reduce( ), collect( )forEach( )통계 - co..