2시에 모인 회의에서는 경험적 차이 때문에
작업이 어떻게 진행돼야 하는지에 대해 진행되었고

일단 레이아웃을 정리하고 context api 분석하는 방향으로 진행하고 있기로 했다.

레이아웃을 정리하기 전 
다른 팀의 작업은 어떻게 진행되는지 1시간 가량 본 다음
어떤 구조로 작성되었는지에 대한 분석을 2시간 가량 진행하고
잠깐 쉬는시간을 가지고 한시간 가량 투두를 잡다가
저녁시간으로 인해 9시에 모이기로 하고 중단되었다.

라이브 쉐어 기능은 재미는 있지만 에러가 많아(commit, push가 제대로 되지 않음)
화면을 편하게 공유해서 볼 수 있다는 정도로 생각하고 분석했다.

처음에는 말도 안되게 어려울 거라고 생각했지만
분석하다보니 구상된 기능 자체가 같기 때문에 조금 더 수월하게 이해할 수 있었다.

11시 50분까지 진행한 후 20분간 휴식을 취하고 모이기로 했다.
대부분의 기능을 완성한 다음 3시에 마무리했고
내일 2~5시 세션 종료 후 마무리해보기로 했다.
오늘은 중간중간 휴식시간이 있어서 10시간밖에 하지 않았는데
확실히 어제보다 피로감이 덜했다.



1.절대경로 설정시 tsconfig.paths.json을 설정해줘야 한다.


2.depth 정리는 import가 필요없다고 한다.
export { getTodos, createTodo, updateTodo, deleteTodo } from './todo'


3.대칭키(Symmetric Key)는 동일한 키를 가지고 
암호화/복호화를 진행하는 알고리즘으로
간단하지만 키 전달에서 탈취당할 위험이 있다.
보안이 크게 중요하지 않은 경우 사용하거나
암호화한 방식으로 대칭키를 교환해 일시적으로 사용하는 방식으로 사용된다.


4.비대칭키(Asymmetric Key) 또는 공개키(Public Key) 암호화 방식은

(1)클라이언트에서 공개된 암호화 키(서버의 공개키)A로 암호화를 진행한 다음 서버로 보내고
(2)서버에서 보유한 비대칭 복호화 키A로 서버에서 해독해 확인한 다음
(3)서버에서 클라이언트의 공개키(클라이언트의 공개키)B로 암호화해 클라이언트로 보내고
(4)클라이언트에서 보유한 비대칭 복호화 키B로 클라이언트에서 해독해 확인한다.

 

여기에서 중요한 점은 각자 암호화와 복호화가 다르기 때문에
암호화를 할 수 있는 공개키는 말 그대로 "공개"한다는 것이다.
공개키로 암호화된 내용을 아무리 탈취하더라도 
받은 내용은 복호화를 할 수 있는 "본인"이 아니면 소용이 없다.

하지만 비대칭 방식 자체에서 나오는 암호화/복호화 과정의 복잡함이 단점이다.


5.하이브리드 키(Hybrid Key)방식은 대칭,비대칭 키를 이용하는 방식으로
대칭 키의 단점인 보안과 
비대칭 키의 단점인 비용(시간/데이터)을 해결하기 위해
해독에 오랜 시간이 걸리는 비대칭 키가 아닌
대칭키를 사용하기 위한 안전한 첫 소통 방식으로만 사용한다.

(1)클라이언트에서 공개된 암호화 키(서버의 공개키)로 "대칭키"를 암호화 한 다음 서버로 보내고
(2)서버에서 보유한 비대칭 복호화 키로 서버에서 "대칭키"를 해독해 확인한 다음
(3)서버에서 클라이언트에게 받은 해독된 "대칭키"를 사용해 암호화 한 내용을 전송하고
(4)클라이언트에서는 "대칭키"를 사용해 해독하고
(5)그 뒤 소통은 서로 "대칭키"를 보유했음을 전제로 "대칭키"로 암호화해서 보낸다.






(1).백준 5724 파인만은 변의 길이가 정해진 경우 
내부에 정사각형이 몇개가 들어갈 수 있는지를 구하는 문제였다. 
최적화?를 위해 같은 작업을 하지 않기를 원해 재귀를 사용했는데
콜스택이 자꾸 터져서 의아했다.

원인을 찾아보니 초기값을 [0]만 뒀는데 arr[0] = 0이기 때문에
return 체크에서 false가 되서 무한대로 들어가게 되어버린 것이었다.

일반 처리면 컴퓨터가 터져나갔곘지만
다행히 재귀작업이라 콜스택이 먼저 터져서 중단되었다.
arr=[0,1]로 바꾸니 정상 동작했다.

let input = `2
1
8
0`.split('\n')

let result = []
let arr = [0,1] 
for(let i = 0 ; i < input.length-1 ; i++){
    result.push(recurtion(input[i]))
}
function recurtion(num) {
    if(arr[num]){ // arr[0] = 0이기 때문에 
       return arr[num] 
    }
    arr[num] = num**2 + recurtion(num-1)
    return arr[num]
}

console.log(result.join('\n'))

+ Recent posts