코드 저장소

공부에는 끝이 없다!

전체 글 79

GIT 사용하기 - CLI를 이용한 Push

이전 정리에서 init명령어를 통해 Git을 사용할 위치를 지정하고, Add 명령어를 통해 수정한 파일을 등록하고, Commit을 통하여 분기점을 만드는 작업을 수행해 보았다. https://varcharc2k.tistory.com/51 GIT 사용하기 - CLI를 이용한 Commit Git으로 버전 관리 시작하기 - Commit과 Init Git 이용을 위해선 먼저 원하는 폴더를 지정해 주어야 한다. 내가 로컬의 어떤 경로에서 버전 관리를 할지 Git이 알게해준다고 생각하면 좋을 것이다. 이 varcharc2k.tistory.com 이번에는 이렇게 생성된 Commit을 GitHub로 올리고 다른 사람의 프로젝트는 받는 작업을 수행해 볼 것이다. 로컬 저장소와 원격 저장소 앞서 우리는 init 명령어를 ..

Git 2023.12.26

GIT 사용하기 - CLI를 이용한 Commit

Git으로 버전 관리 시작하기 - Commit과 Init Git 이용을 위해선 먼저 원하는 폴더를 지정해 주어야 한다. 내가 로컬의 어떤 경로에서 버전 관리를 할지 Git이 알게해준다고 생각하면 좋을 것이다. 이 기능을 init 명령으로 설정하게 되는데, 해당 폴더에서 Git 초기화를 해주는 것이다. Git 초기화를 하게 되면 .git이라는 숨겨진 폴더가 만들어지는데 이것이 로컬 저장소이다. 이 로컬 저장소에는 내가 만든 버전 정보, 원격 저장소 주소등이 저장되며 원격 저장소에서 로컬로 코드를 받아오게 되면 로컬 저장소가 자동으로 생성된다. 단, 주의 할 것은 하나의 폴더에 하나의 로컬 저장소만 유지해야한다. 예를 들어 WorkSpace라는 폴더 경로에 A라는 프로젝트를 시작했다고 가정해보자. 그러면 W..

Git 2023.12.25

버전관리와 Git - 환경 설정 하기

버전 관리란? 대학교때 조별 과제를 하다보면 서로 작업한 작업물을 하나로 합쳐 최종적인 결과물로 만들게 된다. 그런데 이 결과물이 합친다고 끝나는 것도 아니고 수정의 수정을 거듭하다보면 Final 사본이 무지막지하게 늘어나게 된다. 결국 파일 관리에 _최종본만 늘어나게 되고 나중에는 뭐가 진짜 최종본인지 알지도 못하는 그런 황당한 상황을 한번쯤 경험해 보을 것이다. 개발을 할때도 마찮가지다. 팀 프로젝트를 진행하다보면 나 혼자 작업하는 것이 아니기 때문에 서로의 로컬에서 진행한 작업물을 합쳐서 최종 프로젝트 작업물을 만들어야 한다. 그런데 코딩을 할때는 어떻게 작업물을 관리해야 하는가.. 서로의 로컬 PC에 있는 데이터가 알아서 연동 되는것도 아니고 하나의 프로젝트 파일로 USB로 돌려쓰자니 동시에 작업..

Git 2023.12.23

DATEPART와 spt_values를 이용한 날짜 계층구조 만들기

대시보드를 만들다가 차트에 날짜 기준을 잡을 일이 생겼다. PowerBI같은 곳에선 계층 구조로 전체 날짜에 대해서 계층 구조로 분기, 반기, 주차등 여러 정보들을 제공해 주는데 대시보드에서 비슷한 기능을 만들기 위해서 쿼리를 이용해서 전체 날짜에 대한 계층 구조를 만들 필요성이 생겼다. 날짜 다듬는거야 크게 어려운 것이 아니니 한번 만들어 봤는데 DATEPART와 spt_values를 처음으로 이용하게 되어 정리해보고자 한다. spt_values SQL Server의 master DB에는 spt_values라는 테이블이 존재한다. 이 테이블에는 특정 종류의 작업에 사용되는 많은 행이 포함되어 있다. 예를 들어 Type이 'P'인 것으로 검색해보면 0~2047의 숫자가 검색되는 것을 확인할 수 있다. 따..

DB/MSSQL 2023.12.21

MSSQL Suspect 모드 복구하기

팀 내부 프로젝트 도중 DB가 Suspect모드로 들어가는 현상을 보게 되었다. 인터넷에 검색을 해보니 드물게 나오는 상태라고 하는데 H/W 또는 O/S 상에서 실수로 인해 발생하는 현상이라고 한다. 내 경우는 트랜젝션 도중에 워크스테이션 전원이 나갔는데 그게 원인이 아닌가 싶다. Suspect 모드의 발생 예시 해당 시스템이 지정된 파일을 찾을 수 없는 경우 데이터 또는 로그가 존재하는 장치를 열 수 없는 경우 SQL 서버가 트렌젝션 중에 다운되거나 재시작 되었을때, 트렌젝션 로그가 손상된 경우 안티바이러스 프로그램 등으로 인해 SQL 서버가 특정 데이터나 로그파일에 접근할 수 없을 때 결론적으로 SQL서버가 데이터에 접근이 되지 않는 경우 발생하는 모드라고 생각하면 되겠다. 문제가 발생하면 처음에는 ..

DB/MSSQL 2023.12.19

(JAVA) 백준 문제 풀이 - 우선순위 큐 단계 - 11279번 최대 힙 (실버 2)

이번 문제는 최대 힙을 이용하여 배열에서 가장 높은 값을 출력하고 제거하는 프로그램을 만드는 것이다. 문제를 풀기위해서는 먼저 최대 힙에 대해서 알고 있어야 하는데, 자바에서는 우선순위 큐라는 것을 이용하여 비슷한 형태를 만들 수 있다. 최대 힙에 대해서 궁금하다면 잘 정리된 글이 있으니 참고하기 바란다. https://innovation123.tistory.com/111 [JAVA/자료구조] 힙(Heap), 최소 힙(Min Heap), 최대 힙(Max Heap) 힙(Heap) 힙은 완전 이진트리 형태로 최대, 최솟값을 빠르게 찾아내는데 유용한 자료구조이다. 힙은 중복값을 허용한다. 부모-자식 간 (레벨 별) 정렬은 보장하고, 형제간의 정렬은 보장하지 않아 innovation123.tistory.com ..

(JAVA) 백준 문제 풀이 - 분할 정복 단계 - 1629번 곱셈 (실버 1)

이번 문제는 A,B,C 세가지 수가 주어지면 A를 B번 곱한 수를 C로 나눈 나머지를 출력하는 문제이다. 입력의 최대값은 2,147,483,647로 큰 값을 Long의 범위 안에서 어떻게 처리 할지가 핵심이었다. 그럼 어떻게 풀지 살펴보자. 수학적 지식이 필요하다 이번 문제를 풀기 위해선 수학적 지식이 조금 필요한데, 첫째는 지수 법칙이고 두번째는 모듈러 성질이다. 1. 지수 법칙 2. 모듈러 성질 이 2가지를 이용하여서 문제를 해결한다. 그럼 위의 공식과 분할 정복이 문제와 무슨 연관이 있느냐? 위 문제를 그냥 A*B %C로 푸는 경우 입력값이 최대인 2,147,483,647인 경우 Long의 범위를 넘어가게 된다. 따라서 지수를 보다 작은 값으로 나눠 줄 필요가 있는데, 이를 위하여 분할 정복과 지수..

(JAVA)백준 문제 풀이 - 분할 정복 단계 - 1780번 종이의 개수 (실버2)

이번 문제는 2차원 행렬에 담긴 데이터를 판단하여 0,1,-1로 분류하여 같지 않으면 9등분 하고 맞으면 갯수를 구하는 문제이다. 문제 자체가 크게 어렵지 않아 금방 풀어낼 수 있었다. 그럼 어떻게 풀었는지 살펴보자. 분할 정복이란? 분할 정복이란 큰 문제를 둘 이상의 부분 문제로 나눈 뒤 각 문제에 대한 답을 계산하고, 각 부분 문제의 답으로부터 전체의 답을 계산하는 알고리즘이다. 언뜻 봐서는 재귀호출과 비슷해 보이지만, 일반 재귀 호출과 분할 정복의 가장 큰 차이는 일반 재귀 호출은 문제를 한 조각과 나머지 전체로 나눈다면 분할 정복은 문제를 거의 같은 크기의 부분 문제로 나눈다는 점이다. 분할 정복은 3가지 과정으로 이루어 지는데 1. 문제를 더 작은 문제로 분할하는 과정 2. 각 문제에 대한 답을..

Spring/Spring 기본(Spring 강의 정리) Spring 핵심 원리 - 프로젝트 환경 설정

프로젝트 사전 준비 JAVA 17 IDE : IntelliJ 2022.3.2 커뮤니티 스프링 부트 스타터 사이트로 프로젝트 생성 https://start.spring.io/ Dependencies는 아무것도 없이 사용 필요한 기능을 셋팅하고 하단 왼쪽의 Generate 버튼을 누르면 압축 파일로 다운로드 가능 다운로드 한 프로젝트를 IDE에서 오픈하면 됨 오픈 할때는 build.gradle 파일을 열어 Open as Project로 열어준다. 추가적으로 File > Settings로 들어가서 build시 IntellJ를 이용하도록 설정을 변경해 주면 준비 완료. Git 연동 1. 레포지토리 생성 우선 Git Hub에서 신규 레포지토리를 생성한다. 생성 후 연동을 위하여 Https 주소를 복사해 놓으면 편..

SpringBoot 2023.11.24

(Spring 강의 정리) Spring 핵심 원리 - 객체 지향 설계와 스프링

인프런의 블랙 프라이데이 할인을 맞아 Spring의 기본 개념을 다시 잡기 위해 강의를 구매하였다. 강의를 들으면서 다시 한번 기본 개념을 학습하고 나만의 방식으로 정리해보고자 한다. Spring 프레임워크 와 Spring Boot 1. Spring 프레임워크 핵심 기술을 기반으로 한 여러가지 기술들을 모아놓은 것 셋팅만 잘된다면 편리하게 사용 할 수 있지만 이 셋팅 자체에 많은 시간이 들어간다. 2. Spring Boot 스프링을 편리하게 사용할 수 있도록 지원한다. 앞서 설명했듯이 Spring 프레임워크만 사용하는 경우 셋팅 자체에 많은 시간을 할애해야 하기 때문에 최근에는 필수적으로 사용 되는 편 빌드나 라이브러리 버전 등 편의성에 초점이 맞추어져 있다. 다만, 편의성에 초점이 맞춰진 만큼 Spri..