전체 글 180

jsp

var: 반복 시 사용할 변수 이름 (예: item).items: 반복할 대상 (Java의 List, Set, 배열, 또는 Map).begin, end: (선택 사항) 반복의 시작과 끝 인덱스를 지정.step: (선택 사항) 반복 시 건너뛸 간격.는 JSP의 JSTL 태그 중 하나로, 데이터를 출력할 때 사용일반적으로 ${expression}과 동일한 역할을 하지만, HTML 이스케이프를 지원한다는 차이HTML 태그"; request.setAttribute("content", content);%>일반 출력: ${content}HTML 이스케이프 출력: 일반 출력: HTML 태그HTML 이스케이프 출력: <b>HTML 태그</b> JSTL에서 조건문을 구현하기 위해 사용Java의..

Java 2024.12.10

Materialized Path - 계층적 데이터 표현...

"메트리얼라이즈드 패스(Materialized Path)"는 계층적 데이터를 표현하고 관리하는 방법 중 하나로, 데이터베이스에서 트리 구조를 구현할 때 사용됨노드의 경로를 문자열로 저장하여 계층적 구조를 쉽게 표현함메트리얼라이즈드 패스란?계층 구조의 각 노드가 루트에서 자신까지의 경로를 문자열 형태로 저장이 문자열은 일반적으로 특정 구분자를 사용하여 부모-자식 관계 나타냄트리의 각 노드에서 부모를 빠르게 식별할 수 있으며, SQL의 LIKE나 문자열 연산을 사용해 하위 노드를 쉽게 조회재귀의 문제점 극복전통적으로 계층적 데이터를 데이터베이스에서 관리하려면 재귀적 접근(e.g., Adjacency List 방식)으로 트리의 부모-자식 관계를 탐색해야 했습니다. 그러나 이러한 방식은 몇 가지 문제가 있습니다..

기타 2024.12.10

WebFlux 첨들어봄

Spring 5에서 도입된 비동기 및 논블로킹(non-blocking) 웹 프레임워크 기존의 동기/블로킹 방식인 Spring MVC와 대조적으로, WebFlux는 Reactive Streams 표준을 기반으로 동작하며, 더 많은 요청을 효율적으로 처리할 수 있도록 설계됨 Spring MVC (기존 방식) 비유:식당 모델:서버(종업원)가 손님(요청)을 처리합니다.종업원은 한 번에 한 손님의 주문을 받고, 요리를 완전히 제공할 때까지 기다립니다.손님이 많으면 종업원 수를 늘려야 합니다. 결국, 종업원이 너무 많아지면 공간(서버 리소스)이 부족해집니다. Spring WebFlux (WebFlux 방식) 비유:패스트푸드 매장 모델:손님이 주문을 하고, 번호표를 받습니다.손님은 음식이 준비될 때까지 기다리지 않고..

Spring 2024.12.10

tar와 zip의 차이

tar와 zip 차이를 짐 꾸리기로 비교 1. tar옷과 신발을 그냥 캐리어에 차곡차곡 넣음.부피는 줄이지 않고 단순히 묶어 정리만 한 상태.특정 옷만 꺼내려면 캐리어 전체를 열어야 함.압축은 안 하고, 묶기만 하는 도구.장점:많은 파일을 한 덩어리로 묶어 전송이나 백업에 유용함.묶는 속도가 빠르고 간단함.단점:크기를 줄이지 않음. 공간 절약이 안 됨.압축이 필요하면 별도로 gzip, bzip2 같은 도구를 써야 함.2. zip옷과 신발을 각각 진공팩에 넣어 공기를 빼 부피를 최소화한 뒤 캐리어에 넣음.캐리어 공간이 절약되고, 필요한 옷만 진공팩에서 꺼낼 수 있음.묶는 작업과 압축을 동시에 처리하는 도구.장점:파일 크기를 줄이면서 묶을 수 있어 저장 공간 절약 가능.특정 파일만 개별적으로 꺼낼 수 있음...

기타 2024.12.06

grep, awk, ps, crontab ..

1. grep: 텍스트 검색 명령어 파일이나 출력 결과에서 특정 텍스트 찾는 명령어임.자주 쓰는 옵션:-i: 대소문자 구분 없이 검색.\|: OR 연산자. 여러 조건 검색 가능.-r: 디렉토리 전체 검색.-n: 검색 결과에 줄 번호 출력.--color=always: 검색어 하이라이트 표시.-v: 조건에 맞지 않는 줄만 출력. 특정 단어 검색:grep "error" file.txt 여러 단어 검색: grep "error" file.txt 디렉토리 전체에서 검색: grep "error" file.txt2. alias: 명령어 단축자주 쓰는 명령어 별칭 만들어 간편하게 실행 가능.별칭 생성alias 별칭='명령어' 대소문자 무시하고 하이라이트하는 grep 단축:alias grep-highlight='grep ..

Linux 2024.12.03

시놀로지 web station - docker 연동

톰캣에 사이트 준비중 페이지 하나 만들어서 넣어놓고 컨테이너 띄우고 포트 맞춰주고 도메인 맞춰주면 홈페이지 싹싹김치로 나올 줄 알았는데.. 도메인에 설정된 80포트는 나스의 web station의 기본 설정이 먹고 있고 중지시켜도 안되고 삭제나 비활성화도 안됨.. 리버스 프록시로 어케 해주려했는데 80포트 이미 쓰고 있으니 80포트 못쓰고..도메인 포트를 수정해야하나.. 하던 와중 ..   난... cli가 익숙하니까 drm의 도커 패키지는 보지도 읽지도 않음...냅다 ssh 때려버렸음...근데... 도커와 web station이 연동이 된다고라고라고라파덕? 컨테이너를 만들 때 저런 옵션이 있었더랬음걍 저거 체크하면  볼륨이랑 뭐뭐 설정해준 뒤에 냅다 이게 나와버림 곧바로 연결시켜줘버리는거심   아무튼 ..

기타 2024.12.02

vue 동적 클래스 적용

:class="{ 'dynamic-class': data.selectedYn } ...여기서 의미는:dynamic-class: 이 클래스 이름이 조건에 따라 적용data.selectedYn: 이 값이 true일 경우 selected-item 클래스가 적용즉, data.selectedYn가 true이면 해당 요소에 'dynamic-class' 클래스를 추가해서 특정 스타일을 적용할 수 있도록 하는 것반대로, data.selectedYn가 false이면 해당 클래스는 적용되지 않음. ∴ 선택된 항목에만 특정 스타일을 동적으로 적용할 수 있음

Vue 2024.11.29

v-if="item" vs v-if="!!item"

v-if="item"동작: item의 truthy/falsy 상태만으로 렌더링 결정.장점: 간결하고 직관적.적합한 경우:값이 null, undefined, false, 0, '' 같은 falsy일 때 렌더링을 막고 싶을 때.일반적인 조건부 렌더링에 적합. v-if="!!item"동작: !!로 값을 명시적으로 Boolean으로 변환 후 렌더링 결정.장점: 타입 변환 의도가 명확함.적합한 경우:item의 truthy/falsy가 헷갈릴 가능성이 있거나 명시적 Boolean 변환이 필요할 때.코드 읽는 사람에게 "Boolean 타입으로 변환함"을 명확히 전달하고 싶을 때. 대부분은 v-if="item" 사용.명시적 Boolean 변환이 필요하면 v-if="!!item" 사용.

Vue 2024.11.28

전체 개수 조회 to 조건 개수

기존에 COUNT(*)로 전체 개수를 구했는데.특정 조건에 따라 개수를 구하고 싶을 때는 CASE 문을 활용해 한 번의 쿼리로 각각 조건별 개수를 구할 수 있음.   기존 쿼리 : 전체 개수 조회SELECT COUNT(*)FROM your_tableINNER JOIN ...WHERE no IN ('a', 'b')AND ... AND ...; 결과는 10이 나왔음 이 쿼리는 no가 'a' 또는 'b'인 전체 행의 개수, 즉 10을 반환함 조건별 개수를 구하는 쿼리이제, 조건에 따라 'a'와 'b' 각각의 개수를 구하고 싶다면 CASE 문을 사용해 한 번의 쿼리로 해결할 수 있음.SELECT COUNT(CASE WHEN no = 'a' THEN 1 END) AS ACount, -- 'a'인 행의 개..

MyBatis 2024.11.19