사이트에서 css파일이 갱신이 안된다면 어떻게 해야 할까?대부분 이러한 문제는 브라우저 캐시 때문에 생기는 문제이다.오늘은 이 글을 통해 어떤 브라우저, 어떤 기기에서건 항상 캐시를 갱신시키려면 어떠한 방법이 있는지 정리해 보았다. 캐시가 갱신되지 않는 이유?웹 브라우저는 css, js와 같은 정적인 파일은 브라우저 캐시에 저장해 두고 사용한다.파일의 변경 내용이 없다면 브라운저는 기존에 저장해 둔 캐시의 내용을 보여주게 된다.이 때문에 로딩 속도는 빨라지지만 가끔씩 파일이 바뀌어도 반영이 안 되는 일이 발생하기도 한다.그럼 해결 방법에는 어떠한 것들이 있는지 알아보자. 1. 쿼리스트링으로 버전 붙이기가장 추천할만한 방식이다.HTML이나 JSP에서 css나 js파일에 ?v=버전 형태로 쿼리스트링을 추가하..
Base64는 이미지 업로드, 프론트 백엔드 통신, 파일 임베드를 할 때 필수적인 기술이다.오늘 정리한 코드를 활용하면 java로 쉽게 base64 이미지를 내가 원하는 폴더에 저장할 수 있다. Base64란?base64는 이진 데이터를 텍스트로 바꾸는 인코딩 방식이다.네트워크나 텍스트 기반 시스템(json,xml) 등에서는 순수 이진 데이터 전송이 어려운데 base64는 이진 데이터를 문자열 형태로 안전하게 변환해 준다.단점으로는 원래 크기보다 약 33프로 정도 데이터 크기가 증가하며 바이너리 처리보다 성능은 떨어지는 편이다. data:image/png;base64,iVBORw0KGgoAAAANRTYDDA...image/png;base64, 는 메타정보는 의미하며 콤마 뒤에 값은 인코딩 된 이미지 데이..
GA4의 데이터를 API로 받아 페이지별 조회수를 확인하고 싶다면 Google의 Analytics Data API를 사용할 수 있다.이 글에서는 Java를 이용해 GA4에서 페이지뷰 상위 데이터를 조회하고,List> 형식으로 반환하는 전체 프로세스를 정리했다. ✅ 준비물Google Cloud Platform(GCP) 프로젝트Google Analytics 4 (GA4) 속성서비스 계정 및 JSON 키 파일Java 코드 및 의존성 설정1️⃣ 서비스 계정 JSON 만들기 (SERVICE_ACCOUNT_JSON)https://console.cloud.google.com/ 사이트 접속하기좌측 메뉴에서 IAM 및 관리자 > 서비스 계정 클릭한다.새 서비스 계정을 생성한다이름: {원하는 서비스 계정 이름}역할: A..
java에서 문자열을 처리할때 null 체크와 공백 처리등의 반복작업을 더 간편하게 처리할수 있는 클래스가 있다.String value = "난문자열";if (StringUtils.isNotEmpty(value)) { System.out.println("문자열이 비어있지 않습니다.");}isNotEmpty 를 사용하면 기존의 널체크와 값이 비어있음을 체크하는 노고를 조금 덜어낼수 있다. StringUtils란?Apache Commons Lang 에서 제공하는 문자열 처리 특화 클래스이다.null 값의 안정적인 처리를 도우며 가독성 높은 코드 작성을 가능하게 한다.또한 다양한 문자열 처리 기능도 제공하는데 정규식 표현이 없이도 다양한 문자열을 비교할수 있다.가장 자주 사용하는 메소드 중의 하나가 ..
웹사이트나 앱을 만들다 보면 썸네일, 미리보기, 상세보기 등에 사용되는 다양한 크기의 이미지를 자동 변환해야 할 때가 많다.오늘은 이미지 변환 도구중 대표적인 몇개의 프로그램 사용방법을 정리했다. 1. ImageMagick ImageMagick은 가장 유명한 이미지 처리 툴이다.다양한 포맷과 효과를 지원하며, CLI 또는 API로 이미지 리사이징, 포맷 변환 등이 가능하다.복잡한 이미지 처리작업이 많을 때 사용하는것을 추천하며 자동차 처리를 할 경우 매우 유용하다. 설치 방법Ubuntusudo apt install imagemagickmacOSbrew install imagemagickWindows공식 홈페이지 바로가기 사용 예제public void convertWithImageMagick(String..
Dropzone.js란드래그 앤 드롭 이벤트가 가능한 javascript 라이브러리이다.완전한 오픈소스이며 웹사이트에서 서버에 파일을 쉽게 올릴 수 있는 것이 장점이다.또한 다중 멀티 업로드도 지원한다. Dropzone.js 기본사용법 Jquery를 이용해 드랍존을 생성했다.우선 드랍존을 생성할 태그에 id 값을 선언해 주고. dropzone 클래스를 추가해 준다.그리고 내가 필요한 옵션을 추가한다. 주요 옵션 옵션설명url업로드 urlmethodrequest 메소드 선택headers요청 헤더 설정autoProcessQueue자동으로 보내기clickable클릭 가능 여부autoQueue바로 서버에 전송할지 설정createImageThumbnails파일 업로드시 썸네일 생성 여부thumbnailHeig..
sql을 활용해 비교하기SELECT *,CASE WHEN(START_DATE now()) THEN 'Y' ELSE 'N' END as 원하는 필드명FROM 테이블명sql를 이용하는 경우 case when 조건문을 활용해 원하는 필드명으로 값을 받아온 후 처리해 줄수 있다. (진행중) (접수완료) jstl을 이용해 비교하기jstl을 이용하려면 페이지 상단에 jstl 태그 라이브러리를 기입해줘야 한다. java util 클래스의 데이트를 활용해 현재 시간을 구한다.날짜 비교를 하려면 패턴을 맞춰줘야 하는데 를 이용하면 날짜 정보를 담고 있는 객체를 포맷팅해 원하는 형식으로 출력할수 있다. 속성표현식/EL타입설명value사용가능java.util.Dat..
robots.txt란?robots.txt란 IETF에서 검색로봇의 웹페이지 수집 허용/제한을 하는 국제 권고안이다. 간단히 말해 검색엔진 크롤러 또는 검색 로봇이 사이트에서 정보수집을 해도 되는 페이지와 해서는 안 되는 페이지를 알려주는 파일을 뜻한다. 일반적인 사이트의 경우 검색엔진 최적화를 위해 여러 가지 봇들의 정보 수집을 허용하지만 때에 따라선 검색되지 말아야 할 페이지를 선언해주기도 한다. robots.txt 위치robot.txt 파일은 반드시 사이트 루트 디렉토리에 위치해야 하며 텍스트 파일로 접근이 가능해야 한다. http://사이트 주소/robots.txt 티스토리의 경우에도 각 블로그마다 루트 디렉터리에 robots.txt 파일이 존재한다. robots.txt 규칙1. user-agent..
java jdk 설치 Oracle Java Technologies | OracleJava Is the Language of Possibilities Java is powering the innovation behind our digital world. Harness this potential with Java resources for student coders, hobbyists, developers, and IT leaders.www.oracle.com위의 페이지에 접속해 설치하고자 하는 운영체제와 원하는 버전의 java jdk를 다운로드해 설치하면 된다. 환경 변수 설정1. jdk 설치 경로 복사java를 설치할때 경로를 수정하지 않았다면 C:\Program Files\Java\[자바버전]으로 설치가..
WebAuthenticationDetails webAuthenticationDetails = ((WebAuthenticationDetails) authentication.getDetails()); String ipAddr = webAuthenticationDetails.getRemoteAddress(); Spring Security에서는 WebAuthenticationDetails의 getRemoteAddress()를 이용해 클라이언트의 ip를 알아낼 수 있다. 하지만 getRemoteAddress만으로는 실제 클라이언트의 헤더값 ip정보를 정확히 알아낼 수 없다. 그렇기에 클라이언트의 정확한 ip를 알아내기 위해서는 HttpServletRequest가 담긴 메소드 파라미터를 사용해야 한다. 1. Sec..
인텔리제이에서 콘솔 창에 한글 깨짐이 발생할 경우에 해결방법은 여러 가지가 있다. 1. [File] - [Settings] - [File Encodings] Global Encoding과 Project Encoding, 그리고 Default encoding for properties files를 확인하고 UTF-8로 바꾸어준다. 2. [File] - [Settings] - [Editor] - [General] - [Console] Default Encoding이 Utf-8로 설정이 안되있으면 바꿔준다. 3. [Help] -> [Edit Custom VM Options..] 해당 메뉴를 클릭하면 인텔리제이 옵션 설정파일이 열리는데 아래 구문을 추가해 준다. -Dfile.encoding=UTF-8 -Dcon..
Map을 이용한 json 객체 반환 @ResponseBody @RequestMapping(value = "/jsondata") public LinkedHashMap getJson(HttpServletRequest request, HttpServletResponse response, Model model) throws IOException { LinkedHashMap resultMap = new LinkedHashMap(); resultMap.put("title", "인포메이크"); resultMap.put("link", "https://letsplaycoding.tistory.com"); resultMap.put("description", "티스토리 블로그"); ArrayList itemArray = n..