분류 전체보기

간단하게 새로운 토이 프로젝트를 만들어보려고 한다. 프론트는 Thymeleaf를 이용하는데 Thymeleaf layout을 적용하는데 문제가 생긴 것 같다. 꽤 며칠을….이걸로 골머리를 앓다가..정말 어이없게 해결하게 되어서..기록해둔다.  문제 발생Thymeleaf layout을 적용하는데 뭔가 이상하다.우선 버전은 다음과 같다.Java 17Spring Boot 3공통 레이아웃을 만들어두고 사용하고자 하는데 적용이 안된다. gradle 파일에서 의존성을 확인하고, 공통 레이아웃 파일들의 경로에도 문제가 없는데..dependencies{ ... implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' imple..
새로운 프로젝트 진행 중 만나버린 친구.. 오랜만이다 CORS 에러.. 안녕?.. CORS 에러는 웹 개발자라면 꼭 만날 수 밖에 없는 에러로 명성이 자자하다. CORS란? Cross-Origin Resource Sharing의 줄임말로 웹 브라우저에서 다른 출처의 리소스 공유에 대한 허용/비허용을 다룬 보안 정책이다. 예를 들어, 다른 회사의 API 등 다른 도메인의 API(다른 출처)를 이용하고 싶을 때 CORS 허용 설정이 되어 있어야 성공적으로 API에 접근해 리소스를 공유받을 수 있다. CORS 설정 방법 CORS 에러를 해결하기 위한 여러 방법이 있겠지만 오늘은 직접 서버에서 HTTP 헤더 설정을 통해 다른 출처를 허용하도록 설정하려고 한다. Spring 서버, Node 서버 등 각 서버에 맞..
· Javascript
버튼을 클릭하면 서버 요청이 한 번만 들어와야 하는데 2번 이상 들어오는 케이스가 생겼다. 버튼 중복 클릭을 방지하기 위해 클라이언트 단에서 처리가 필요했다. 총 2가지 방법을 사용해보았고, 둘 다 문제 없이 잘 실행된다. 실제로 적용해 배포한 건 두번째 방법이다. 우선 버튼은 아래와 같다. 서버 호출 버튼 1. 클릭 시 버튼 비활성화(diabled) 처리 버튼 중복 클릭 방지를 구글링했을 때 가장 많이 나오는 방법이다. 클릭 시 버튼 요소 자체를 비활성화시키는 것이다. 서버 호출 후 응답을 받은 이후에 다시 버튼을 활성화시켜주었다. function serverCallClick() { // 버튼 요소 const serverCallButton = $("#serverCallButton"); // 버튼이 비활..
· DataBase
DB Connection Pool 수를 조회해야 할 일이 생겼다. 현재 DB에 연결된 세션 정보도 함께 조회하기 위해 아래의 쿼리를 작성했다. 필요할 때마다 쉽게 찾을 수 있도록 마찬가지로 기록해둔다. 현재 Connection Pool 수 /* 현재 Connection Pool 수 */ SELECT DB_NAME(dbid) AS 'Database', COUNT(dbid) AS 'Connection Pool Count' FROM sys.sysprocesses WHERE dbid > 0 GROUP BY dbid; 전체 Connection Pool 수 /* 전체 Connection Pool 수 */ SELECT COUNT(dbid) AS 'Total Connection Pool Count' FROM sys.s..
· Tool
회사 프로젝트 중 Java 17를 사용한 프로젝트가 있다. 다른 프로젝트를 작업하다가 해당 프로젝트를 로컬에서 실행시킬 일이 있어서 실행했는데 아래와 같은 오류가 떴다. error: invalid source release: 17 다른 프로젝트에서는 Java 11을 사용하고 있어 Java 버전 변경을 위해 Project Structure에서 SDK 등은 17로 모두 변경한 상태였기에 의아했지만, 빠뜨린 부분이 있었다. gradle 버전 변경. 결국 Java 버전 변경이 완전히 되지 않았기 때문이다. 다음에 또 똑같은 걸로 검색해둘 것 같아 남겨둔다.. Project Structure(단축키 : Shift + Ctrl + Alt + S) Project SDK 변경 Language Level 변경 Modul..
· DataBase
에러 발생 예전에 회사에서 원격으로 근무하고 있던 동료 개발자로부터 에러가 발생했다고 공유 받았다. DB는 MySQL이며 아래와 같은 에러 메세지가 떴다고 한다. ERROR 1129(00000): Host '*' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts' 에러 원인 검색해보니 바로 원인을 알 수 있었다. 원격 서버에서 MySQL 서버로 연결한 뒤 close를 하면 MySQL은 비정상적인 접속으로 판단해 해당 IP를 블락 처리한다고 한다. 이 때 MySQL에서 이와 같은 비정상적인 접속 요청 수를 카운팅해서 global.max_connect_errors에 지정된 값을 넘기면 자동 블락 처리가 되어 생..
· etc.
현재 재직 중인 회사는 사실 아직 무중단 배포 환경이 아니다. 빌드 후 생성된 jar나 war를 직접 수동으로 배포하기 위해 서비스의 중단이 필연적인 상황이다. 서비스 이용자가 늘어나고 비즈니스 로직 추가 및 수정에 빈번하게 일어나며 무중단 배포에 대한 필요성을 더욱 절실히 느끼고 있다. 기회가 된다면 무중단 배포 환경을 만들어보고 싶은데..우선 공부를 해야한다.(당연히) 우선 무중단 배포에 대해서 알아보자. 무중단 배포란? 무중단, 말 그대로 서비스의 중단 없이 새로운 버전의 소프트웨어를 배포하는 것을 말한다. 앞서 말했듯 서비스를 운영 중일 때 새로운 버전을 배포하기 위해서는 기존의 서비스를 종료하고 새로운 서비스를 시작하는 과정이 필요하다. 이렇게 서비스가 중단되는 시간, 즉 시스템을 이용할 수 없..
· Java
개발을 하며 MySQL의 Timestamp가 이상하게 조회되는 상황에 맞닥뜨렸다. 발생한 이슈와 원인, 해결한 방법 순서대로 기록해둔다. 이슈 발생 간단하게 정리하면 데이터 조회 시 특정 일자의 하루 동안 저장된 데이터를 조회해야 했고, 이를 위해서 특정 일자의 시작 시간(yyyy-MM-dd 00:00:00)과 끝 시간(yyyy-MM-dd 23:59:59)을 Timestamp 타입으로 만들었다. 예를 들어 일자별 회원가입 현황을 데이터테이블로 산출하려고 한다. 조회 시에는 JPQL을 사용했고, 테스트 용으로 아주 간단하게만 구현해두었다. /** * 일자별 회원가입 현황 * @param * @return */ public List getDailySignUp(Integer start, Integer leng..
새로운 프로젝트에서 Java 17, Spring Boot 3를 사용하고 있다. 기존에 Spring Boot 2에서는 발생하지 않던 에러가 발생해 기록해둔다. 에러 발생 JPA에서 네이티브 SQL 구현 중이었는데 (query, Attendance.class) 부분에 빨간 밑줄이 생기며 에러가 발생했다. public List findAttendance(Long idx){ String queryStr = "SELECT ~~~ "; queryStr += "FROM ~~~ "; queryStr += "WHERE AI.IDX = :idx "; queryStr += "GROUP BY DATE(BEGIN_DT)"; JpaResultMapper resultMapper = new JpaResultMapper(); Quer..
· Java
Integer ArrayList을 int 배열로 변환하는 방법에 대해 알아보자. 사실 자꾸 까먹어서 기록해둔다. String 타입의 List를 배열로 변환할 때 toArray()를 사용하면 된다. List list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); // 1. toArray() - 배열 선언과 동시에 할당 String[] arr = list.toArray(new String[0]); // ["a", "b", "c"] // 2. toArray() - 배열 선언 후 값 할당 String[] arr2 = new String[list.size()]; list.toArray(arr2); // ["a", "b", "c"] 하지만 int형..
토발자_Hflug
'분류 전체보기' 카테고리의 글 목록