오늘은 프로젝트 작업을 시작했다.
일단 전반적으로 문제가 심각했던 구조를 조금 더 나눴고
최대한 재사용해야 한다고 잘못 이해해서 
Components 폴더에서 Layout, Container에 다 구겨넣었던 것들을 풀고
div 태그에 맞게 수정하는 작업을 진행했다.

책 표지 또한 문제가 있어보였는데 
위시리스트는 옆에 있더 내용이 아래로 빠지고
책 내용 요약 또한 사라졌기 때문에 줄어든 티가 확 났지만
홈(책 찾아보기)페이지는 사실상 변화가 거의 없기 때문에
반응형이 예쁘게 들어가지 않는 것 같다.

또한 책 표지 대신 로고를 임시로 넣었는데
아무래도 로고는 가로형태기 때문에 더 못나 보인 감도 있다.

표지를 고르기 위해 알라딘을 들어갔는데
의외로 알라딘은 반응형이 아니었으며 책별로 높이도 제각각이라
통제가 되지 않는 느낌이 강했다.

이미지의 핵심은 가로 152px로 
예전 특이했던 책인 별별 한국사름 검색해보니 
확실히 가로형 책은 높이가 반토막나있는 모습을 볼 수 있었다.

react-icons를 통해 몇가지 아이콘도 필요한 상황인데
react-icons을 써보지 않기도 헀고 
핵심적인 기능이 아니기 때문에 일단은 미루고 
꼬여있는 styledComponents를 정리하는 작업을 계속했다.

작업 도중 생각난건데
로그인 상태가 아닌데 위시리스트 추가 버튼을 클릭한다면
LocalStorage에 추가한 다음 로그인 페이지로 날려버리고
로그인을 할 경우 LocalStorage에서
tempWish 데이터 존재 여부를 조회하고
존재할 경우 위시리스트에 추가 후 tempWish 삭제를 하면 좋을 것 같다.
물론 이건 addToMine과 같은 기능에도 적용할 수 있는데
그렇게 한다면 아래와 같은 객체형태로 관리해도 괜찮을 것 같다.
tempAddData = {addToMine : isbn, addToCart : isbn}



1.SQL Injection은 SQL 쿼리문에 특정 명령을 삽입시켜 실행하는 방식으로
조건에 추가로 ';'를 추가해 종료되었다고 인식하게 한 다음
그 뒤에 원하는 명령을 삽입하는 방식이다.

공격자는 이런 방식을 통해 데이터를 조회,생성,수정,삭제 등 
마음대로 이용할 수 있기 때문에 필수적으로 방지해야 한다.

방지 방식으로는 ';'등의 종료 인식 또는 '='과 같은 특수기호등을 체크해
입력 자체를 거부하는 방식과 특수 기호를 필터링하는 방식이 있으며
사전적 예방으로는 명령어를 추측할 수 없게 에러 메세지 등을 감추는 것이다.

그렇기 때문에 사용자에게 문제점을 알리는 throw Error 등을 사용하고 싶다면
에러메세지를 그대로 보내는 것이 아닌 상황별 문구를 제공해야 한다.





(1).백준 1009 분산처리는 최대 99의 999,999제곱까지 갈 수 있기 때문에
BigInt를 사용하는 느낌의 데이터였다.
하지만 저렇게 긴 숫자는 문자열로 치더라도 너무 길기 때문에 '%'를 사용해 처리했다.

let input = `5
1 6
10 7
6 2
7 100
9 635`.split('\n')

let result = []
for(let i = 1 ; i < input.length ; i++){
    let [a,b] = input[i].split(' ').map(Number)
    let num = 1
    for(let j = 0 ; j < b ; j++){
        num = (num *a)%10
    }
    if(num === 0){
        result.push(10)
    }
    else{
        result.push(num)
    }
}

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

 

+ Recent posts