Gradle Wrapper 버전이 낮아서 JDK 21 지원을 안한다면

Intro프로젝트의 Spring boot 버전을 3.2.5 에서 3.3.5로 업데이트 하는 김에 사용하는 JDK도 17 에서 21로 업데이트 하려고 했다.그런데 사용중인 Gradle 의 버전이 낮다 보니 바로 변경되지는 않았다.코틀린 버전도 JDK 21을 지원하는 버전이 아니여서 업그레이드가 필요했는데, 전체적으로 겪었던 내용들을 정리해본다.JAVA 21을 지원하지 않음.GradleJDK 18 까지만 지원을 하는 Gradle을 사용하고 있다.제일 먼저 gradle의 업그레이드가 필요했다.지금 쓰는 버전을 확인 해 본다../gradlew --verson 확인 결과 굉장히 오래된 7.5 버전을 사용중이다.아래의 명령어로 원하는 gradle 버전으로 업데이트 할 수 있다. 처음에는 아래와 같이 8.3으로 업데..

Programming/Java 2024.11.20
자바스크립트로 이미지에 워터마크 추가하기

Intro이미지에 워터마크를 추가하는 것은 저작권 보호나 브랜드 표시를 위해 필요한 작업이다. 예전에는 포토샵같은 이미지 편집 툴이 필요했지만, 이제는 자바스크립트만으로도 간단하게 워터마크를 추가할 수 있다. 이번 글에서는 HTML과 자바스크립트를 활용해 이미지를 웹 브라우저에서 직접 처리하고 워터마크를 삽입하는 방법을 알아본다.Canvas이번 워터마크 추가에 사용하는 기술은 HTML5의 다. canvas는 픽셀 단위로 이미지를 그리고 수정할 수 있는 도구이며, 다음과 같은 과정을 통해 워터마크를 삽입할 예정이다.를 생성하고, 이미지 파일을 불러와 그대로 그린다.텍스트나 워터마크 이미지를 원하는 위치에 추가한다.canvas의 결과를 다시 이미지로 변환한다.이를 통해 별도의 서버나 이미지 편집 프로그램 ..

Programming/javascrlpt 2024.11.19
Kotlin에서의 Try with Resources

IntroJava 7부터 도입된 try-with-resources 구문은 파일이나 데이터베이스 커넥션처럼 꼭 닫아야 하는 자원을 사용한 후 자동으로 닫아줘서 자원 누수를 방지하는 기능을 제공한다. 그러나 Kotlin에서는 Java처럼 try-with-resources 구문을 따로 제공하지 않는다. 그렇다면 Kotlin에서는 어떻게 자원을 안전하게 다룰까? Kotlin에서는 use라는 확장 함수를 통해 이와 비슷한 기능을 구현한다. 이번 글에서는 Kotlin에서 자원을 안전하게 관리하는 방법을 알아본다.자동 자원 관리Kotlin은 Closeable 인터페이스를 구현한 객체에 대해 use라는 확장 함수를 제공한다. 이 함수는 자원을 사용한 후 자동으로 닫아주기 때문에 Java의 try-with-resourc..

Programming/Kotlin 2024.11.14
Jsoup 활용한 웹페이지 요청 및 응답 파싱

IntroJsoup은 HTML 파싱을 위한 Java 라이브러리로, 웹페이지의 HTML을 가져와 파싱하고 조작할 수 있다. CSS 셀렉터를 이용해 원하는 요소를 선택할 수 있어서, 웹 스크래핑과 같은 작업에 유용하다.이전 글에서 이미지 파일을 대상으로 OCR 하는 방법에 대해 알아보았는데, 이번에는 OCR의 대상이 되는 이미지를 직접 웹페이지에서 찾아오는 방법을 알아보도록 한다.실습jsoup 추가gradleimplementation 'org.jsoup:jsoup:1.15.3'maven org.jsoup jsoup 1.15.3HTTP요청간단하게 http 요청으로 웹페이지의 응답을 받아오는 예시를 작성해보겠다.JDK 11 에서부터는 java.net.http.HttpClient가 생겨서 그나마 ..

Programming/Java 2024.11.11
[Java] static 키워드 이해하기

Intro자바를 사용해 코드를 작성하다보면 static 키워드를 자주 마주하게 된다.하지만 이 키워드가 적절하지 않게 사용되는 경우가 종종 있는데, 이번 글에서는 static 키워드의 개념과, 언제 어떻게 사용해야 하는지 예제 코드를 통해 자세히 알아보겠다.static자바에서 static 키워드는 클래스의 멤버(변수나 메서드)를 클래스 레벨로 정의할 때 사용된다. 일반적인 클래스의 변수나 메서드는 인스턴스를 생성한 뒤에 접근할 수 있지만, static 키워드를 사용하면 클래스 인스턴스 없이도 해당 멤버에 접근할 수 있다.간단히 말해, static 멤버는 클래스 자체에 속해 있으므로 여러 인스턴스가 공유하는 특징을 갖는다. 인스턴스가 여러 개여도 static 변수는 딱 하나만 존재하고, 이를 모든 인스턴스..

Programming/Java 2024.11.10