본문 바로가기

전체 글

(380)
웹 프로그래밍 큰그림 참고: https://shlee0882.tistory.com/107 Web이란? HTTP방식으로 데이터를 주고받는 것 HTTP에서 HT, Hyper Text란? link와 link로 문서간 연결된 것, 링크 기반으로 데이터에 접속하는 것. 브라우저: 클라이언트 쪽의 HTTP를 처리할 수 있는 소프트웨어(Firefox, Chrome... ) 웹서버: 서버쪽의 HTTP를 처리할 수 있는 소프트웨어(아파치, 톰켓, nginx, weblogic... ). 그림으로 나타내면 아래와 같이 서버안에 웹서버가 있는것임. 웹서버라는 소프트웨어가 없고 그냥 서버만 있다면 HTTP를 처리할 수 없습니다. 물론 웹서버는 HTTP를 처리하는 것 말고도 다양한 역할을 합니다. 정적 웹서비스 같은 경우 클라이언트로부터 reques..
빌드란? 출처: https://e2e2e2.tistory.com/29 https://nanbuja.com/entry/%EB%B9%8C%EB%93%9C-%EB%B0%B0%ED%8F%AC-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EC%9D%98-%EA%B0%9C%EB%85%90-%EC%B0%A8%EC%9D%B4%EC%A0%90-Build-Deploy-Complie 빌드란? 컴파일된 소스코드를 실행될 수 있는 소프트웨어 형태로 변환(실행할 수 있는 독립적인 구조로 변환)하는 과정, 혹은 그 결과 라이프 사이클이란 이미 정해져 있는 프로젝트 빌드 순서임. (실행될 수 있는 소프트웨어로 변환하는 과정, 결과가 빌드이고 서버에 배포하는 과정, 결과가 빌드이니 배포의 의미는 결국 서버에 반영하여 실행될 수 있는 소프..
빌드관리툴(Maven, Gradle...)이란? 출처: https://www.youtube.com/watch?v=3Jp9kGDb01g&t=187s 빌드툴의 가장 대표적인 기능은? 프로젝트에서 필요한 파일들을 자동으로 인식하게 해줌 필요한 라이브러리 가져와주고 build의 대상이 되는 프로젝트의 LifeCycle까지 관리해줌. Maven을 예전에는 많이 사용했지만(legacy project) 지금은 Gradle을 사용. 요즘의 빌드툴은 (라이브러리간의)의존관계를 관리해줌. 따라서 내가 프로젝트를 생성할때 특정 라이브러리가 받기로 했는데 에 가보면 무수히 많은 내가 선택하지도 않은 라이브러리가 함께 딸려오게 되는데 이것이 Gradle과 같은 빌드툴이 내가 선택한 라이브러리와 의존관계에 있는 라이브러리를 모두 가져오기 때문에 그런것임. 그래서 결국은 Spr..
라이브러리 의존성 추가 했는데도 import가 되지 않는 경우 (구체적인 예로 import javax.persistence.EntityManager;) 다른 라이브러리는 다 의존성이 추가되어 정상적으로 import되는데 유독 어느 하나의 라이브러리만 import 되지 않았다. 해결하려고 찾아보니 아래와 같은 말이 있었다. 그래서 를 아래와 같이 로 javax -> jakarta로 변경하니 해결되었다. 즉 특정 버전(Jakarta EE9)이 추가됨에따라 패키지 명이 변할 수 있으니 이점 참고 하여 import 문제시 생각해 보자!
Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect' 인용: https://velog.io/@baekgom/please-set-javax.persistence.jdbc.url-hibernate.connection.url-or-hibernate.dialect 스프링부트에서 DB연결시 이와 같은 문구(org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unable to create requested service [or..
어댑터 패턴 어댑터 패턴이란 매우 간단한 패턴이다. 기존에 있는(adaptee)것을 클라이언트 자신이 원하는 방식으로 사용해 주기 위해서 자신이 원하는 방식을 인터페이스로 만들어주고 새로운 클래스를 하나 만들어 그 클래스가 자신이 원하는 인터페이스를 implement해주고 기존에 있는 것을 has-a로 넣어 주는 것이 어댑터 패턴이다. 클라이언트가 adaptee(A)를 자기가 원하는 B타입으로 사용할 수 있게 해주는 것입니다. 여기서 이미 제공되어 있는것(A)의 메서드 이름과 매개변수가 필요한 것(B)의 그것과 다를 수 있다. 이 다른것을 맞추어 주기 위해 어댑터 패턴을 쓰는 것임. 아… 이제 이해가 간다. 이미 있는 것을 자신이 원하는 방식대로 쓸 수 있게 해주기 위해서 자신이 원하는 방식을 인터페이스로 여기고 구..
내부 클래스의 접근제어의 의미를 예시와 함께 내부클래스의 접근 권한은 내부클래스를 다른 클래스가 사용할 때나 의미가 있음. 예를들어 아래 그림의 왼쪽은 BST클래스 파일이고 그 안에 TreeNode라는 내부클래스를 두었다. 오른쪽은 BST_Inorder_Iterator클래스이고 이 클래스에서는 BST클래스의 내부클래스인 TreeNode클래스를 사용한다. 이렇게 되었을때 타클래스인 BST_Inorder_Iterator클래스에서 다른 클래스의 내부클래스인 TreeNode에 접근할 때에는 BST.TreeNode와 같이 점찍고 접근해야 하는 것이다. 그리고 만약 내부 클래스인 TreeNode의 접근제한을 private으로 해 놓는다면 TreeNode의 외부클래스인 BST에서는 아무문제가 없겠지만 타클래스인 BST_Inorder_Iterator에서는 내부 ..
언제 내부 클래스를 써야 적당한가? 내부 클래스 복습:내부 클래스는 언제 만드는 것이 적절한가? 내부 클래스가 매우 간단하게 이루어지고 외부클래스에서만 내부클래스가 될 클래스를 사용할 경우(캡슐화, 은닉성을 얻을 수 있음). 즉 다른 클래스에서는 내부클래스가 될 클래스를 사용하지 않을때. 내부 클래스는 외부 클래스의 맴버변수처럼 사용된다. 따라서 내부 클래스에서 외부클래스의 맴버변수에 자유롭게 접근할 수 있다. 하지만 외부클래스에서는 내부클래스의 객체를 만들어야 내부클래스의 변수에 접근해야 한다. 그리고 이건 당연한 것이다. 왜? 내부 클래스는 클래스니까! 클래스안의 멤버에 접근하려면 당연히 객체를 생성하는게 맞는 거니까! 내부클래스를 사용함으로써 코드의 복잡성을 줄일수 있음. 왜? 클래스 하나를 통째로 없애는 것이므로. 없애서 다른 하나..