우아한테크캠프
-
우아한테크캠프 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..
-
우아한테크캠프 Day02우아한테크캠프 2018. 7. 3. 14:42
오늘은 수업 전 15분 정도 daily meeting을 진행했다. 이미 D사 인턴 과정에서, 팀원들과 daily meeting을 했었고, 효과를 봤던 나로서는 반가웠던 시간이었다. Day02 학습 내용 코딩 컨벤션가로 format : 120자 정도로 행 길이를 제한한다.함수 인수 : 인수가 3~4개인 경우 인수를 클래스로 만들 수는 없는지 고려한다.패키지 이름 : 자바 진영에서는 패키지 이름을 무조건 소문자로 한다. (패키지 이름은 단어 한 개로 표현, 단어 두 개를 붙여 쓰고 싶으면 디렉터리로 쪼갤 것) [Tip]1. 구현할 땐 구현에만(한 가지만) 신경 쓸 것 (구현하고 나서 더 좋은 이름을 짓는 시간을 가질 것)2. 코딩 컨벤션 사소한 것 하나에 목숨 걸지 말 것, 더 중요한 것이 훨씬 많다.3. ..
-
우아한테크캠프 Day01우아한테크캠프 2018. 7. 2. 22:35
오늘 교육 중에 가장 와 닿은 말이 하나 있다. 여기에서만 배울 수 있는 것이 무엇일까?를 고민해 보고 그것을 배우도록 하자 (From 박재성 교수님)내가 생각할 때 캠프에서만 배울 수 있는 것은 다음과 같다고 생각한다. 1. 다양한 사람들과 협업하며 여러 방식을 시도해볼 수 있다.2. 주력 언어가 다른 사람들과 협업하며 다양한 관점을 배울 수 있다. Day01 학습 내용 첫째 날은 가볍게(?) MacOS 친해지기, 간단한 크롤링 그리고 TDD 실습을 진행했다. 테스트 코드의 용도1. 리팩토링 후 코드 검증을 위한 용도로 사용2. API 사용법을 확인하기 위해 학습 Test로 사용 TDD프로덕션코드보다 테스트 코드를 먼저 개발하는 방식을 말한다. 자바 진영에서 일반적으로 TDD 도구로 JUnit을 사용한..