오늘 정리 > 코딩이란, 도구(이클립스 등)를 활용하여 컴퓨터가 이해할 수 있는 언어로 바꾸어(컴파일) 일을 시키는 것. > 즐겁게 계속 코딩을 하기 위해, 죽을 때 까지 공부해야 하지만 그 속에서 행복을 찾고, 내가 상상한 것을 만드는 코딩을 통해 즐거움을 찾기!
코딩이란? 약속에 따라 컴퓨터가 이해할 수 있는 언어로 문서를 작성하는 것약속이란? 클래스 선언, 메인메소드 선언, 선언부 작성(변수, 메소드)클래스란? 변수와 메소드로 구성되어 있음. {}변수는 저장소메소드는 기능, 배포, 실행, ()코딩을 실행하기 위해서는 JVM이
코딩을 배우려면, 하나의 코드를 다양한 방식으로 생각하고 뜯어고치면서 새롭게 시도해야한다. 일단 아는 것 부터 한 줄 써보자리턴타입이란? 지금까진 public (static) void mehtodA(){} 로 선언했던 메소드를 호출하는것에 그치는 것이 아니라 그 응답값
백엔드 개발자란? 보이지 않는 것을 작업하고 해결하는 사람이다.private 사용하는 이유는? 외부에서 인스턴스 변수를 가지고 위변조를 막고 싶어서 캡슐화를 하는 것이다.메모리 영역 관련 복습 디버그 복습값을 불러오기 전에 꼭 디버그를 통해 진행 순서를 확인하기디버그
코딩연습은? 여러 방식을 경험해보면서 차근차근 확장해 나간다. 기초부터 천천히 꾸준히 하면 된다.첫 성적계산 코드는? 일차원적인 생각으로 첫 코드를 만들었다면, 앞으로 배우는 개념들을 통해 조금씩 수정해 나가보기로 했다.변수변수 선언은?타입 변수명; (선언만)타입 변
클래스를 나눠서 작성? 이식성, 재사용성을 높이고 보다 입체적으로 코딩을 할 수 있다.for문? n회까지 반복되는 코딩을 간소화 시킬 수 있다.복습방법기본 3세트 코드 써보기각 개념 설명 말로 해보기(초등학생한테 설명하듯이)전역변수, 지역변수 활용하기(static은 나
Flow Chart? 코딩이란 프로그램을 설계하는 것, 그 과정을 도식화하여 그려보는 것은 설계하는 것에 큰 도움이 된다.코딩의 step up? 기본적인 과정부터 조금씩 습득되는 지식들로 코드를 업그레이드 하는 것이 필요하다.RandomGame 클래스의 구성여러 클래스
JAVA의 구성선언부, 생성부, 메인메소드모든 클래스는 부모 클래스인 Object를 상속받고 있음.부모의 메소드, 변수를 호출, 재정의메소드 오버라이딩(재정의)할 수 있음. → 업그레이 (@Override // annotation)메소드 오버로딩할 수 있음. → 메소
클래스 쪼개기? 코딩은 단순히 코드를 나열하는 것이 아니라 크게 보며, 적절히 조립하는 식으로 접근하는 것이 필요하다.Git(깃)이란? 형상관리, 버전관리를 하는 소프트웨어로, 협업을 할 때 잘 쓰인다.클래스 쪼개기(무조건 나눠보기)변수, 메소드가 같은 클래스에 있는
클래스 사이의 관계를 파악하여 필요한 곳에 인스턴스화를 할 수 있어야 한다.인스턴스화의 위치에 따라 NullPointException 발생할 수 있다는 것을 설명하고, 해결할 수 있어야 한다.static 대신 생성자 호출을 통해 객체 주입을 받아내는 코드를 작성할 수
파라미터자리의 활용? 메소드, 생성자에서 활용하는 것의 연습이 필요하다.섞어쓰기? 자연스럽게 메소드와 생성자를 오가는 연습, 클래스를 오가는 코드가 그려져야한다.메소드, 생성자의 파라미터자리 with 참조형타입 Untitled 생성자default 생성자 : 파라미터
코딩의 다양성? 코드를 써내려가는 방법은 정말 다양하게 존재한다. 여러 관점, 다양한 영역을 넘나들며 코드를 작성할 수 있는 경험과 눈이 필요하다. (빠른 손과 검색이 필요할수도..ㅎㅎ)자바의 다형성? java 언어의 큰 특징 중 하나이다. 하나의 참조변수를 통해 여러
java를 java답게 코딩하기? 재사용성과 이식성을 생각하며 코딩 전개하고, 클래스 간 결합도는 줄이고, 코드양은 늘어도 복잡도는 늘지 않게 코딩한다.생성자는? 전처리의 역할을 하고, 초기화, 재정의 등의 역할을 한다.생성자(전처리, 거쳐감, 실행문을 경유→초기화,
Java의 특징? 하나의 상속만 extends가능하지만 여러개의 인터페이스를 impliments 가능상속이란? 부모의 변수나 메소드를 자손이 훼손하지 않는 범위로 사용할 수 있고, 그 메소드를 오버로딩할 수 있고, 그럴 때 부모가 실행하는 메소드를 그림자메소드 化 한다
인터페이스는? 자바에서는 상속은 하나만 가능하지만 인터페이스는 여러개를 이용할 수 있음. 이를 통해 다양한 코드 전개가 가능해지고 다형성을 나타나게 됨.참조형? 클래스 간 메소드 간의 관계를 만들 수 있는 방법으로 파라미터 안에 참조형인 객체를 참조하여 관계를 만들 수
try-catch문? 예외가 발생할 수 있는 코드 블록을 감싸고, 예외가 발생했을 때 해당 예외를 처리하는 코드를 제공한다.DB연동 과정? JDBC API를 사용하여 Oracle 서버와 통신하는 방법을 학습하였고, 이를 통해 DB연동 과정을 이해하게 되었다.선언부, 생
싱글톤? 초기에 한 번만 사용되도록 설계하는 것이 필요한 경우가 있다.(예, getInstance처럼 서버가 연결되었던 흔적이 있으면 더는 서버를 새로 만들지 않는 것처럼)자바는? 자바는 단일 상속만 가능하다.- 다중상속은 불가함 - 다중상속의 단점을 보완하기 위해 인
Thread는 왜 사용? 한정된 자원을 여러 사람이 공유하거나 나누어야 하는 상황에서 각 메소드가 처리되는 시간이 다르기 때문에 지연이 발생할 수 있기 때문에 사용한다.콜백 메소드는? run() 메소드와 같이 start() 메소드로 호출 시 바로 실행되지 않고(대기하며
백엔드 코드 설계란? 눈에 보이지 않는 설계라 그리기 어려움. 각자의 위치와 순서, 클래스 배치에 따라 기능이 달라질 수 있어서 전체적인 그림을 볼 줄 아는 것이 중요하다.제네릭이란? 우리가 변수를 선언할때 변수 타입을 지정해주듯이, 제네릭은 객체(Object)에 타입
코딩에 정답은 없다? 설계하고자 하는 프로젝트에 따라 어떻게 변수를 선언할지, 클래스를 어떻게 나눌지, 어떤 메소드를 만들고 배치할지, 삭속을 받을지, 인터페이스를 활용할지 등 여러 고민을 하고 세워야 한다.
서비스 관점으로 코드를 설계? 프로그램의 핵심 기능, 요구사항에 집중하여 가독성, 유지보수, 재사용성 등을 고려하여 설계하는 것이다.제네릭을 다양하게 사용? 추후 JASON을 통한 데이터 교환 시 용이하게 사용된다.서비스관점List → 인스턴스화? 생성(생성자), 초기
상속 시? 부모클래스로 자식클래스의 변수,메소드를 사용할 수 있나?? Nope 자식이 새로 정의한 메소드로 실행됨(부모의 메소드는 쉐도우 메소드로 됨)인터페이스 Map의 활용? 여러 프로세스에서 key,value로 구성된 Map이 사용되고 있음.
객체지향 프로그래밍이란? 객체를 정의하고, 각자의 기능들을 구현하며, 필요에 따라 기능 간 객체 간 연결을 구현하는 것이다.static이란? 여러 객체를 생성했을 때에도 그 고유의 값을 유지할 수 있도록 해준다.객체지향 프로그래밍 : 객체를 정의하고, 각 객체가 제공하
private? 사용은 조금 불편하지만 유효성을 체크한다거나 안전하게 코드를 설계하는 것에 꼭 필요하니 친해지자.싱글톤 패턴? 여러 접근에도 공유 자원을 관리하여 일관성을 유지할 수 있다.상속 & 추상클래스 & 인터페이스 (for API 활용능력)상속A is a B 관
인스턴스화? 단순히 객체를 선언하고 생성하는 것이 아닌 상황에 따른 생성 위치의 선정과 그 방법 또한 다양하다.
Window 객체는? 최상위 객체로 모든 객체가 소속된 객체이다. html, css, JavsScript? 문서를 작성하고 문서를 꾸미고, 문서를 제어하는 그 과정의 이해가 필요하다.
웹구현시? 웹언어도 코드를 작성하며 개선을 하는 부분이 있다는 것은 같다. 중복되는 부분은 줄이고, 보다 직관적으로 유지보수하기 유리하게 코드를 작성하는 것이 필요하다.자바스크립트? 스크립트언어란 컴파일하지 않고 실행하는 프로그래밍 언어를 말한다.번들러 실습 - Par
비동기화란? 웹페이지의 일부가 따로 업데이트되는 화면전환 가능(예 : 네이버 쇼핑, 인기검색어 등)라우터는? 페이지를 연결해주어 이동시키는 중계의 역할을 한다.
코딩을 한다? 사용된 함수, 변수를 외우는 것이 아니라 그렇게 설계하게 된 배경과 흐름에 대해 배우고 익히는 것이 필요하다.페이지 구현? 구현을 하기 전 구상을 해야한다. 어떤 페이지를 어떤 이벤트를 넣어 완성할 것인지 구상부터 하자.
defer는 왜 사용하나? 자바와 달리 html은 순차적으로 진행된다. 임포트된 javascript가 DOM Tree가 완성된 후 진행될 수 있도록 지연시켜주기 위해 사용한다.
JavaScript와 Java의 자료형의 차이? js에는 undefined가 있고, 함수 또한 객체로 구분된다.java는 전역변수를 선언, 초기화하여 사용하지만? javascript는 전역변수 선언 없이 바로 사용 가능하다
자바스크립트에서 불변성이란?? 객체가 생성된 이후 그 상태를 변경할 수 없는 것을 의미한다. 원시형 타입은 불변성을 유지하고, 참조형 타입들은 변경이 가능하다.자바스크립트의 함수는 객체다?? 함수의 치환이 되면, 두 함수는 같은 주소번지를 갖게 된다.
자바스크립트 콜백함수는? 반드시 순서가 지켜져야 하는 경우 사용 가능하다.자바스크립트에서 forEach(ES5), Map(ES6)는? 배열에 저장된 값을 하나씩 꺼내볼 수 있다.
자바스크립트에서 구조분해 할당은? 배열이나 객체의 속성을 해체하여 그 초기화를 간단하게 진행할 수 있다.콜백함수는? 어떠한 조건(태스크)이 맞기 전에는 실행되지 않도록 하여 그 후 실행되도록 순서를 넣어줄 수 있다.
이벤트란? 마우스나 키보드를 조작할 때 기능이 실행되게 하는 행위를 말한다. 이벤트는 이벤트 핸들러(한번만), 리스너(여러번)를 통해 처리한다.
자바스크립트 언어는 동기적인 언어다? 하지만 비동기 처리를 할 경우가 생기기 때문에 비동기를 처리하는 방식을 익히는 것이 필요하다. 그렇지 않으면 여러 이슈가 발생할 수 있다.
자바스크립트에서 비동기를 처리한다(여러 작업을 동시에 처리한다)? 지연이나 이슈가 발생하지 않도록 하는 것을 말하며, 그 방식으로는 콜백, 프로토타입(promise), async&await, fetch 등이 있다.
JSON이란? 데이터를 문자열의 형태로 나타내기 위해 사용되며, 데이터를 주고 받을 때 많이 사용된다.여러 데이터 유형들 중 가독성이 좋다는 장점이 있다.
EJS?? JavaScript로 HTML 마크업을 생성할 수 있는 간단한 템플릿 언어(탬플릿 生)이다.
호이스팅 이슈란?지역변수인데 마치 전역변수처럼 끌어올려져서 호출이 되는 상황
관계지향형 데이터베이스(RDBMS)란? 데이터 간 관계에 초점을 두는 관계형 모델을 기반으로 많은 데이터를 다양한 처리를 할 수 있으며, 데이터 간의 관계를 강조한다.
우리가 사용하고 있는 오라클은? 관계형 데이터베이스 관리 시스템 중 하나이다. 쿼리 속도 향상? 데이터를 조회할 때 드는 비용을 줄이고, 속도를 높이기 위한 쿼리문 작성이 필요하다.
데이터 설계는? 설계에 대한 이해, 데이터의 관계에 대한 이해를 바탕으로 설계할 수 있다.일양의 차이? 실행계획을 통해 쿼리문을 실행하는 일의 양, 필요한 비용을 확인할 수 있다.
서브쿼리?? 쿼리 문 안의 select문을 말하며, 인라인뷰는 from절에 들어가고 하나의 테이블처럼 사용된다. 서브쿼리는 조건절에 들어가고, 변수(값)처럼 사용된다. 중첩 서브쿼리는 where문에 나타나며, 조건을 설정해줄 때 사용된다.
조인은? 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. 데이터베이스 모델링이란? 주어진 개념으로부터 데이터 모델을 구성하는 작업(테이블 설계, 컬럼, 타입, 관계 정의 등)
프로시저 왜 사용하나? select문 매번 쓰는 것 보다 빠르다, 파라미터 이용할 수 있다. 공유 가능하다. Join 잘하려면? 테이블에 대한 이해가 먼저 되어야 한다. 어떤 데이터를 조회하고자 하는지? 테이블 관계는 어떤지?
커서란? SQL문을 처리한 결과 집합을 가리키는 포인터이다.SELECT 문의 결과 집합을 처리하는데 사용된다. 트리거는? 특정한 조건에 작동하도록 설정하여 호출할 필요 없이 자동으로 실행된다.
MyBatis는?? 간단하게는 자바에서 DB를 쉽게 다룰 수 있도록 도와주는 오픈소스 프레임워크이다!!무슨 장점이 있나?? sql쿼리를 자바에서 직접 작성할 수도 있고, 가져올 수도 있다. SQL쿼리와 프로그래밍 코드를 분리하여 유지보수가 쉽다.
서블릿이란? 자바를 사용하여 웹을 만드는데 필요한 기술이다.
JSP와 서블릿은? Java 서버 측에서 사용하는 기술로, JSP는 HTML 태그 안에 Java 코드를 작성하여 서버에서 쉽게 Java 코드를 실행하는 방법이며, 서블릿은 Control 역할을 수행하여 요청 정보를 관리하고 응답을 관리합니다.
@WebServlet : 클래스 앞, 서블릿을 URL에 매핑할 때 사용 @RequestMapping : 메소드 앞 스프링에서는 제공
JSP/Servlet에서 정보를 가져오는 방식 중 post방식은 body 영역에 정보를 숨겨 URL에 값이 표시되지 않아 보안에 유리한 반면, get방식은 URL에 이름, 값이 포함되어 보안에 약하다. 상황에 따라 사용한다.
왜 서블릿을 상속받아야 하는 거지?? \- 서버에 접속하는 클라이언트를 위한 웹서비스를 제공해야 한다.
페이지 include? 다양한 페이지들의 위치 구성하는 방법/ 디렉티브 : (하나다), 지정한 페이지를 현재 위치에 포함시켜 함께 컴파일 하는 기능/액션태그 : 다른 jsp로 실행 흐름(컴파일한 파일)을 이동시켜 현재 위치에 포함 시키는 기능
왜? JSON 형식은 다양한 플랫폼 언어의 교환에 적합하다. 결국 다른 곳과 버무려지기 위해서 JSON 형식으로 데이터를 응답하는 것이 다양한 활용성을 갖는다.
첨부파일 있는 경우에는 get이 아닌 post 방식으로 처리 필요 왜? get은 url을 통해 표시하고 보내며, 보안 취약 / post는 body에 넣어 보낼 수 있기 때문에 !!!
✅서블릿(servlet)은 자바 기반으로 데이터를 동적으로 멀티스레드 개념을 통해 처리하기 위해 등장한 프로그램여기서 중요한 것은 멀티 스레드!!
✅ Hyper Text Transfer Protocol 서버와 클라이언트간의 TCP/IP 통신 위에서 메시지를 교환하기 위해 사용되는 프로토콜
✅ 특정 프레임워크나 라이브러리에 종속되지 않는 단순하고 순수한 자바클래스(Plain Old Java Object)순수성, 원자성, 다른 이종간의 결합에서 다양하게 사용할 수 있는 장점이 있음.
스프링은? 프레임워크이다. 라이브러리와 다르게 프레임워크는 제어권을 갖는다. 클래스(빈) 관리에 대한 제어권을 갖는다.IoC컨테이너를 갖는다(제어의 역전이 일어난다. 책임을 분리한다.) DI를 지원한다 -> 개발자가 각 기능들을 꺼내어 사용하도록 지원한다.
제어권이 스프링 컨테이너에 넘어가며, 객체(Bean🫛)의 생명주기를 전담하게 됨. 컴포넌트 간 직접 연결을 하는 것이 아니라 스프링 컨테이너에서 의존성을 주입받아 사용한다.
스프링과 기존 코드와의 차이를 분석하며, 스프링이 갖고 있는 핵심원리에 대해 학습하는 시간을 가졌음. 제어가 역전된다는 것, 의존성을 주입받아 사용하는 것에 대해 조금이나마 이해가 될 수 있었음.
자바소스 : com.example.demo스프링부트 스타터 : 의존관계 처리 + 의존전이까지 자동화!(연관있는 패키지 자동연결) @Configuration - 클래스 앞에 붙여서 Application Context 컴테이너에서 서버기동시 스캔 및 이른 생성
POJO 1~3/Spring 실습을 통해 변화하는 코드에 대해 다시 한 번 복습 & 카카오 인증을 통한 사용자 정보 가져오는 실습 진행
의존성 상속관계(전이)도 스타터에선 자동으로 정리해줌.!@Controller이용 시 페이지로 리턴이 나오기 때문에 값을 전달할 때 Model 클래스가 필요! 왜 RestController때는? 이미 json형식으로 화면에 바로 출력을 하니까,
쿠키를 이용한다? - 페이지끼리(싱글페이지) 정보를 공유할 때(forward방식) 이용하는 방법 중 하나 - 예 : 로그인 후 화면을 전환할 때, 로그인된 정보가 PC(로컬)에 저장되어 공유될 수 있도록 한다.
비동기처리와 로그인 정보 쿠키에 기억하기
메소드 이름이 페이지 이름이 됨. 화면 직접 처리 시 사용Model 클래스와 함께 사용@RequestMapping + @ Controller -> WebServlet임! \[mime type] : 아래의 경우 사용(페이지 출력 아닌 모든 경우) <- Model 사
✅ 스프링 프로젝트에서 설정해야할 의존성을 사전에 조합하여 제공된다. 즉, 의존성 설정을 보다 쉽게 할 수 있다. 의존성 상속관계(전이)도 스타터에선 자동으로 정리해줌.starter버전과 boot버전은 맞추어 줘야 한다!
✅ Spring AOP (Aspect-Oriented Programming) 는 공통 관심사를 분리하여 관리하는 프로그래밍 접근방법이다.(관점지향프로그래밍 지원 기술) 메소드 안의 기능을 핵심기능, 부가기능으로 나누었을 때, 부가기능을 공통된 하나의 장소에 모아서 관리
스프링은 WebMVC패턴을 지원한다. - @RestController : 둘의 분리를 도와주는 어노테이션 -> return : String temp = g.toJson(XXXList) @RequestParam - React 사용 시 필요!
✅ 값을 표현하는데 사용되는 새로운 script 언어로 jsp의 기본문법을 보완하는 역할(즉, 보다 쉽게 값을 받아 출력할 수 있도록 해주는 표현어)✅ 값을 표현하는데 사용되는 새로운 script 언어로 jsp의 기본문법을 보완하는 역할(즉, 보다 쉽게 값을 받아 출력
Client가 서버에 요청을 하면, 스프링 DispatcherServlet이 요청을 가로챈다. 요청을 가로챈 DispatcherServlet은 HandlerMapping 에게 어떤 컨트롤러에게 요청을 위임하면 좋을지 물어본다.
클라우드 컴퓨팅? >하나의 컴퓨터에 가상머신을 쌓아 OS 별 앱을 실행했지만 OS까지 올려지며 과부하되는 한계! >따라서 컨테이너 어떤 요소가 제공되는지 따라 서비스 방식 달라짐 에 따른 가상의 컴퓨팅화를 통해 더 큰 서비스를 더 적은 인력, 자원으로 이용할 수 있음
- ## 로드밸런싱? - 트래픽이 몰릴 때 나눠서 분산해주는 역할을 해줄 수 있음. - 현재 svr1, svr2는 같은 내용을 공유하도록 설계해 두었음. - svr3 서버 접속하여 was-server2로 이름 변경
- 네트워킹 기반 가상 컴퓨터, 스토리지, 네트워크 인프라 등 다양한 서비스를 제공하고 있어 필요한 서비스로 조합하여 사용 가능하다 . 장점 ? 저렴한 비용, 속도 및 민첩성, 데이터센터 운영 및 유지 비용 감소
프라이빗 서브넷의 경우, NAT 게이트웨이 통해 나갈 수 있음. 서버의 경우, 사용자가 직접 접근할 일이 없기 때문에 프라이빗 서브넷에 위치함. 로드밸런서 사용하여 svr1, svr2 트래픽 관리 컨테이너가 있는 경우, 하이퍼바이저에 비해 경량이고, 배포하고 공유하기
jenkins는 뭘까?? 앞서 말한 것처럼, 개발자가 수동으로 해오던 빌드, 푸쉬, 배포를 자동으로 할 수 있도록 지원하는 도구이다.
- ### 프로젝트 설계 - 프론트 : 리액트(with 리덕스) - 백엔드 : SpringBoot - 서버 : 파이어베이스 - 시큐리티 : 스프링 시큐리티
권한부여(User, teacher, manager, admin)권한 별 페이지 접근 가능 페이지 설정메소드 \- webSecurityCustomizer() : WebSecurityCustomizer => Spring Security에게 정적 리소스에 대한 요청을 무
사이트 접근자가 누구인지 시스템에 알기 위해서 필요특정 리소스 접근, 사용 보장을 위해 반드시 로그인 과정이 필요SecurityFilterChain? 로그인 화면, 임시 비번 등 주도권을 스프링이 가져감 -> 인터셉트하는 것 필요
Spring Security가 클라이언트 설정과 서비스를 통해 구글 서버와 통신하고, 사용자 정보를 가져와서 인증 및 권한을 부여합니다. 이렇게 간단한 설정으로 안전하고 효율적인 구글 로그인을 구현할 수 있습니다.
JPA란? 자바 어플리케이션에서 관계형 데이터베이스를 다루기 위한 자바 영속성 프레임워크
✅ 자바 어플리케이션에서 관계형 데이터베이스를 다루기 위한 자바 영속성 프레임워크로 persistence 계층이다. JPA(Java Persistence API)는 \[ORM]을 위해 Java에서 지원하는 표준 API다 (인터페이스, 추상클래스의 집합)
### 동기와 비동기? - 동기적인 방식은 작업이 순차적으로 실행되며, 한 작업이 끝날 때까지 다음 작업이 시작되지 않음. - 비동기적인 방식은 작업이 병렬적으로 실행되며, 한 작업의 완료 여부와 상관없이 다음 작업이 시작됨.
ajax는 복잡하고 세밀한 설정 필요, 상태변화감지, CORS 자동처리 못 하는 등 세세한 설정이 필요하다. >반면, fetch는 Promise 사용하여 더 간결하게 사용가능, CORS 자동처리되는 특성이 있다. 상황에 맞게 사용한다.
비동기처리란? ✅ 사용자가 웹페이지를 보는 동안에도 백그라운드에서 데이터를 주고 받을 수 있는 기술
리액트(React)는 Facebook에서 개발한 오픈 소스 JavaScript 라이브러리로, 사용자 인터페이스(UI)를 구축하기 위한 목적으로 만들어짐. 주로 단일 페이지 애플리케이션(SPA)의 개발에 활용되며, 컴포넌트 기반 아키텍처를 토대로 한다
✅ JavaScript를 확장한 XML 형식의 표현 방법, 기술을 분리하지 않고 섞어서 쓰는 컴포넌트!
최상위에서부터 props로 변수, 함수, 핸들함수 등을 보낼 수 있지만 깊이가 깊어지면 이동하는 것이 많아진다. 그러니 리덕스를 써보자
리액트는 싱글페이지 어플리케이션리액트 vs 바닐라js변경된 부분만 다시 그림 vs 변경으로 인해 엘리먼트 다시 그림(새로운 객체 생성)변경되는 것을 알기 위해 계속 비교를 해야 함!
useEffectHook - 없을 때->매번, 빈 값->1회, [특정배열]->그 배열 바뀔 때 - 의존성배열, 요청에 대한 결과가 매번 달라지도록 코딩 전개 가능해짐 - useEffect 뒤 빈 값을 둔다? 위험하다. 원치않는 사이드이팩트가 일어날 수 있다. 뭔
- ## 파이어베이스 확인 - 구글인증 등 firebase 사용 예정인 것 등록되어있는지 확인 필요(Authentication) - 스토리지 생성 & 폴더 생성 & 파일업로드 가능 but, 이미지 효과를 넣는 것 불가 -> 클라우드너리
구조분해할당을 통해 prop 전달
RealTime Database? NoSQL 클라우드 데이터베이스 실시간으로 동기화