우테코 [우아한테크코스 백엔드 4기] 레벨1 - "체스" STEP 1 회고 체스 게임 시작을 위해 입력해야 할 명령어의 문구를 출력한다. 체스 게임 시작을 위해서 명령을 입력받는다. [예외처리] 구성외의 입력은 받을 수 없다. [예외처리] move 뒤 값이 {원래 칸} {이동할 칸} 형태여야 한다. status를 입력받울 수 있다. [예외처리] start, move, end를 입력받을 수 없다. 체스 게임을 시작한다 위치가 변경될 때 마다 체스판을 출력한다 체스 게... 체스레벨1step1우테코step1 [우아한테크코스 백엔드 4기] 레벨1 - "블랙잭" 회고 참여자 이름 입력 받는 기능 [예외] 빈 문자열을 입력받은 경우 참여자의 배팅금액 입력 받는 기능 [예외] 숫자가 아닌 경우 한장 더 받는지 여부 확인 기능 [예외] y 또는 n이 아닌 문자를 입력받은 경우 카드 생성 플레이어 모음 객체 생성 플레이어 객체 생성 배팅금액 객체 생성 [예외] 0 이하일 경우 이름 객체 생성 카드 숫자 계산 카드 추가 기능 딜러 : 2장의 합계가 16 이하이면 ... 레벨1블랙잭우테코레벨1 [레벨1 - 미션4] 2단계 자판기 미션 피드백 상수도 복잡하면 나눠라 그런데 처음으로 constants.ts 파일을 여러 개로 분리했어요. constants.ts에 너무 많은 상수들이 있었거든요. 상수도 복잡해지면 분리해줘야합니다! 보통 validate-- 함수를 보면 어떤 역할과 반환 값을 기대하시나요? 👆 ValidationResult의 첫번째 인자가 hasError이다보니 true일 경우 에러가 발생하도록 설계되었어요. privat... 우테코우테코 [우아한테크코스 백엔드 4기] 레벨1 - "체스" STEP 2 회고 상여자는 커멘드로 간다^^ 방 이름을 입력받고 시작버튼을 누른다 이동하고 싶은 말과 칸을 커멘드로 입력한다 종료 버튼을 누른다 재시작 버튼을 누른다 각 방 이름별로 현재 진행 턴, 보드 상태를 저장한다. 방이름과 턴은 board 테이블에 String으로, 보드 상태는 squares 테이블에 저장한다 해당 방의 정보가 있는지 확인하고, 있을 시 게임 진행상태를 반환한다. 방 이름을 인자로 받아... 레벨1체스step2우테코step2 [레벨1 - 미션4] 1단계 자판기 미션 피드백 굉장히 어렵고 엄청 많은 곳에서 빨간색 밑줄이 뜨더라구요. 여태까지 JS로 개발하면서 "에러 처리를 많이 놓치고 있었구나😢" 느낄 수 있었습니다. Typescript의 필요성을 엄청 느꼈습니다. try catch문 안에서 forEach를 돌리고, 강제 throw에러로 루프를 벗어나는 방법 Array.some() 메소드를 쓰는 방법 Array.every() 메소드를 쓰는 방법 1) 기본 has... 우테코우테코 [레벨1-유튜브] 기억 남는 프로로그 보면 볼수록 느끼는 것이지만 크루들이 글을 허투루 작성하지 않는 것 같아요. 제가 쓴 프로로그나 글 또한 다른 사람들에게 유익했으면 좋겠습니다. 💪 무한 스크롤 💪 commitizen 다른 분들 커밋 보고 커밋 메세지에 이모지가 있길래 이걸 어떻게 하나씩 하신거지? 알고보니 commitizen 을 사용하신거였다! commitizen과 commitLint는 팀에서 통일성 있는 커밋 메세지를 작... 우테코프로로그우테코 [레벨1-자판기] 기억 남는 프로로그 💪 객체의 속성 값을 삭제해야할 때 성공 시: true 실패 시: 비엄격모드 false / 엄격모드 TypeError, SyntaxError 방법 2) ✨구조분해할당+나머지연산자 조합으로 해결할 수 있어요. 💪 콜백함수 콜백함수는 다른 코드(함수 또는 메서드)에게 인자를 넘겨줌으로써 그 제어권🎮도 함께 위임한 함수입니다. 하지만 제어권을 넘겨받을 코드에서 콜백 함수에 별도로 this가 될 대... 우테코프로로그우테코 [레벨1 - 미션4] 자판기 기억에 남는 피드백 크루들은 어떻게 개발했나 살펴볼까요? 👍 protected 사용 private과 비슷하긴 합니다. 자손 클래스에서도 접근이 가능하다는 점이 다릅니다. 👍 interface도 분리 인터페이스나 타입도 복잡해지면 분리할 생각을 합시다. 👍 미리 타입을 선언하는 멤버함수 class 작성 시 멤버함수들의 타입을 미리 작성해두는 크루를 봤어요. 괜찮은 것 같아요! 👍 API 처리하기 👆 API를 가져... 우테코우테코 [레벨1 - 미션3] 나만의 유튜브 강의실 기억에 남는 피드백 우테코가 비대면으로 이루어지고 있지만 제가 집에만 있다고 노는 건 아닙니다. BEM을 사용하는 시도들이 곳 곳에 보입니다. DOM Select 함수 default값을 이용하여 기본을 유지하되, 추가 Element가 있다면 해당 Element만 탐색하는 점에서 유용한 메서드네요! API 재사용 함수 API에 따라 다양하게 사용할 수 있을 텐데 재사용 함수로 만들어보는 건 어떨까요? 템플릿을 생... 우테코우테코 아이템72. 표준 예외를 사용하라 상태패턴을 이용해서 체스게임을 구현했는데, 해당 피드백을 받았다. 지금까지 미션을 하면서 무지성으로 IllegalArgumentException을 던졌었는데, 이번 기회에 공부를 해봤다. 숙련된 프로그래머는 그렇지 못한 프로그래머보다 더 많은 코드를 재사용한다. 예외도 마찬가지로 재사용하는 것이 좋다. 대표적으로 재사용되는 예외는 아래와 같다. 예외 주요쓰임 IllegalArgumentExc... 체스우테코이펙티브자바우테코 instanceOf, getClass() 를 통해 비교하면 안될까? 이번에 체스미션을 배카라와 같이 구현했다. Piece 추상클래스를 상속받은 체스말들을 클래스로 만들어서 관리를 했는데 Pawn인지 확인하는 메서드를 구현하다가 고민이 생겼다. getClass를 이용해서 Pawn과 같은 클래스인지 확인하면 상속받은 모든 기물에서 구현할 필요가 없지만, abstract method를 쓰게되면 모든 기물에서 구현해야한다. 객체에서 메세지를 전해준다는 의미에서는 아... 체스우테코우테코 [레벨1 - 미션3] 1단계 나만의 유튜브 강의실 피드백 충돌하는 것이 정상이고 그것이 야생학습이예요. 지금 잘햐나가 아니라 지금 자라냐(성장)는 것입니다. 하지만 그런 상황이 평생 가능할까요? 지금 어떤 것이 나에게 필요한지를 판단해 나갈 수 있는 능력도 학습의 일부입니다. 하지만 명시적으로 달아주면 좋겠어요! 한 번 사용해도 디자인 시스템이 있듯이 모든 컬러를 다 관리하고 있다는 의미를 부여할 수 있기에 웬만하면 변수 처리하면 좋을 것 같아요.... 우테코우테코 2021.07.07 데일리 회고 .d.ts파일에는 declare namespace, declare module, declare const 등이 들어갈 수 있다. 예를 들어 js로 구현되어 있는 라이브러리의 경우 타입스크립트에서 사용한다면 타입 체크가 되지 않지만 .d.ts파일에서 해당 라이브러리를 불러와서 declare module을 통해 타입을 정의해 줄 수 있다. 해당 파일은 타입스크립트에서 타입을 검사하는 용도로만 사... 데일리 회고우테코데일리 회고 2021.04.08 데일리 회고 드림코딩엘리의 강의를 들으면서 리액트 공부를 했다. js, 리액트, 피드백 정리 중 어떤 공부를 해야할지에 대해 고민이 많았다. 그래서 나도 그렇게 하려고 마음을 먹었다. 이렇게 불안할 바엔 리액트를 한번 훑고 피드백 정리와 js 기초 다지는 것을 해야겠다고 생각했다. 운이 좋게도 예전에 구매해놓은 드림코딩엘리의 강의가 있어서 이것만 하면 될 것 같다. 드림코딩엘리의 강의를 들으면서 리액트 ... 데일리 회고우테코데일리 회고 [우테코 프리코스] 3주차 과제 회고 패턴을 적용하다보니 해당 기능은 Model로 가야하나 Controller로 가야하나..?하는 고민들을 수없이 많이 하다보니 기존에 빠르게 구현할 수 있었던 코드들도 작성하는데 엄청난 시간이 걸렸던 것 같습니다..😂😂 가장 기본적인 구조로 Service, Repository없이 Model, View, Controller로 코드를 작성하다보니 모든 비즈니스 로직은 Model에 위치하여 Model... 우테코 프리코스우테코우테코 [우아한테크코스 백엔드 4기]프리코스 3주차 "자판기" 회고 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 해당 부분부터 다시 입력을 받는다. 예외 상황 시 에러 문구를 출력해야 한다. ✅ 상품 이름&가격&재고 세팅(예외처리) 기능 상품 이름을 이름 셋팅(예외처리) 기능으로 예외처리 한다. 상품 가격을 돈 셋팅(예외처리) 기능으로 예외처리 한다. 상품 개... 우테코우테코 [우아한테크코스 백엔드 4기]프리코스 2주차 "자동차 경주 게임" 회고 경주 할 자동차 이름(이름은 쉼표(,) 기준으로 구분) ✅ 자동차 이름 인풋&세팅 "경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)" 출력 [예외] 인풋에 문자,숫자,쉼표 외에 다른 것이 들어온 경우 [예외] 자동차 이름 길이가 0인 경우 [예외] 자동차 이름 길이가 5자를 넘는 경우 [예외] 인풋에 숫자 외에 다른 것이 들어온 경우 ✅ 자동차 생성 자동차 이름 생성하기 ... 우테코우테코
[우아한테크코스 백엔드 4기] 레벨1 - "체스" STEP 1 회고 체스 게임 시작을 위해 입력해야 할 명령어의 문구를 출력한다. 체스 게임 시작을 위해서 명령을 입력받는다. [예외처리] 구성외의 입력은 받을 수 없다. [예외처리] move 뒤 값이 {원래 칸} {이동할 칸} 형태여야 한다. status를 입력받울 수 있다. [예외처리] start, move, end를 입력받을 수 없다. 체스 게임을 시작한다 위치가 변경될 때 마다 체스판을 출력한다 체스 게... 체스레벨1step1우테코step1 [우아한테크코스 백엔드 4기] 레벨1 - "블랙잭" 회고 참여자 이름 입력 받는 기능 [예외] 빈 문자열을 입력받은 경우 참여자의 배팅금액 입력 받는 기능 [예외] 숫자가 아닌 경우 한장 더 받는지 여부 확인 기능 [예외] y 또는 n이 아닌 문자를 입력받은 경우 카드 생성 플레이어 모음 객체 생성 플레이어 객체 생성 배팅금액 객체 생성 [예외] 0 이하일 경우 이름 객체 생성 카드 숫자 계산 카드 추가 기능 딜러 : 2장의 합계가 16 이하이면 ... 레벨1블랙잭우테코레벨1 [레벨1 - 미션4] 2단계 자판기 미션 피드백 상수도 복잡하면 나눠라 그런데 처음으로 constants.ts 파일을 여러 개로 분리했어요. constants.ts에 너무 많은 상수들이 있었거든요. 상수도 복잡해지면 분리해줘야합니다! 보통 validate-- 함수를 보면 어떤 역할과 반환 값을 기대하시나요? 👆 ValidationResult의 첫번째 인자가 hasError이다보니 true일 경우 에러가 발생하도록 설계되었어요. privat... 우테코우테코 [우아한테크코스 백엔드 4기] 레벨1 - "체스" STEP 2 회고 상여자는 커멘드로 간다^^ 방 이름을 입력받고 시작버튼을 누른다 이동하고 싶은 말과 칸을 커멘드로 입력한다 종료 버튼을 누른다 재시작 버튼을 누른다 각 방 이름별로 현재 진행 턴, 보드 상태를 저장한다. 방이름과 턴은 board 테이블에 String으로, 보드 상태는 squares 테이블에 저장한다 해당 방의 정보가 있는지 확인하고, 있을 시 게임 진행상태를 반환한다. 방 이름을 인자로 받아... 레벨1체스step2우테코step2 [레벨1 - 미션4] 1단계 자판기 미션 피드백 굉장히 어렵고 엄청 많은 곳에서 빨간색 밑줄이 뜨더라구요. 여태까지 JS로 개발하면서 "에러 처리를 많이 놓치고 있었구나😢" 느낄 수 있었습니다. Typescript의 필요성을 엄청 느꼈습니다. try catch문 안에서 forEach를 돌리고, 강제 throw에러로 루프를 벗어나는 방법 Array.some() 메소드를 쓰는 방법 Array.every() 메소드를 쓰는 방법 1) 기본 has... 우테코우테코 [레벨1-유튜브] 기억 남는 프로로그 보면 볼수록 느끼는 것이지만 크루들이 글을 허투루 작성하지 않는 것 같아요. 제가 쓴 프로로그나 글 또한 다른 사람들에게 유익했으면 좋겠습니다. 💪 무한 스크롤 💪 commitizen 다른 분들 커밋 보고 커밋 메세지에 이모지가 있길래 이걸 어떻게 하나씩 하신거지? 알고보니 commitizen 을 사용하신거였다! commitizen과 commitLint는 팀에서 통일성 있는 커밋 메세지를 작... 우테코프로로그우테코 [레벨1-자판기] 기억 남는 프로로그 💪 객체의 속성 값을 삭제해야할 때 성공 시: true 실패 시: 비엄격모드 false / 엄격모드 TypeError, SyntaxError 방법 2) ✨구조분해할당+나머지연산자 조합으로 해결할 수 있어요. 💪 콜백함수 콜백함수는 다른 코드(함수 또는 메서드)에게 인자를 넘겨줌으로써 그 제어권🎮도 함께 위임한 함수입니다. 하지만 제어권을 넘겨받을 코드에서 콜백 함수에 별도로 this가 될 대... 우테코프로로그우테코 [레벨1 - 미션4] 자판기 기억에 남는 피드백 크루들은 어떻게 개발했나 살펴볼까요? 👍 protected 사용 private과 비슷하긴 합니다. 자손 클래스에서도 접근이 가능하다는 점이 다릅니다. 👍 interface도 분리 인터페이스나 타입도 복잡해지면 분리할 생각을 합시다. 👍 미리 타입을 선언하는 멤버함수 class 작성 시 멤버함수들의 타입을 미리 작성해두는 크루를 봤어요. 괜찮은 것 같아요! 👍 API 처리하기 👆 API를 가져... 우테코우테코 [레벨1 - 미션3] 나만의 유튜브 강의실 기억에 남는 피드백 우테코가 비대면으로 이루어지고 있지만 제가 집에만 있다고 노는 건 아닙니다. BEM을 사용하는 시도들이 곳 곳에 보입니다. DOM Select 함수 default값을 이용하여 기본을 유지하되, 추가 Element가 있다면 해당 Element만 탐색하는 점에서 유용한 메서드네요! API 재사용 함수 API에 따라 다양하게 사용할 수 있을 텐데 재사용 함수로 만들어보는 건 어떨까요? 템플릿을 생... 우테코우테코 아이템72. 표준 예외를 사용하라 상태패턴을 이용해서 체스게임을 구현했는데, 해당 피드백을 받았다. 지금까지 미션을 하면서 무지성으로 IllegalArgumentException을 던졌었는데, 이번 기회에 공부를 해봤다. 숙련된 프로그래머는 그렇지 못한 프로그래머보다 더 많은 코드를 재사용한다. 예외도 마찬가지로 재사용하는 것이 좋다. 대표적으로 재사용되는 예외는 아래와 같다. 예외 주요쓰임 IllegalArgumentExc... 체스우테코이펙티브자바우테코 instanceOf, getClass() 를 통해 비교하면 안될까? 이번에 체스미션을 배카라와 같이 구현했다. Piece 추상클래스를 상속받은 체스말들을 클래스로 만들어서 관리를 했는데 Pawn인지 확인하는 메서드를 구현하다가 고민이 생겼다. getClass를 이용해서 Pawn과 같은 클래스인지 확인하면 상속받은 모든 기물에서 구현할 필요가 없지만, abstract method를 쓰게되면 모든 기물에서 구현해야한다. 객체에서 메세지를 전해준다는 의미에서는 아... 체스우테코우테코 [레벨1 - 미션3] 1단계 나만의 유튜브 강의실 피드백 충돌하는 것이 정상이고 그것이 야생학습이예요. 지금 잘햐나가 아니라 지금 자라냐(성장)는 것입니다. 하지만 그런 상황이 평생 가능할까요? 지금 어떤 것이 나에게 필요한지를 판단해 나갈 수 있는 능력도 학습의 일부입니다. 하지만 명시적으로 달아주면 좋겠어요! 한 번 사용해도 디자인 시스템이 있듯이 모든 컬러를 다 관리하고 있다는 의미를 부여할 수 있기에 웬만하면 변수 처리하면 좋을 것 같아요.... 우테코우테코 2021.07.07 데일리 회고 .d.ts파일에는 declare namespace, declare module, declare const 등이 들어갈 수 있다. 예를 들어 js로 구현되어 있는 라이브러리의 경우 타입스크립트에서 사용한다면 타입 체크가 되지 않지만 .d.ts파일에서 해당 라이브러리를 불러와서 declare module을 통해 타입을 정의해 줄 수 있다. 해당 파일은 타입스크립트에서 타입을 검사하는 용도로만 사... 데일리 회고우테코데일리 회고 2021.04.08 데일리 회고 드림코딩엘리의 강의를 들으면서 리액트 공부를 했다. js, 리액트, 피드백 정리 중 어떤 공부를 해야할지에 대해 고민이 많았다. 그래서 나도 그렇게 하려고 마음을 먹었다. 이렇게 불안할 바엔 리액트를 한번 훑고 피드백 정리와 js 기초 다지는 것을 해야겠다고 생각했다. 운이 좋게도 예전에 구매해놓은 드림코딩엘리의 강의가 있어서 이것만 하면 될 것 같다. 드림코딩엘리의 강의를 들으면서 리액트 ... 데일리 회고우테코데일리 회고 [우테코 프리코스] 3주차 과제 회고 패턴을 적용하다보니 해당 기능은 Model로 가야하나 Controller로 가야하나..?하는 고민들을 수없이 많이 하다보니 기존에 빠르게 구현할 수 있었던 코드들도 작성하는데 엄청난 시간이 걸렸던 것 같습니다..😂😂 가장 기본적인 구조로 Service, Repository없이 Model, View, Controller로 코드를 작성하다보니 모든 비즈니스 로직은 Model에 위치하여 Model... 우테코 프리코스우테코우테코 [우아한테크코스 백엔드 4기]프리코스 3주차 "자판기" 회고 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 해당 부분부터 다시 입력을 받는다. 예외 상황 시 에러 문구를 출력해야 한다. ✅ 상품 이름&가격&재고 세팅(예외처리) 기능 상품 이름을 이름 셋팅(예외처리) 기능으로 예외처리 한다. 상품 가격을 돈 셋팅(예외처리) 기능으로 예외처리 한다. 상품 개... 우테코우테코 [우아한테크코스 백엔드 4기]프리코스 2주차 "자동차 경주 게임" 회고 경주 할 자동차 이름(이름은 쉼표(,) 기준으로 구분) ✅ 자동차 이름 인풋&세팅 "경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)" 출력 [예외] 인풋에 문자,숫자,쉼표 외에 다른 것이 들어온 경우 [예외] 자동차 이름 길이가 0인 경우 [예외] 자동차 이름 길이가 5자를 넘는 경우 [예외] 인풋에 숫자 외에 다른 것이 들어온 경우 ✅ 자동차 생성 자동차 이름 생성하기 ... 우테코우테코