1.axios가 아닌 fetch를 사용할 경우 
promise 관련 문제가 생길 경우 .then을 한번 더 사용해줘야 했는데
이는 .json으로 파싱을 하는 경우에도 프로미스로 넘어가기 때문인 것 같다.


2.promise 데이터를 사용할 때 async로 감싸진 상태에서는 promise로 넘어가기 때문에 let a = await data 방식으로 받아서 풀어줘야 한다.
(data는 fetch로 받은 부분을 import한 것이다)


3.promise를 처리하기 위해서는 풀어줘야 하는데
components 자체에 처리할 수 없기 때문에
useEffect에 넣어서 처리하는 것 같다.
아래와 같이 할 경우 페이지네이션 버튼 클릭 시
변경된 nowPage를 감지한 다음 geData라는 함수를 통해
가공된 페이지네이션 데이터를 가져올 수 있고
이를 datas라는 state에 할당해 mapping할 수 있다.

useEffect(() => {
const getFetchData async () => {
     const fetchData = await getData()
     setDatas(fetchData)
        }
    getFetchData();
},[nowPage]);



4.클린 코드를 위해서는 네이밍, 주석, 배치, 흐름제어(좌변수,우상수 / if의 첫번째는 부정보다는 긍정 넣기), 함수마다 한가지 목적을 위한 한가지 기능만 하기 등을 지켜야 한다.

클린 코드가 아닐 경우 코드 검사(code inspection)를 통해 수정하는데
아래와 같은 단계를 통해 검사를 진행한다.

1-공정하고 올바른 피드백을 위한 팀 지정(작성자, 중재/진행자, 낭송자, 기록자) 
2-작성자의 목적 설명을 통한 코드 이해
3-중재자가 만든 체크리스트를 통한 코드 검사 및 오류 기록
4-오류 및 개선점들에 대한 피드백 적용
5-결과 확인 및 추가 진행 또는 종료 선언

 

이러한 코드 검사를 통해 문제식별, 품질향상, 오류방지 등의 장점이 있지만
장시간이 걸릴 수 있고 인원 등 추가적 리소스가 소모되며 
피드백에 대한 불만족 등을 통해 갈등이 생길 수 있다는 단점이 있다.


5.시큐어 코딩(Secure Coding)은 이름처럼 보안에 신경쓰는 코딩으로

이전 http & network에서 다뤘듯 

SQL 인젝션, 하이재킹, 파라미터 조작, 무작위 공격, JWT 토큰 생성 key 단순화 등으로 개인정보가 탈취될 수 있는데

https 등의 방식 뿐 아니라 검증 작업을 추가하거나 
유효성 검사, 결과값 노출되지 않게 하기, 추가적 보안 절차 이용,
생성 키는 추측 가능하지 않은 복잡한 방식으로 하며 주기적 초기화 등 
잠재적인 보안 약점을 제거하는 방식으로 해결할 수 있다.





(1).백준 4084 Viva la Diferencia는 
각 숫자를 다음 숫자와의 차이(절댓값)로 변환시켜
모든 숫자가 같아지는 변환 횟수를 묻는 문제였다.

while문으로 a,b,c,d가 일치하는지를 확인한 다음
일치하지 않은 경우 count를 하나씩 증가시키며
temp로 지정된 a,b,c,d의 차이를 a,b,c,d에 저장해 처리헀다.

temp를 만들었으면서도
a = Math.abs(a-b)처럼 처리해버려서 수치가 잘못 나왔는데
다행히 while문 동작확인을 위해 pythontutor를 돌리던 중이었기 때문에
오답처리 되지 않고 해결할 수 있었다.

값이 변하는 경우(최대공약수 나머지정리 등)를 처리할 떄는
temp값의 저장 여부와 temp 사용을 잘 체크해야겠다.

let input = `1 3 5 9
4 3 2 1
1 1 1 1
0 0 0 0`.split('\n')

let result = []
for(let i = 0 ; i < input.length-1 ; i++){
    let [a,b,c,d] = input[i].split(' ').map(Number)
    let count = 0
    while(a!==b||b!==c||c!==d){
        count++
        let [tempA,tempB,tempC,tempD] = [a,b,c,d]
        a = Math.abs(tempA-tempB)
        b = Math.abs(tempB-tempC)
        c = Math.abs(tempC-tempD)
        d = Math.abs(tempD-tempA)
    }
    result.push(count)
}
console.log(result.join('\n'))

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

[취업준비일지] - 72  (0) 2022.12.31
[취업준비일지] - 71  (0) 2022.12.30
[취업준비일지] - 69  (0) 2022.12.28
[취업준비일지] - 68  (0) 2022.12.27
[취업준비일지] - 67  (0) 2022.12.26

+ Recent posts