분류 전체보기
-
[Spring Framework] QueryDsl 적용하기 (with Maven, IntelliJ) - 소스코드에 generated 폴더 없이 사용하기Back End/Spring Framework 2022. 8. 28. 22:32
pom.xml (Maven) 빌드파일에 QClass 들을 포함시킵니다. com.mysema.maven apt-maven-plugin 1.1.3 process target/generated-sources/java com.querydsl.apt.jpa.JPAAnnotationProcessor IntelliJ 빌드파일에 포함된 QClass 들을 소스코드에서 인식할 수 있게 합니다. 그리고 maven install 을 하고 작업하면 끝! 경로 : File - Project Structure - Modules - Sources # Reference [JPA] QueryDSL Q Class 생성 안될 때 pom.xml에 querydsl관련 의존성과, 플러그인을 설정했는데 Q Class가 생성이 되질 않았다.File..
-
[Spring Framework] 다국어 처리 설정 (message properties)Back End/Spring Framework 2022. 8. 15. 15:25
Spring Boot 에서 다국어 처리하기 Spring Boot 에서는 별다른 설정 없이 messages로 시작하는 properties들을 MessageSource로 읽어 Bundle로 인식할 수 있다. Spring Framework 에서 다국어 처리하기 Bean 설정하기 아래 두가지 방법 중 하나로 설정 하면 된다. 1. XML 파일로 설정 2. Java Config 로 설정 @Bean public ReloadableResourceBundleMessageSource messageSource(){ ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setB..
-
[Spring Framework] Maven 라이브러리 연동(ClassNotFoundException: javax.servlet.jsp.jstl.core.Config)Back End/Spring Framework 2022. 6. 9. 19:36
이걸 뭐라 제목을 지어야할 지 아직 모르겠다. ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 클래스를 찾을 수 없다는 에러인데 보통 pom.xml 에 의존성을 추가하고 라이브러리 jar 파일을 다운받아 /WEB-INF/lib 에 추가하라고 한다. 인텔리제이에서 pom.xml 에 의존성을 추가하고 maven refresh 를 하니 External Libraries 에 떡하니 아래와 같이 다운로드 되어있지 않은가...! Gradle 처럼 Maven 도 추가하면 IDE가 알아서 해주는구나! 하고 다시 실행했는데 여전히 ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 를 내뱉었다. 뭔가 링크가 안..
-
[Java] 바이트코드 조작하기 (JavaAgent, JVM, Jacoco)프로그래밍 언어/Java 2022. 6. 6. 21:50
해당 포스팅은 백기선님의 [더 자바, 코드를 조작하는 다양한 방법] 을 토대로 작성된 글입니다. 코드 커버리지는 어떻게 측정할까? (Jacoco 동작원리) Jacoco 를 사용해 보신 적이 있으신가? 소스코드에 대한 테스트 케이스가 얼마나 작성되어 코드를 얼마나 커버했는지 측정하는 라이브러리인데 아래와 같이 if 문 실행까지 체크가 가능하다. 어떻게 플러그인하나를 추가했다고 우리가 작성한 코드를 인식하고 그에 대한 테스트가 이루어졌는지 알 수 있을까? 심지어 우리 코드(.java 파일,.class 파일)는 변경이 되지 않았는데 말이다! 이는 바로 JVM 힙영역(메모리)에 클래스정보가 올라가기전에 클래스로드 시점에 인터셉트 하여 바이트코드를 조작하기 때문이다. 때문에 프로그램을 실행하면서 컴파일한 .cla..
-
[AWS] 우리는 왜 CloudFront 와 로드밸런서에 SSL(TLS)을 달아야하는가?Back End/AWS 2022. 6. 5. 22:44
Prerequisite - Network Sniffing HTTPS 는 네트워크 스니핑을 막기 위해 만들어졌다. 네트워크 스니핑(Network Sniffing)이란 네트워크(전선)를 타고 흐르는 데이터(패킷)들을 탈취하는 것을 말한다. 스니핑을 하기 위해 네트워크 스니퍼라는 응용프로그램을 만드는데 이러한 프로그램으로 해당 컴퓨터로 들어오고 나가는 패킷을 가질 수 있다. 라우터도 작은 컴퓨터니 라우터에 설치할 수도 있을 것이고, 해당 라우터에 연결된 PC에 설치할 수도 있다. Prerequisite - HTTPS HTTPS 와 HTTP 는 네트워크(전선)를 타고 흐르는 데이터를 암호화 하느냐 안하느냐의 차이다. 물론 HTTPS 또한 SSL MITM 라는 기법으로 스니핑 할 수 있다. (가짜인증서로 데이터..
-
[PHP] CURL 은 리다이렉트 응답이 오면 재요청하지 않는다. (feat. CURL 관련함수 정리)Back End/etc 2022. 6. 5. 22:00
PHP 는 개발자마다 코드 구현 패턴이 너무 달라 너무~~~~ 별로다 😭😭😭 CURL 은 요청에 대한 응답이 리다이렉트로 돌아와도 재요청하지 않는다. CURL 요청에 대한 response가 비어있는 상태로 들어오는 현상을 발견해서 이리저리 로그를 찍어봤더니 CURL 요청은 서버에서 리다이렉트를 던져주면 재요청을 하지 않더라...그래 뭐... 그럴 수 있지... 그게 디폴트일 수 있지.. 리다이렉트 응답에 대해 Location 헤더를 따르도록 내가 일일이 코딩해야되? 다행이도 그건 아니었다. CURLOPT_FOLLOWLOCATION 라는 옵션을 setopt() 에서 설정해주면 된다. # CURL 관련 함수 curl_init : 세션 초기화, 핸들값 리턴 curl_setopt : 옵션 세팅 (옵션값에 대해서..
-
[디자인 패턴] 방문자 패턴(Visitor Pattern)Computer Basis/디자인패턴 및 설계이론 2022. 6. 4. 16:45
# 방문자 패턴 (Vistor Pattern) SOP 달성, 버그 가능성, 코드 응집성 등의 이유로 기존코드를 건드리지 않고 새로운 기능을 추가하는 방법을 제안하는 패턴 # 방문자 패턴을 적용하기 전 아래와 같이 동일한 웹 페이지가 기기별로 다르게 렌더링 되어야 한다는 요청사항이 생겼다고 하자. 요청사항에 따라, 본래는 view 패키지의 View 의 집합들 뿐이었으나 이제 device 패키지가 추가되었다. 방문자 패턴을 적용하지 않는다면 아래와 같이 코딩을 할 수도 있다. //View Interface public interface View { // render() -> render(Device device) 로 변경 void render(Device device); } //HomeView Class p..
-
[Java] JVM 이 무엇인지, 어떻게 작동하는지 대충 훑어보자! (feat. 클래스로더)프로그래밍 언어/Java 2022. 5. 29. 17:44
싱글톤패턴 중 Initialization on demand holder idiom라는 구현 기법이 있는데 해당 기법은 JVM 의 클래스로더 매커니즘을 이용한 방식이라 한다. 스프링을 사용할 때도 종종 ClassNotFoundException 이 터질 때, 검색을 해보면 클래스로더라는 키워드가 종종 등장한다. 리플렉션도 클래스로드라는 키워드가 항상 같이 끼워팔리고 있다. 그렇다 나는 미뤄왔다... 습득해야되지만 귀찮다는 이유로... 이제는 지식의 부채의 상환일이 다가 온 것이다... ㅠ_ㅠ (하지만 대충 볼거야) # 용어정리 1. JVM (Java Virtual Machine) 개요 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환하여 실행하는 역할을 한다. (자바 바이트 코드를 어떻게 실..