1.파이어베이스 사용은

1.앱 등록으로 생성
2.Firebase SDK추가 (firebase.js에 제공 키 붙여넣기)
3.authentication을 통해 firebase 인증방법 설정
4.firebase/compat/auth import 후 firebase를 firebase/compat/app에서 import한 다음
 const app = initializeApp(firebaseConfig)부분을 firebase.initializeApp(firebaseConfig)로 변경해
 firebase 세팅을 넣어준 다음 export firebase로 내보낸다.


2.동기적 처리를 위해 회원가입 함수에 async를 지정하고 await를 붙여 지정할 변수명에 firebase.auth().createUserWithEmailAndPassword(Email, Password)를 할당하여 동기적으로 처리한다.

createdUser.user.updateProfile은 이름만 봐도 프로필 변경임을 알 수는 있지만 파이어베이스에 즉각 처리가 된다는 부분이 의아한데
이 부분은 강의를 다 듣고 직접 만들어볼 때 확인해야 하는 부분인 것 같다.

의외로 method들이 직관적이기 때문에 전반적인 method들만 다 확인해두면 사용은 간단할 것 같다.


3.button에 disabled과 state를 통해 axios등의 시간이 걸리는 작업을 하는 경우 대기 중 여러번의 요청을 보내는 문제를 막을 수 있다.


4.error.code를 통해 특정 에러마다 출력되는 문거를 조건문으로 나눠줄 수 있으며 jsx 내부에 {}로 추가해 문구 출력여부를 결정할 수 있다.

추가적으로 useEffect와 setTimeout을 이용하면 특정 문구가 설정될 경우 카운트다운을 통해 다시 사라지게 할 수 있는데 이 방식은 setErrorMsg를 이용해 초기화하기 때문에 ErrorMsg가 5초간격으로 무한반복될 것 같다는 단점이 있다.



5.X-frame-Option은 프레임 표시를 제어하는 헤더로 click jacking이라는 공격을 막는 목적으로 사용된다.
모든 웹서버에서 설정하는 것이 바람직하다고 한다.


6.X-XSS-Protection은 크로스 사이트 스크립팅의 대책으로 XSS보호기능을 제어하는 헤더다. XSS필터기능을 1/0으로 On/Off할 수 있다.


7.DNT는 Do Not Trac의 줄임말로 트래킹 동의와 거부를 0(동의), 1(거부)로 표시한다. 일반적으로는 1이 긍정의 의미이지만 DNT자체가 거부하기 위한 기능이기 때문에 작동이 true(1)임을 기억해야 한다.


8.HTTP는 평문이기 때문에 누구나 몰래 볼 수 있고 대상자인 것 처럼 위장할 수 있으며 내용을 변조할 수 있다.

이 중 누구나 볼 수 있는 것을 막기 위한 대책 중 하나로 
통신암호화와 콘텐츠 암호화가 사용되는데 
여기서 통신암호화가 우리가 일반적으로 사용하는 HTTPS이다.

HTTPS는 HTTP + secure 또는 HTTP + SSL이라고 불리고 있는데
가장 큰 이유는 SSL 등의 프로토콜을 이용해 통신 경로를 확립하고 
안전이 확인 된 경우 통신을 시작해 암호화한다.

반대로 콘텐츠 암호화는 누구나 볼 수 있게 방치하지만
내용물 자체를 암호화해서 사용한다.
하지만 암호화/복호화를 위한 쌍이 있어야 하며
고정된 경우에는 해독될 경우 보안에 위험이 있을 수 있어 
웹 서비스 등에서만 이용된다.


9.비트마스크는 0과 1을 통해 집합등을 표현하는 방식이다.
재귀를 다룰 때 얼핏 비슷한 방식으로 데이터를 처리했는데
현재 값을 포함시키거나 포함시키지 않고 넘어가는 방식으로 
모든 부분집합을 구하는 방식이었다 (1/0 방식 부분집합 재귀처리)

이론 자체는 친숙하게 다가왔지만
AND, OR, NOTR까지는 모두 아는 방식이지만
XOR(^)은 서로 일치하지 않을 경우 참이고
SHIFT는 해당 방향으로 옮겨 반환이라고 하는데
실제 사용은 언제나 1<<N 형태로 사용하는 것을 볼 수 있었다.

예제로 1을 >> 처리하는 내용은 없고 
0을 추가하거나 제거하는 모습만 봤기 때문에 실제 사용법은 확인하기 애매했다.

또한 삽입, 삭제, 조회를 할 수 있는데
삽입은 OR, 삭제는 AND와 NOT, 조회는 AND 연산자를 활용했다.

비트마스크 문제를 풀어보려고 했으나 
골드1이라서 그런지 생각보다는 어려웠다.
매일 각 부분마다 투자하는 시간이 다르기 때문에 다음 기회 또는
알고리즘을 해결하는 시점에 해결하기로 했다.


(1).백준 2953 나는 요리사다는 각 요리사들이 받은 점수들을 합해 가장 큰 점수를 받은 요리사를 찾는 문제였다.
문자열로 제공된 데이터를 map을 사용해 정리하고 reduce로 합친 다음
구조분해할당으로 Math.max값을 구하고 그 값을 indexOf로 찾아 위치를 표기했다.

let input = `5 4 4 5
5 4 4 4
5 5 4 4
5 5 5 4
4 4 4 5`.split('\n')
for(let i = 0 ; i < input.length ; i++){
    input[i] = input[i].split(' ').map(Number).reduce((a,b) => a+b)
}

console.log(input.indexOf(Math.max(...input))+1, Math.max(...input))

 

'회고' 카테고리의 다른 글

[취업준비일지] - 18  (0) 2022.11.07
[취업준비일지] - 17  (1) 2022.11.06
[취업준비일지] - 15  (0) 2022.11.04
[취업준비일지] - 14  (0) 2022.11.03
[취업준비일지] - 13  (0) 2022.11.02

+ Recent posts