10시에 모이기로 했으나 한분이 시간을 착각해 10분쯤 대기
어제 프론트, 백엔드끼리 나눠서 작성했던 화면정의서, 테이블 명세서 등에 대한 이야기 후
프론트/백엔드끼리 각자 이슈 및 마일스톤, 프로젝트 관리할 예정으로 대기중 

프론트엔드끼리 모여서 client 폴더 내부에 CRA로 리액트를 생성한 후 리덕스, 스타일드컴포넌트를 설치한 기본 파일을 생성해 main -> dev -> client -> 개인브런치로 브런치를 나눴다.

브런치를 나눈 후 각자 컴포넌트는 헤더, 바디(메인 질문목록), 사이드바, 질문 내부, 질문 작성, 질문 수정 6가지를 대표적으로 생각했기 때문에 3개씩 나눠서 진행하기로 했다.

나는 헤더, 바디 , 사이드바를 맡았는데 리액트에서 표시하기 위해서는 아무래도 App.js를 건드릴 수 밖에 없어서 이 부분에 대한 충돌우려가 조금 생겼다.


진행을 하던 중 스택오버플로우와는 다르게 font-size가 너무 우락부락하게 큰 문제를 발견했다. 
아무리 크기를 줄여도 폰트의 크기가 줄어들지 않아 검색해보니 크롬에서 제공하는 폰트 사이즈는 10px이 최소라고 한다...
아니 그런데 스택오버플로우, 유튜브등에서 나오는 작은 글씨들은 그럼 어떻게 된거지?
왜 내 글자만 이렇게 무식하게 큰거야? 라고 생각하며 검색을 해보니 우회할 수 있는 방법은 있었다.

아래의 코드처럼 줄이고 우회해서 비교했는데 자세히 보니 뭔가가 이상하다..
스택오버플로우의 사이즈는 50px인데 내 블록의 사이즈는 25px인걸 보고 뭐가 문제인지 자세히 보니 실수로 확대를 200%이상 해서 내 글자만 커 보이는 것이었다..
새로운 기능은 발견할 수 있었지만 엄청난 헛수고였다.

transform: translate(-25%, -25%) scale(0.5);
display: inline-block;
width: 200vw;
overflow: hidden;

 

헤더, 바디 , 사이드바의 페이지 레이아웃만 잡아놓고 링크나 기능은 작동되지 않는 상태이며 CSS가 제대로 들어가지 않은 상태이기 때문에 디자인은 엉망진창인 것 같다. 내일은 아마 더미데이터가 조금이라도 있으면 기능을 추가해보고 싶지만 없기 때문에 리덕스 스토어등을 구현해둬야 할 것 같다.

 

또한 내일은 스택오버플로우 사이트에서 이미지들을 받아온 후 이미지들을 쪼개서 쓸 수 있는 방법에 대해 다시 한번 학습한 후 적용해보는 시간을 가져야 할 것 같다.

 

내일 할 일

1.리덕스 관련 준비

2.스택오버플로우 이미지파일 찾아서 사용할 수 있는 방법 찾아보기

3.JSON서버를 이용한 더미데이터 만든 후 적용

 

CT(1).어제 하다가 졸려서 자버린 피보나치 문제를 드디어 풀었다. 이론적으로는 1,1,0,1의 2x2배열의 제곱이 피보나치이기 때문에 제곱의 제곱을 반복해서 구하는 재귀를 통해 답을 구할 수 있었다. 입력값은 무려 100경까지의 제한이 있기 때문에 그냥 dp를 사용해서는 해결할 수 없었다(2천만정도만 가도 간당간당하다)
해결 방식은 아래와 같다.

let input = 1000000000000000000n //애초에 결과값을 초과하기 때문에 BigInt를 써야만 한다.(대부분의 dp문제는 BigInt가 일상이다..)

function cal(a,b) { // 배열의 곱을 게산해주는 calcaulate 함수 cal 
    return[ [(a[0][0]*b[0][0] + a[0][1]*b[1][0])%1000000007n , (a[0][0]*b[0][1] + a[0][1]*b[1][1])%1000000007n] ,
            [(a[1][0]*b[0][0] + a[1][1]*b[1][0])%1000000007n , (a[1][0]*b[0][1] + a[1][1]*b[1][1])%1000000007n]]
          
}//수의 제한 때문에 10^9+7로 나눈 나머지만 취했다.

let one = [[1n,1n],[1n,0n]] //one은 1일 때 결과로 기본 피보나치의 바탕이 된다.

function recultion(arr,n){ // 재귀함수
    if(n === 1n){ // n이 1이 되면 현재 배열 반환 (1이 될 때 까지 반복하라는 의미)
        return arr
    }

    if(n%2n){ // n제곱이 홀수일 경우 arr 하나를 제거해 n-1을 한 다음 제곱해 넣어준다.
        return cal(arr , recultion(cal(arr,arr),(n-1n)/2n))
    }
    else{
        return recultion(cal(arr,arr) , n/2n) //n제곱이 짝수일 경우 제곱해 넣어준다.
    }
}

console.log(String(recultion(one,input)[0][1])) //재귀함수로 받은 결과값의 (0,1)값(또는 (1,0)값)을 선택해 String(BigInt를 문자열로)을 씌워준다.

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

[Pre-Project 개발일지]-3(주말)  (0) 2022.08.27
[Pre-Project 개발일지]-2  (0) 2022.08.26
프로젝트 관리하기-2  (0) 2022.08.24
프로젝트 관리하기  (0) 2022.08.23
프로젝트 시작하기  (0) 2022.08.22

+ Recent posts