전체 글(35)
-
git push origin main시 에러(commit 내역 충돌)
글 제목 그대로 git push origin main 시 에러 즉, 로컬레포지토리에 커밋한 내역을 원격저장소에 올리다가 나는 에러이다. 에러 내역은 위와 같은데 쉽게 얘기 하자면 원격저장소에 있는 커밋내역과 지금 내가 작업한 로컬저장소의 커밋내역이 다르기 때문에 충돌로 인한 에러인 것이다. 위 에러내역에 대한 해결 방법은 가장 간단한 것은 "git push origin main —force"이다. —force를 사용해서 커밋할 경우 기존 repository의 commit 내역은 모두 삭제되고 내가 작업한 commit 내역들만 남기 때문에 개인프로젝트가 아닌이상 사용을 하는데 유의해야 한다. 만약 팀프로젝트에서 커밋내역 충돌난다고 —force를 사용하여 push할 경우 이전 팀원들이 커밋한 내역들이 모조리..
2022.03.14 -
스프링 컨테이너(Spring Container) 및 설정 파일
스프링 프레임워크의 동작 원리를 알기 위해서는 스프링 프레임워크 설정 파일들에 대한 이해가 필요하다. 스프링 프레임워크에 대해 알아보기 전에 서블릿 컨테이너에 대한 사전 이해가 있어야지 해당 내용을 이해하는 데 수월하다. 서블릿 컨테이너 관련된 포스팅을 참조하길 바란다. 이번 포스팅은 스프링 프레임워크 동작 원리를 이해하기 위한 스프링 설정 파일에 대한 포스팅이다. 우선 스프링 설정 파일의 가장 기본이 되는 파일은 web.xml, servlet-context.xml, applicationContext.xml 이다. web.xml (배포서술자) web.xml은 배포 서술자라고 하며 WAS(톰켓) 가동시 WEB-INF 하위에 있는 web.xml을 읽고, 웹 어플리케이션 설정을 구성한다. 스프링 프레임워크를 ..
2022.02.07 -
서블릿 컨테이너(Servlet Container) 요청 처리 과정
1) 사용자 요청이 들어오면 정적파일은 웹서버에서 처리한다. 동적파일이 필요한 경우 웹서버는 WAS 즉, 서블릿 컨테이너로 request를 보낸다. (Servlet Container or Web Container or WAS라고 한다) 2) 요청을 받은 Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다. 그리고 배치 서술자인 web.xml 또는 어노테이션을 통해서 요청한 URL에 맞는 서블릿을 찾는다. (MVC패턴에서 서블릿은 Controller이다) 3) 요청된 서블릿이 이전에 요청된 적이 없다면 해당 서블릿 객체를 생성하고 해당 서블릿의 init() 메소드를 호출하고 메모리에 로드시킨다. 만약, 이전에 생성한 적이 있다면 객체..
2022.02.03 -
[자바] JDK & JRE & JVM
자바 개발을 위해 필수적인 세 가지 요소에 대해 요약한 글이다. JDK는 자바 기반 소프트웨어를 개발하기 위한 도구들로 이뤄진 패키지 JRE는 자바 코드를 실행하기 위한 도구들로 구성된 패키지 JVM은 라이브 자바 프로그램 실행을 담당하는 실행 소프트웨어 시스템 JDK 자바 컴파일러(javac) 자바 런타임 환경(JRE) JRE 자바 클래스 라이브러리(Java Class Libraries) 자바 클래스 로더(Java Class Loader) 자바 가상 머신(Java Virual Machine) 런타임환경 소프트웨어 프로그램을 실행하기 위해서는 실행할 환경이 필요하다. 런타임 환경은 프로그램 실행을 위해 클래스 파일을 로드하고 메모리 및 기타 시스템 리소스에 대한 액세스를 확보한다. JRE는 자바코드를 받..
2022.01.11 -
[Git] Git Fork & Clone (+Upstream)
외부 저장소인 깃허브, 깃랩 등 다른 사람의 레포지토리를 가져오든 내 레포지토리를 로컬 PC로 가져오기 위해선 포크(Fork)와 클론(Clone)의 개념이 중요하다. 그러기에 두 개념에 대한 개념을 정리해봤다. Fork fork는 다른 사람의 Github 레포지토리에서 내가 어떤 부분을 수정하거나 추가 기능을 넣고 싶을 대 해당 레포지토리를 내 Github 레포지토리로 그대로 복제하는 기능이다. fork한 레포지토리는 원본 레포지토리와 연결되어 있기 때문에 원본 레포지토리에서 반영 받을 수 있다. 이때 fetch, pull의 과정이 필요하다. 이후 fork한 레포지토리 변경사항을 원본 레포지토리에 반영하고 싶을 경우엔 원본 레포지토리에 pull request를 보내야한다. pull request가 원본 ..
2022.01.10 -
[자바] Logback 구동 방식 및 classpath 설정
Logback 설정 정보 탐색 Logback은 프로그래밍 또는 XML이나 Groovy 포맷의 설정 스크립트 파일을 통해서 설정할 수 있다. Logback이 스스로 설정 정보를 탐색하는 우선순위는 다음과 같다. classpath에서 logback-test.xml 파일을 찾는다. classpath에서 logback.groovy 파일을 찾는다. classpath에서 logback.xml 파일을 찾는다. JDK의 service-provider loading facility (service loader)에 의해 com.qos.logback.classic.spi.Configuration 인터페이스의 구현체를 찾는다. 위 과정에서 성공한 경우가 없다면, logback은 콘솔에 출력하는 BasicConfigurator..
2022.01.08