본문 바로가기

전체 글196

Pull Request 004 - 맨날 까먹는 초기 Git 세팅 새롭게 프로젝트를 시작할 때마다 Git 세팅을 맨날 까먹어서 정리해놓는다. 앞으로는 까먹어도 이 글을 참고할 수 있도록 하자. Git에 등록하기(git init) 아마 이 글을 읽는 분들이 어이가 없을 수도 있지만 나는 맨날 까먹는다. 오늘도 초기 파일을 푸시하려다 '왜 안되지' 이러고 있었다. 인텔리제이로 프로젝트를 켰던, 아니면 터미널에서 프로젝트 디렉토리에 들어갔던, 일단 Git에 등록 좀 하자... Github Repository와 연동하기(git remote add) 오늘은 그래도 이 작업은 안까먹었는데, 다음에는 혹시 모르니까 기록한다. git remote add main (repository 주소) 사용자 정보 등록하기(git config) 로그인 방식 안된지가 3년이 됐는데, 아직도 까먹고.. 2023. 10. 24.
Pull Request 003 - 스프링 부트 버전과 자바 버전의 불일치 아니 무슨 시작부터 에러가... 아마 많은 분들이 start.spring.io에서 스프링 프로젝트를 만들 것이라고 생각된다. 나 역시 마찬가지로 해당 서비스를 이용했다. Spring Boot 버전을 3.1.5로 세팅하고, 이것저것 메타 데이터를 설정한 뒤, 여러 의존성을 추가하고 자바 버전을 11로 설정한 뒤 프로젝트를 생성했다. 프로젝트를 인텔리제이로 켜자마자 다음과 같은 오류 메시지를 맞이할 수 있었다. 🚫 A problem occurred configuring root project 'groomingzone'. Could not resolve all files for configuration ':classpath'. Could not resolve org.springframework.boot:spr.. 2023. 10. 24.
4장. 구조적 프로그래밍 구조적 프로그래밍은 다익스트라에 의해 발견되었다. 증명 모든 프로그램은 단순하더라도 너무 많은 세부사항을 담고있다. 아주 작은 세부사항이라도 간과하면, 프로그램이 동작하는 것처럼 보이더라도 예상 외의 오류가 발생한다. 다익스트라는 증명이라는 수학적 원리를 적용해 이 문제를 해결하고자 했다. 프로그래머는 입증된 구조를 이용하고, 이 구조를 코드와 결합시켜 코드가 올바르다는 사실을 스스로 증명하게 되는 방식이었다. 다익스트라는 증명의 방식을 사용하기 위해서는 단순한 알고리즘에 대해 기본적인 증명을 작성할 수 있는 기법을 먼저 보여줘야 했다. 그러나 연구 과정에서, goto문이 모듈의 재귀적 분해를 방해한다는 사실을 발견했다. 모듈을 분해할 수 없다면, 합리적 증명의 필수 기법인 분할 정복을 사용할 수 없다... 2023. 10. 23.
3장. 함수 어떤 프로그램이든 가장 기본적인 단위는 함수다. 작게 만들어라! 함수를 만드는 첫 번째 규칙은 '작게'다. 두 번째 규칙은 '더 작게'다. 각 함수는 하나의 이야기를 명백하게 표현해야한다. - 블록과 들여쓰기 중첩 구조가 생길만큼 함수가 커져서는 안된다. 그래야 함수는 읽고 이해하기 쉬워진다. 한가지만 해라! 함수는 한 가지를 해야한다. 그 한가지를 잘 해야 한다. 그 한 가지만을 해야한다. 그럼 한 가지는 무엇인가? 여기에서 한 가지는 지정된 함수 이름 아래에서 추상화 수준이 하나인 것을 의미한다. 즉, 함수 이름에서 여러 단계에 나눠진 일을 수행한다고 하더라도, 그 일이 하나의 추상화 수준에 해당한다면 이는 한 가지 일을 하는 것이다. 대신, 큰 덩어리로 이루어진 하나의 일을 더욱 잘게 쪼개 더 작은.. 2023. 10. 17.
3장. 패러다임 개요 구조적 프로그래밍 : 제어흐름의 직접적인 전환에 대해 규칙을 부과한다. - 에츠허르 비버 데이크스트라 무분별한 점프(goto 문장)는 프로그램 구조에 해롭다는 사실을 제시했다. 점프를 if / then / else와 do / while / until과 같이 익숙한 구조로 대체했다. 객체지향 프로그래밍 : 제어흐름의 간접적인 전환에 대해 규칙을 부과한다. - 올레 요한 달 & 크리스텐 니가드 알골 언어의 함수 호출 스택 프레임을 힙으로 옮기면, 함수 호출이 반환된 이후에도 함수에서 선언된 지역 변수가 오랫동안 유지될 수 있음을 발견했다. 이 함수가 클래스의 생성자가 되었다. 지역 변수는 인스턴스 변수가 되고, 중첩 함수는 메서드가 되었다. 함수 포인터를 특정 규칙에 따라 사용하는 과정을 통해 필연적으로 다.. 2023. 10. 17.
05. 연관관계 매핑 기초 연관관계 매핑 연관관계 매핑이란? 대부분의 엔티티는 다른 엔티티와 연관 관계를 가진다. 객체는 '참조'를 통해 연관관계를 맺는다. 예를 들어, 연관된 데이터를 조회할 때 Order객체는 필드의 Member객체를 참조(order.getMember())한다. 이를 객체 그래프 탐색이라 한다. 반면, 테이블은 '외래 키'를 통해 연관관계를 맺는다. 예를 들어, 연관된 데이터를 조회할 때 order 테이블은 member_id라는 외래 키를 통해 member테이블을 참조(SELECT * FROM ORDER O JOIN MEMBER M ON O.MEMBER_ID = M.ID)한다. 이를 조인이라 한다. 이렇게, 객체의 연관관계와 테이블의 연관관계는 차이를 보인다. 이 둘을 매핑하는 것을 연관관계 매핑이라 한다. 연.. 2023. 10. 12.
반응형