본문 바로가기

DEV131

[Thymeleaf] th:fragment을 사용한 레이아웃 레이아웃 사용 이유만약 100개의 페이지에 똑같은 header와 footer가 들어갈 경우 각각의 HTML마다 똑같은 header와 footer를 추가하는 것은 상당히 비효율적이고 유지보수면에서도 좋지 않다. 그래서 반복되는 화면이 있어 HTML 코드를 줄일 때 레이아웃을 적용하면 상당히 효과적이다.    템플릿 조각템플릿 조각은 공통으로 적용할 부분을 조각조각으로 만들어 필요한 공통의 부분들에 가져다 쓰는 방식이다. 가 있는 태그는 다른 곳에 포함되는 코드 조각으로 코드 조각을 사용할 때는 조각 표현식 ~{...}를 사용한다. Controller@Controller@RequestMapping("/template")public class TemplateController { @GetMapping(.. 2024. 12. 3.
[SQL] Group By, Having, Order By GROUP BYGROUP BY 란 데이터를 특정 컬럼 기준으로 그룹화시키는 명령어이다.예를 들어, 연령별 평균 매출액을 조회하는 쿼리를 작성할 때 연령별로 그룹화하여 결과를 정렬할 수 있다. 다중으로 그룹 나누기- 그룹을 나누고, 다시 그 그룹 안에서 세부그룹으로 나눌 수 있음- GROUP BY COL1, COL2이라고 쿼리를 작성하면 COL1안에서 다시 COL2로 나누기 가능- 위의 방법을 예시로 들자면, 연령별 성별 평균 매출액을 추출하는 쿼리에서 연령별로 먼저 그룹을 나누고, 그다음 연령별로 먼저 그룹이 나눠진 그룹에서 또 성별로 그룹을 나눌 수 있음 집계함수의 필요- 각 그룹에 대한 연산 결과(합, 평균, 개수 등)를 산출하기 위해서는 집계함수가 필요- GROUP BY 절에 있는 컬럼은 반드시 S.. 2024. 11. 28.
[JAVA] 올바르지 않은 난수 취약점(Math.random) 해결 방법 Math클래스의 random함수 취약점JAVA의 내장 클래스인 Math클래스의 random 함수는 0.0 ~ 1 사이의 더블(double) 유형의 숫자를 반환하는 메서드이다.보통 0부터 99 사이의 난수를 추출하기 위해 아래와 같이 코드로 구현할 수 있다.(int)(Math.random() * 100); 하지만, Math클래스의 random 함수의 사용은 예상가능한 난수를 사용하는 것으로 시스템 보안에 약점을 유발한다고 한다. Math클래스의 random 함수는 시드값을 설정할 수 없고, 사용하는 알고리즘이 밝혀지면 취약해질 수 있기 때문이다. random이라는 단어의 뜻처럼 무작위로 생성하는 것이 아니라 난수처럼 보이게 하기 위해 어떠한 알고리즘을 사용한 규칙적인 난수를 생성하는 것을 뜻하는 '의사난수.. 2024. 11. 25.
[WEB] 301, 302 리다이렉트 리다이렉트(Redirect)란?디지털 세계에서 리디렉션은 웹사이트의 우회 표지판과 비슷하다. 사이트 방문자를 사용자가 처음 요청한 URL이 아닌, 다른 URL로 보내는 것을 뜻한다.  URL 단축 서비스, 더 이상 업데이트되지 않는 페이지, 사이트 도메인 변경 때 리다이렉트를 유용하게 사용할 수 있으며 SEO의 경우 이러한 리디렉션을 사용하는 방식은 웹사이트의 가시성과 사용자 경험에 크게 영향을 미칠 수 있다.        301 Redirect와 302 Redirect  리다이렉션(Redirection)은 보통 웹사이트를 새로운 도메인으로 옮겼거나 페이지의 주소가 바뀌었을 때, 이용자들을 하여금 변경된 주소로 자동으로 옮겨가게 만드는데 사용된다. HTTP 프로토콜에서는 리다이렉션 HTTP 상태코드인 3.. 2024. 11. 19.
[JAVA] 에러(Error) 와 예외(Exception) 클래스 1. 프로그래밍 오류 종류프로그램에서 오류가 발생하면 시스템 레벨에서 프로그램에 문제를 야기하여 원치 않는 버그를 일으키거나, 심각하면 실행 중인 프로그램을 강제로 종료시키도 한다.  프로그램 오류의 원인으로는 정말 다양한 상황이 있을 수 있다. 내부적인 요인으로는 프로그램 설계 로직에 구멍이 있어서 그럴 수도 있고, 외부적인 요인으로는 프로그램 자체 문제가 아닌 하드웨어에서 문제가 생겨 프로그램에 오류가 발생할 수 도 있다.  프로그래밍에서는 이러한 오류를 발생 시점에 따라 다음과 같이 3가지로 나눈다.1. 컴파일 에러(compile-time error) : 컴파일시에 발생하는 에러2. 논리적 에러(logical error) : 실행은 되지만 의도와 다르게 동작하는 것3. 런타임 에러(runtime e.. 2024. 10. 31.
The port may already be in use or the connector may be misconfigured. 오류 발생인텔리제이가 갑자기 먹통이 되어 강제 종료한 뒤 재시작하여 서버 재시작을 하려고 할 때 아래와 같은 오류 발생 The Tomcat connector configured to listen on port 80 failed to start. The port may already be in use or the connector may be misconfigured. 위 문구와 같이 80포트에서 커넥터를 시작하는데 실패하였고, 해당 포트가 이미 실행되 있거나 잘못 구성되어 있을 수 있다고 문구가 노출되고 있다.      해결 방법 1. cmd를 실행하여 사용 중인 포트 중지처리 하기아래와 같이 관리자 권한으로 '명령 프롬프트'를 실행  2. 경고 문구에 나온 사용중인 포트의 프로세스 확인 netstat .. 2024. 9. 30.
Jackson Annotaion 1. Jackson Serialization Annotation @JsonAnyGetterJsonAnyGetter 어노테이션은 맵을 기본 필드로 동작하게 함아래와 같이, ExtendableBean은 name과 key/value의 값을 가진 속성들로 구성되어 있음public class ExtendableBean { public String name; private Map properties; public static void main(String[] args) { ExtendableBean bean = new ExtendableBean("My Bean"); bean.add("attr1", "val1"); bean.add("attr2", "val2"); .. 2024. 9. 12.
IntelliJ 캐시 삭제 및 재시작 IntelliJ에서 라이브러리가 제대로 import 되지 않거나 변경사항이 적용되지 않을 때 캐시를 지워주면 해결되는 경우가 있다.     IntelliJ에서의 캐시 삭제에 관한 내용IntelliJ 공식 홈페이지에서의 [캐시 삭제]에 관한 내용은 아래와 같다. - IntelliJ IDEA를 다시 시작할 때까지 캐시가 삭제되지 않습니다.- 캐시를 무효화하지 않고 프로젝트를 열고 닫으면 캐싱된 파일이 삭제되지 않습니다.- Invalidate Caches창에서 이 옵션을 명시적으로 활성화하지 않는 한, 캐시 무효화 시 로컬 히스토리는 삭제되지 않습니다.그러나 로컬 히스토리의 보존 기간은 기본적으로 5일입니다. Invalidate caches | IntelliJ IDEA www.jetbrains.com     .. 2024. 6. 26.
IntelliJ vm옵션, 환경변수 설정(Program arguments, Environment variables, SpringBoot profiles) Edit Configurations... 메뉴 실행- 상단 메뉴바의 Run -> Edit Configurations... 클릭해 Run/Deburg Configurations 창 켜기     vm 옵션 설정- VM옵션은 Configuration 탭의 Environment에서 VM options 항목에서 설정할 수 있다. - 예를 들어 spring profile을 설정한다고 하면 '-D' 옵션을 붙여서 -Dspring.profiles.active=dev 와 같은 식으로 등록한다.    Program arguments(프로그램 변수) 설정- Java Main 메소드의 파라미터로 설정되는 프로그램 변수를 설정하는 방법은 Environment의 Program arguments항목에서 설정한다. - 외부설정으로 .. 2024. 6. 26.
반응형