우아한 테크코스 레벨3와 레벨4의 커리큘럼을 바꾸면서, 크루들에게 프로젝트 준비를 위한 시간이 주어졌다. 기획서를 작성하고 프로젝트를 준비하는데에 앞서 어떤 메시지를 주면 좋을지 고민이 시작되었다. 그러다 문득 User Story를 작성해보는 것도 좋겠다는 생각이 들어 강의와 실습 컨텐츠를 만들어보았다. 이 자료는 인간중심 UX 디자인과 사용자를 생각하게 하지마를 참고하여 만들었다. User Story는 사용자 상을 제작하고, 사용자의 시나리오를 작성한 후 요구사항으로 도출된다. 아래에서는 http://edu.nextstep.camp/ 을 가상으로 작성해보았다. 요구사항을 도출하기까지 사용되는 In-Depth Interview와 사용성을 위해 진행하는 Usability Test를 비교해 보는 것도 좋을거..
https://edu.nextstep.camp/c/8fWRxNWU/ 클린코드를 위한 TDD, 리팩토링 with Java edu.nextstep.camp 일급컬렉션 피드백에 이어, 많이 하는 피드백이 불변객체를 작성하라는 것이다. Effective Java에서는 '변경 가능성을 최소화하라'는 챕터를 통해 불변 객체를 소개한다. '불변 객체'는 인스턴스 생성 이후 내부 인스턴스 변수들을 수정할 수 없어야 한다. 이에 근본적으로 Thread-safe하므로 동기화 작업을 할 필요 없어 오류 가능성이 적고 실패 원자성을 제공한다. 불변 객체를 작성하기 위해 Effective Java에서는 아래의 규칙을 소개한다. - 객체의 상태를 변경하는 메서드를 제공하지 않는다. 즉, setter 메서드 등을 통해 인스턴스 변..
https://edu.nextstep.camp/c/8fWRxNWU/ 클린코드를 위한 TDD, 리팩토링 with Java edu.nextstep.camp TDD, 클린코드 코드리뷰를 하다보면 '원시값과 문자열을 포장하라', '일급콜렉션을 쓴다'와 같은 피드백을 주곤한다. Wrapper Class를 작성하는 데에는 어려움이 없지만, 일급콜렉션을 학습하는 과정에서 보통 동욱님의 블로그를 접하는데 두번째 특징인 '불변성'으로 인해 혼란을 겪는다. 객체지향 생활체조에 제시된 일급콜렉션(First Class Collection)은 일급 시민(First Class Citizen)을 연상시킨다. 그리고 일급시민은 함수형 프로그래밍과 더불어 불변객체를 연상시킨다. 우선 일급시민은 무엇이고, 불변객체는 무엇일까? 일급시민..
0. 퇴근하는 길에..동료가 맵리듀스를 공부한다는 이야기를 듣고 장난기가 발동했다. 왜 맵리듀스냐, Spark는 어떤가, 하둡이 뭐냐, 그런데 왜 분산이어야 하지, RDBMS로는 안되나, Postgres는 어떤가.. 계속 꼬리 물기 질문을 주고 받다가, 문득 정리해두면 좋을 것 같다는 생각이 들었다. 1. Spark란 [Docs]1) Spark는 고속 범용 분산 컴퓨팅 플랫폼이다.2) 사용자가 클러스터를 다루고 있다는 사실을 인지할 필요가 없도록 설계된, 컬렉션 기반의 API를 제공한다.3) Spark는 MapReduce와 유사한 일괄처리 기능, 실시간 데이터 처리기능, SQL과 유사한 정형 데이터 처리 기능, 그래프 알고리즘, 머신러닝 알고리즘을 모두 단일 프레임워크로 통합했다. [관련 글] 2. Wh..
production branch : masterintegration branch : developfeature branch hotfix branch# production에서 나오는 branch 는 hotfix만# 나머지는 모두 integration branch에서 나옴#확인#git log --oneline --decorate#git reflog#git branch -agit initgit config --global alias.st statusgit config --global alias.co checkoutgit co -b developgit co -b feature/add-testgit add .git commit -m ""# commit message 첫줄은 Title Line# 그 다음줄부터 De..
개발 환경 : atom + github (+ git desktop)atom 사용기 : 자동 완성 단축키 [tab] ! + [tab] li*3 + [tab]사용 패키지1. minimap 2. pigments 3. color-picker 4. prettier-atom 5. emmet 6. gitplus 7. autoclose-htmltheme 적용 (glacier dark) - prettier-atom 세팅 (format on save)HTML semantic 태그 : 의미가 있는 태그non-semantic (, ) : 텍스트를 위한 컨테이너id : 고유 / class : 중복되도 됨 1234567891011121314/// 템플릿 Title Colored by Color ScriptercsCSS | css..
개발 중에 디버깅을 위해 System.out.println을 사용할 경우, 매번 I/O 작업이 발생하여 성능을 떨어뜨린다. 이 경우, 개발 중 추가한 디버깅 메시지를 실 서비스하는 시점에서 제거하거나 주석처리를 해야 한다. ㅡㅡ. 이런 부분들은 Logging 라이브러리를 사용함으로써 해소할 수 있다. 대표적인 Logging 라이브러리로 SLF4J 인터페이스가 있으며, 구현체로는 log4j와 logback이 존재한다. (logback을 사용해야 하는 이유) 1. pom.xml에 dependency 추가12345 ch.qos.logback logback-classic 1.2.3 cs 2. src/main/resources/logback.xml 추가123456789101112131415161718 %d{HH:..
개발 공부를 시작하고 자주 접하고 그냥 지나친 개념 중에 하나이다. 면접 질문으로도 자주 나온다고 하고, 실제로 채용공고 필요 역량에도 REST 등 인터넷 기반 프로토콜/ 기술에 대한 이해를 요구하고 있는 기업도 다수 있다. REST하다는 것은 무엇일까? REST(REpresentational State Transfer) '대표적인 상태 전달' 흠.. 무슨 말인지 와닿지 않는다. REST란, "웹에 존재하는 모든 자원(이미지, 동영상, DB 자원)에 고유한 URI를 부여해 활용"하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다고 한다.따라서 Restful API는 REST 특징을 지키면서 API를 제공하는 것을 의미한다. (일종의 Coding Convention이랄까. 설계원칙..
앞에서는 클라이언트의 요청 처리를 서블릿 홀로 담당하는 All-in-One 방식에 대해 살펴보았다. All-in-One 방식은 규모가 크거나 업무 변경이 많은 경우에는 유지보수가 어려워 운영 비용이 증가하게 된다. 시스템 변경이 잦은 상황에서 유지보수를 보다 쉽게하려면, 중복 코드의 작성을 최소화하고, 코드 변경이 쉬워야 한다. 이를 위해서는 객체 지향의 특성을 활용하여 좀 더 역할을 세분화하고 역할 간 의존성을 최소화하여야 한다. 그리하여 제안된 것이 MVC(Model-View-Controller) 아키텍처이다. MVC 구조에서는 클라이언트의 요청 처리를 서블릿 혼자서 담당하지 않고 세 개의 컴포넌트가 나누어 처리한다. 컨트롤러 컴포넌트의 역할은, 클라이언트의 요청을 받았을 때 그 요청에 대해 실제 업..
자바 입문서 1권 혹은 학원 기초과정을 마치고 나서 읽으면 좋을 책이다. 객체지향 개념을 잡는데에 있어 ‘객체지향의 사실과 오해’를 많이 추천받곤 했는데,이 책과 비교한 글을 읽고 우선 이 책을 먼저 접하게 되었다. “왜 이렇게 객체가 협력을 하는지 대해서 설명하기 보다 조금씩 추상화하고 코드를 정리하면서 객체의 협력을 만들어 내는 느낌이다. 처음부터 설계를 생각해내는 것과 리팩토링의 차이랄까.” [관련 블로그] 이 책의 내용을 살펴보면,1장 객체 지향에선 객체지향언어로 프로그래밍을 하면서 느끼고 접했을 개념들을, 2장 설계원칙 / DI와 서비스 로케이터는 이제부터 내가 개발하면서 지켜야할 설계 원칙들을, 그리고 마지막으로 3장 주요 디자인 패턴은 앞으로 설계하게 될 패턴들 중 자주 사용되는 패턴들을 맛..