분류 전체보기 378

[Mysql] MYSQLWorkbench tool을 이용하여 DB ERD 추출

현재 진행하고 있는 프로젝트 Github Repository README.md 파일에 DB Erd 사진을 첨부하려고 했는데, 직접 Erd를 만들어주는 것이 번거로워 Erd를 추출해 줄 수 있는 기능을 발견했습니다. Erd 추출 결과 1. mysql 접속(application.yml에 설정해준 mysql-server 경로에 접속) 2. Database -> Reverse Engineer 선택 3. Continue 버튼 클릭 4. Schema 선택 (Erd를 추출하고 싶은 Schema 선택) 4. Filtering을 거쳐 원하지 않는 테이블을 추출하지 않을 수 있습니다. (모든 테이블을 생성하고 삭제해도 무관) 5. 결과물 확인 이렇게 직접 Erd를 설계하지 않고, workbench를 이용해 Entity들..

DevOps 2023.05.28

[컴퓨터 구조] chapter3 정리 (컴퓨터 연산 : 덧셈, 뺄셈, 곱셈, 나눗셈)

컴퓨터 연산에서 배울 내용들은 정수 연산(사칙연산, 오버플로우), 부동소수점, 컴퓨터가 수를 표현하는 방법 및 산수 연산 알고리즘, 알고리즘을 수행하기 위해 하드웨어를 어떻게 설계해야 하는지에 대한 것입니다. 정수 덧셈 및 뺄셈 ex) 7 + 6 다음과 같이 올림수가 발생하면 오른쪽에서 왼쪽으로 옮겨줍니다. ex) 7 - 6 = 7 + (-6) MSB에서 Carry나 Borrow한 값을 무시해 주면 값이 1이 나옴을 확인할 수 있게 됩니다. 역부호화(부호화 + 1)한 후 덧셈을 하는 과정이라고 보면 될 것 같습니다. 오버플로(Overflow) 오버플로는 데이터를 저장하는데 사용되는 메모리 영역에 더 많은 데이터가 들어가려고 할 때 발생하는 상황을 말합니다. 주로 산술 연산이나 메모리 할당과정에서 발생하고..

CS 2023.05.22

[CS] 복잡도, 선형 자료 구조, 비선형 자료 구조

자료구조(data structure)는 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합을 말합니다. 대표적으로 스택, 큐, 힙, 리스트 등이 있습니다. 복잡도 시간 복잡도, 공간 복잡도 빅오 표기법(Big-O) 시간 복잡도란 "문제를 해결하는 데 걸리는 시간과 입력의 함수 관계"를 가리킵니다. 알고리즘 로직이 "얼마나 오랜 시간"이 걸리는지를 함수형식으로 표현해 주는 것을 빅오 표기법이라고 하고, 예시를 들어 입력 크기 n에 대해서 알고리즘을 해결하는 데 걸리는 시간이 O(n^3)이라고 하면, 다음과 같은 코드를 생각할 수 있습니다. int ans = 0; for(int i=1;i

CS 2023.05.20

[Spring] CORS(Cross-Origin Resource Sharing) 에러 해결

프로젝트에서 프론트 팀원분께서 api 연동을 하려는데 이러한 에러가 뜬다고 말씀해 주셨습니다. Access to XMLHttpRequest at 'http://ip주소/api/matches' from origin 'http://127.0.0.1:5173' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource 주어진 에러 메세지는 브라우저에서 발생한 CORS 관련 오류입니다. 서버에서 CORS 정책이 적절하게 구성되지 않은 경우에 클라이언트에서 요청한..

Java/Spring 2023.05.17

[Spring] Swagger3.0 버전 Authorize button 설정

인증(Authentication), 인가(Authorization)에 대해 설명드리겠습니다. 인증은 클라이언트 측에서 서버 측으로 요청한 사용자 정보가 올바른지 확인하는 과정입니다. (Login) 인가는 요청에 대한 권한이 있는지 판단하는 과정입니다. 만약 클라이언트의 요청에 대한 권한이 없다는 경우, HTTP 403(Forbidden) 상태 코드를 반환하게 됩니다. 클라이언트는 서버로부터 전달받은 토큰을 관리하며, Authorization Header에 Jwt 토큰을 담아 관리하게 됩니다. Postman과 같은 툴에서는 서버로 요청을 보낼 때, 매번 Bearer Token에 토큰 정보를 담아줘야 하는 불편함이 있습니다. 하지만, Swagger에서 Authorize 버튼에 관련한 설정을 활성화시킨다면 A..

Java/Spring 2023.05.12

[AWS] AWS Lightsail를 이용해서 Spring 프로젝트 배포

오늘은 프로젝트 배포에 대해서 알아보려고 합니다. EC2 프리티어 무료사용(750시간)을 예전에 사용했기에, LightSail 인스턴스에서 프로젝트를 배포해보려고 합니다. Amazon Lightsail이란 무엇인가? Amazon Lightsail은 가상 프라이빗 서버(VPS) 공급자로, 클라우드에서의 애플리케이션 구축 및 호스팅 솔루션이 필요한 개발자, 소규모 비즈니스, 학생 및 다른 사용자가 가장 손쉽게 AWS를 시작할 수 있는 방법입니다. Lightsail은 개발자에게 클라우드에서 웹사이트와 웹 애플리케이션을 배포하고 관리할 수 있는 컴퓨팅, 스토리지 및 네트워킹 용량 및 기능을 제공합니다. Lightsail에는 프로젝트를 빠르게 시작하는 데 필요한 모든 것(가상 머신, 컨테이너, 데이터베이스, CD..

DevOps/AWS 2023.05.12

[Spring] LocalDateTime 형식의 데이터를 @JsonFormat, @DateTimeFormat어노테이션을 적용하여 데이터 주고받기

팀플을 하던 도중 DB에서 데이터를 주고받는 경우 날짜 형식이 Array 형식인데, String으로 바꿀 수 없냐는 프론트측에서 질문을 받았습니다. 그래서 LocalDateTime을 String으로 어떻게 바꾸면 좋을지 생각하던 구글링 하던 도중 좋은 포스팅을 발견했습니다. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=varkiry05&logNo=221736856257 [spring] LocalDateTime 주고받기(Response, Request) 데이터베이스에서 날짜데이터를 로드할 때 날짜형식의 String 형태으로 구성하여 전달하는 경우가 있다. (... blog.naver.com Response에서는 클라이언트 측의 요..

Java/Spring 2023.05.10

[컴퓨터 구조] chapter2-3 정리 (동기화, 컴파일러, 어셈블러, 링커, 로더)

저번 포스팅에서는 MIPS 명령어에 따라 달라지는 주소 지정 방식을 설명하였습니다. 이번에는 동기화와 C언어의 번역계층에 대해 상세하게 다루어보고, 프로그램 번역과 실행 과정에서 중요한 역할을 하는 컴파일러, 어셈블러, 링커, 로더의 역할에 대해 설명드리려고 합니다. 동기화란 무엇인가? 태스크(작업)가 서로 독립적인 경우에는 병렬 처리가 쉽지만, 서로 협력해야 하는 경우가 있습니다. 협력은 일반적으로 다른 태스크들이 읽어야 하는 값을 어떠한 다른 태스크가 읽고 있음을 의미합니다. 태스크가 언제까지 쓰기를 마쳐야 다른 태스크들이 안전하게 데이터를 읽을 수 있는지 알려면 태스크 동기화가 필요합니다. "동기화"가 존재하지 않으면, 데이터 경쟁관계(data race)의 위험이 있습니다. 여기에서 데이터 경쟁관계..

CS 2023.05.04

벨만-포드(bellman-ford) 알고리즘

벨만 포드 알고리즘이란? 벨만 포드 알고리즘은 다익스트라 알고리즘과 다른 점이 하나 있습니다. 다익스트라 알고리즘은 임의의 한 정점에서 다른 정점까지 가는 최소 비용을 구하는 알고리즘입니다. 이때, 간선의 가중치는 양수입니다. 하지만, 벨만-포드 알고리즘은 다익스트라 알고리즘과 정의는 같지만, 간선의 가중치가 음수가 되는 경우도 있습니다. 다익스트라 알고리즘 모르시는 분들은 참고하실 수 있도록 해당 링크 남기겠습니다. https://daily1313.tistory.com/237 다익스트라(Dijkstra) 최단 경로 알고리즘 다익스트라 알고리즘이란 무엇인가? 음의 가중치가 없는 그래프의 한 정점(V)에서 모든 정점까지의 최단거리를 각각 구하는 알고리즘입니다. 기존에는 O(V^2)의 시간복잡도를 가졌으나,..

2023년 4월 회고록

벌써 한 학기 절반이 지나갔네요.. 진짜 눈 깜빡하면 하루가 지나가 있네요. 최근 시험기간이라서 회고록을 많이 못 썼는데 시험도 끝나고 여유가 조금 남아 회고록을 작성해보려고 합니다. 1. 객체지향의 사실과 오해 책을 읽고 학우들과 진행하는 Java "스터디" (코드 리뷰, 책을 읽고 자신의 생각 공유) 정말 영양가 있는 것 같다고 생각하고, Java 기초 개념에 대해 더욱 다질 수 있는 기회가 돼서 좋은 것 같습니다. 또한 한 주제에 대한 코드도 학우들 마다 가지각색이라서 "코드"를 바라보는 관점, 안목 또한 기를 수 있는 것 같습니다. 스터디를 주도해 준 학과 형에게 너무 고맙네요. 한 학기 동안 배워가고 얻어가는 게 많을 것 같아 기대가 되고, 기대치에 맞게 시간 투자도 많이 할 계획입니다. 2. ..

일상/회고록 2023.04.21