본문 바로가기

분류 전체보기

[백엔드TIL] mysql db 연결 시 주요 에러 (71일차) ❓ org/mariadb/jdbc/Driver : Unsupported major.minor version 52.0 👉 Java와 MariaDB 버전 맞추기 (버전 확인하는 곳) ❓ Driver com.mysql.cj.jdbc.Driver claims to not accept jdbcUrl 👉 해결1) application.properties에서 설정한 url에 오타 없는지 확인 👉 해결2) localhost의 경우 아래와 같이 설정해야 함 spring.datasource.url=jdbc:mysql://localhost.com:3306/DB명 ❓ No session repository could be auto-configured, check your configuration (session store t.. 더보기
[백엔드TIL] react , typecript 에대한 개념 학습(70일차) tyepscript 도입을 위해 공부를 해보았다. typeScript의 주요 특징 : 정적 타입: TypeScript는 변수, 함수, 클래스 등에 명시적인 타입을 지정할 수 있다. 이는 컴파일 시점에 오류를 잡을 수 있으며, 코드의 가독성과 유지보수성을 향상시킨다. ECMAScript 호환: TypeScript는 JavaScript의 상위 집합이므로, 모든 JavaScript 코드가 TypeScript로 유효하다. 따라서 기존 JavaScript 코드를 그대로 사용하면서 타입 시스템을 점진적으로 도입할 수 있다. 클래스 기반 객체지향 프로그래밍: TypeScript는 인터페이스, 추상 클래스, 상속 등의 객체지향 프로그래밍 개념을 지원하여 코드의 재사용성과 구조화를 촉진한다. 타입 추론: TypeScri.. 더보기
[React] react, next.js 사용시 쿼리스트링을 감춰야하는 경우 URL 에서 쿼리스트링을 감출 필요가 있을 경우, 아래와 같이 Next.js Router 의 push 함수의 두번째 파라미터 as (maskes url for the browser) 를 사용해서 쿼리스트링을 감출 수 있습니다. import { useRouter } from 'next/router' ... const router = useRouter() router.push( { pathname: '/sample', query: { testQuery: '12345' } }, '/sample' // 브라우저에 표시됨 ) 더보기
[백엔드TIL] 세션과 토큰그리고 인증과 인가 (69일차) 인증과 인가 세션기반 인가와 토큰기반 인가에 대해 알아보기 이전에 먼저, 인증과 인가가 무엇인지 부터 알아야할 필요가 있다. 인증과 인가를 같거나 비슷한 개념이라고 생각하는 사람들이 많을텐데, 엄밀하게는 서로 다른 개념이다. 인증과 인가는 요약하자면 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법이다. 인증 (Authentication) 인증은 쉽게 말하자면, 로그인 이다. 클라이언트가 자기자신이라고 주장하고 있는 사용자가 맞는지를 검증하는 과정이다. 예를 들어 로그인 화면에서 내가 유저 아이디를 USER1 로 입력하고 패스워드를 입력해 제출하면, 서버에서는 내가 진짜로 USER1 이라는 유저가 맞는지 확인한다. 인가 (Authorization) 인가는 인증 작업 이후에 행해지는 작업으.. 더보기
[react] typescript input 박스 의 텍스트가수정안되는경우 문제의 원인은 input 및 textarea 엘리먼트의 value 속성에 reviewModel?.title 및 reviewModel?.content를 사용하는데, reviewModel이 null 또는 undefined인 경우 이 값들이 초기값으로 설정되어 있기 때문입니다. 이로 인해 이러한 입력 필드를 수정하거나 지울 수 없습니다. 문제를 해결하려면 input 및 textarea 엘리먼트의 value 속성을 title 및 content 상태 변수에 연결해야 합니다. 즉, value 속성에 직접 title 및 content 변수를 할당해야 합니다. 아래는 수정된 코드입니다: jsxCopy code setTitle(e.target.value)} /> setContent(e.target.value)} rows.. 더보기
[백엔드TIL] 시간복잡도에 대한 이해 (68일차) CPU 시간자원이란?컴퓨터는 한정된 CPU를 여러 프로세스가 나누어서 사용한다고 했는데요. 이것을 효율적으로 나누어서 사용하기 위해 CPU 스케쥴러를 통해 시간자원을 관리합니다.네트워크에서 타임아웃(Timeout)은 장치나 프로그램이 연결을 중단하기 전까지의 응답 시간을 의미합니다.- 빅오표기법 - 시간복잡도 함수에서 상대적으로 **불필요한 연산을 제거**하여 알고리즘의 분석을 조금 더 간편하게 할 목적으로 시간복잡도를 표기하는 방법입니다. - Big-O(빅-오) ⇒ 상한 점근** - Big-Ω(빅-오메가) ⇒ 하한 점근** - Big-θ(빅-세타) ⇒ 그 둘의 평균**1. O(1)- **입력값의 크기가 아무리 커져도 즉시 출력값을 얻어낼 수 있다.** - **예를 들어 arr의 길이가 100만이라도, .. 더보기
[백엔드WIL] Redis ( Remote Dictionary Server ) (14주차) Redis ( Remote Dictionary Server ) 오픈소스로 key-value 기반의 인-메모리 데이터 저장소이다. 따라서 key-value 기반이라 쿼리를 날릴 필요 없이 결과를 바로 가져올 수 있고 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 매우 빠르다. (DB를 조회하는 것보다 빠르다.) 유명가수의 티케팅을 웹에서 한다고 가정해보자. 티켓팅이 열리는 순간 엄청난 양의 데이터가 DB에 쓰기 위해 몰리게 된다. 이때 DB 에러가 발생하여 결제가 되지 않는다면 엄청난 손해를 발생할 수 있다. 이때 해결책으로 레디스의 캐시를 사용한다. 하나씩 로직을 보자. Look aside cache(조회 로직)을 보면, 클라이언트가 웹서버에 요청을 하면 웹서버는 먼저 .. 더보기
[백엔드TIL] 공간복잡도에 대한 이해 (67일차) 프로그램 복잡도 프로그램 계산 복잡도는 다음 두 가지 척도로 표현될 수 있음 시간 복잡도: 얼마나 빠르게 실행되는지 공간 복잡도: 얼마나 많은 저장 공간이 필요한지 좋은 프로그램은 실행 시간도 짧고, 저장 공간도 적게 쓰는 프로그램 (=알고리즘) 통상 둘 다를 만족시키기는 어려움 시간과 공간은 반비례적 경향이 있음 최근 대용량 시스템이 보편화되면서, 공간 복잡도보다는 시간 복잡도가 우선 그래서! 알고리즘은 시간 복잡도가 중심 하지만, 공간 복잡도는 기본이기 때문에 기본이 안되서 떨어지는 경우도 많습니다! 공간 복잡도와 시간 복잡도 모두 빅 오 표기법으로 표현한다. = O(n) 1) O(n) 공간 복잡도 예시 1️⃣ n! 팩토리얼 구하기 재귀 함수를 통해서 구현하므로 변수 n에 따라서 변수 n이 n개가 만.. 더보기
[백엔드TIL] Https, SSL에 대한 이해 (66일차) HTTPS 개요 Hypertext Transfer Protocol Secure 의 약자 HTTP 는 전송되는 요청/응답 정보가 기본적으로 암호화 되지않아서 보안정보 도난의 위험이 있음 이걸 해결하기 위해 **SSL(보안 소켓 계층)**을 사용 SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 보안정보를 주고받을때 해당 정보가 도난당하는 것을 막아줌 Secure Sockets Layer 의 약자 Netscape 사에서 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜 (규칙) 대칭키와 비대칭키 기반으로 사용함 SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서입니다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 .. 더보기
[react]번외 react router-pathname 대한 개념 이해 컴포넌트를 다른 페이지에 포함할 때, router.pathname이 어떻게 작동하는지에 대한 이해가 필요합니다. router.pathname은 현재 페이지의 경로를 나타내는 속성입니다. 컴포넌트 내에서 이 값을 확인할 때, 컴포넌트가 렌더링된 현재 페이지의 경로를 나타냅니다. 그러나 이 컴포넌트가 어떤 부모 컴포넌트에 의해 렌더링되었는지에는 영향을 주지 않습니다. 따라서 컴포넌트를 다른 페이지에 포함했을 때, 컴포넌트 내부의 router.pathname은 해당 컴포넌트가 렌더링된 현재 페이지의 경로를 나타냅니다. 즉, 부모 페이지의 경로가 아닌 현재 페이지의 경로입니다. 이는 React 컴포넌트의 특성으로, 컴포넌트는 그 자체로 독립적인 상태와 렌더링을 가지며, 부모 컴포넌트의 상태나 경로와는 무관하게 .. 더보기