- goodmoring self study
<<원래 오자마자 아침엔 알고리즘 푸는 시간이지만, 나는 나에게 굿모닝 셀프 스터디시간이라고 지정해주어따.. 왜냐면 부족한 알고리즘 문제는 전날 예습하거나 복습을 미리 해가기도 하고, 아침엔 수업에 필요한 부분 보충하거나 예습이 더 필요한 날도 있기 때문에..!
그리고 1시간 반을 콩나물 버스와 지하철을 타고 도착하면 이미 멀미와 어지럼증에 시달려서 지치기 마련인데,,, 산뜻한 음악을 듣고 옆에 동기들을 보고 격려해주는 멘토님들의 말을 듣고 새롭게 의지를 다지는 시간이다 !!!
목요일, 금요일이 너무 잠이 부족한 시간들이 쌓여서 살짝만 정신을 놓으면 기절하기 마련인데,, 난 절대 하루하루 뒤쳐지거나 놓치지 않을거라는 의지가 있다..! >>
썸넬은,, 저번주차 피드백에 해주신 멘토님의 마지막 멘트인데 딱히 말을 많이 한것도 아니고, 사적인 친분이 있는것도 아니지만 항상 우리를 이해시켜주는것이 아닌 스스로 이해하고 생각하는 방법을 길러줄수 있도록 지도해주시고 무엇보다 정말 지칠때 동기부여가 되는 저런 말이 나에겐 너무나 큰 힘이다!!!!!!!!!!! 담주도 힘내볼꺼야 코캠 선택하길 잘했어 증말
넘 힘나는 멘트니까 한번더 읽고 하루를 시작 !
- 오늘 내가 스스로 풀기 힘들었던 알고리즘 문제
-1.기본함수를 알고있지 못해서 적용시키려 할때 떠오르지 못했다. 자주쓰는 함수이니 알아두도록
split() - 특정 문자열을 일정한 기준으로 잘라 배열로 반환하는 메서드 - split(구분자,횟수 제한)
sort() - 배열의 모든 원소를 적절한 위치에 정렬 후 해당 배열을 반환
reverse()- 배열의 순서를 반전해주는 메서드
join() - 배열의 모든 원소를 연결해 하나의 문자열을 반환하는 메서드
-다른풀이법도 알아두면서, sort 활용법을 확실히 익히자
-2.이문제는 스스로 생각해내지도 못했고, 멘토님의 리뷰또한 이해하기 어려웠다 다시 뜯어보면서 천천히 이해하고 다음날이면 까먹으니 몇번씩 더 볼것 !
-map함수를 활용한 부분
- 포트폴리오 리뷰 (타입스크립트로 전환 )
함수에 들어오는 props 부분들이 문제 !
1. 게시물 목록에서 눌렀을때 상세보기 페이지로 이동하는것 구현해보기
2. 마우스 이벤트 부분 event.target instanceof Element
element-태그 event.target이 태그라면? 태그에 id가 있으니 타입에러가 사라진다 !
3. 타입스크립트는 내가 받아야할 값을 불러올때 불러올수 있는 값들을 띄워줘서 편하다 !
예) IUpdatdBoardInput을 빈객체로 두고, title이 있다면 title의 값을 넣어주자 라는 뜻
그니까 지금 좀 낯설고 불편하더라도 익숙해지자 1!!!
4. 작성자 이름 건드리지 못하게 해주는것 (데이터가 들어온게 맞으면 read only true 아니면 false! 근데 당연한거니까 ?부분부터는 생략가능 함 ) (앞에 boolean()해서 적용도 가능하고 이중부정연산자를 사용하여 !!를 붙여주어도 같은 의미이다 )
5. return은 함수를 종료시켜주는 뜻이기 때문에 수정버튼 눌렀을때 제목과 내용이 없으면 알림, 비번알림 부분 !
6. early exit 패턴..! (개발을 하던 와중에 다 저런식으로 쓰는 형태를 패턴이라고 한다.)
-refactoring 패턴 (아까처럼 if~if~ 이런 걸 다시 만들어주는게 리팩토링, 그안에 early exit 패턴을 쓴것 )
틀리면 튕겨내고, 틀리면 튕겨내고(빨간박스), 모두 맞았을때 밑에박스 실행시켜라 !
- 구조분해할당 (Destructuring assignment)
- 구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식이다!
-mdn사이트에 나와있는 설명인데, 한번 읽으면 이해가 쏙쏙 잘간다 !
역시 클래식한 설명이 짱
요런식으로 배열에 관한 구조분해할당을 정리할 수 있겠다!const input = [1,2]; const [first, second] = input; first // 1 second // 2 -------------------------------------- const num = [1,2,3,4,5] third = num[3] fourth = num[4] third // 3 fourth // 4 -------------------------------------- const [ ,a, ,c, ] = [11,22,33,44,55] a // 22 c // 44 const [first] = [11,22,33,44,55] first // 11 const [first, ...and] = [11,22,33,44,55] first // 11 and // [22,33,44,55]
객체에 관한 부분도 잘 활용되니 이렇게 알아두장!
const obj = { a: 'string' b: 12, c: true } const {a,b} = obj a // 'string' b // 12 const {a, ...etc} = obj a // 'string' etc // {b:12, c:true} etc.b // 12 etc.c // true
- codegenerator
-모든언어는 기본 docs가 있다. codegenerator 찾아보는 습관 들이고 시간아까워하지말자! npm사이트도 자주 보자아!!!
- graphql - codegen
yarn add @graphql-codegen/cli
를 이용해서 받고 우리는 타입스크립트를 위해 받을꺼기 때문에
yarn add @graphql-codegen/typescipt
얘도 터미널에 class폴더 안에 설치를 해주어따 !
set data 오류나는 부분
없으면 undefined기때문에 빨간줄
if(result.data?.createBoard?.message) setData(result.data?.createBoard?.message)
있으면 넣어줘라는 형식이다
pick~ 부분을 쓴것은 밑에 variables의 타입을 검사해달라는 말이다
Pick이라는 애는 유틸리티 타입이다.
- union타입 헷갈릴수 있는 부분
- 유틸리티 타입도 배워보자 !
-협업하는데에 규칙 (우리의 룰)
코드린터의 대표 Eslink/ 코드 포멧터는 Prettier/
Eslink와 Prettier를 설치해주고 extention가서 다운도 받아줬다 !
두개를 같이 쓸거기 때문에 필요한 작업이 많았당
yarn add eslint-config-prettier --dev
같이쓸거야! 라는 뜻
뭔가 내부 규칙과 보여지는것과 협업을 하기에 유용하기에 골라서 쓰면 된다 !!
Mutable - 변할 수 있는, 잘 변하는
Immutable - 변경할 수 없는, 불변의
-이런 영어단어가 자바스크립트에서 왜 나오냐..!
<이해하기 쉬운 기본지식>
출처 - https://cdy0510.github.io/2018/05/10/mutable-immutable/
여기서 immutable한 String, mutable한 StringBuilder에 대해
더 자세히 보면... !
아항 우리가 쓰는 concat은 재할당의 의미를 가지는거였구
첨보는 stringbuilder라는 아이는 주소값이 변경되지 않는 특징을 가지는군 !
-immutable한 클래스는 따로 구분되어있는데, 함수 사용법 기본을 익히고 들어가면서 좀 더 세세하게 포스팅하자 !