분류 전체보기 썸네일형 리스트형 [Gradle] 멀고도 가까운.. 개발자로 일 하면서 Gradle을 익숙하게 쓰고는 있지만(주로 의존성 관리만 ㅎㅎ..), 잘 알지는 못하고 쓴다는 생각이 들었다. 말 그대로 가깝고도 먼 사이.. 요즘들어서는 AI와 같이 일하면서, 자꾸 거짓말에 당하다보니.. 내가 아는게 중요하다는 생각이 들기도 해서. 정리해본다. 아무튼! 시작해보자.개발환경아래와 같은 환경에서 학습하고있다.OS : Intel MacJava : JDK 21Gradle : 8.13 (Kotlin DSL)IDE : Intellij Ultimate, WindsurfChatGPT : PLUSGitHub : https://github.com/koojeongwoon/learn-gradle.gitGradle이 뭐야? 개발을 하다보면, 작성한 소스 코드를 '컴파일'하고, 테스트를 수.. 더보기 링크 모음집 2 스프링부트 앙귤라 jwt https://kellis.tistory.com/m/67 Springboot-Angular-JWT 기반 Auth 구현 - refresh token 추가 이번 포스트에서는 지난 포스트에서 미구현했다고 언급한 refresh token을 추가하여, 인증 구조를 변경하겠습니다. 일반적으로 세션을 사용하는 경우에는 사용자의 액션이 있으면 세션의 만료 시 kellis.tistory.com fcm 웹푸시보내기 https://h0ng3.tistory.com/m/47 FCM 웹푸시 보내기 @마크다운 [FCM](https://firebase.google.com/docs/cloud-messaging/) FCM은 메시지를 전송할 수 있는 플랫폼이다. 여기서 말하는 메시지는 메일,SMS등이 아닌 푸시 .. 더보기 분야별 링크 모음집 [스프링 관련] 스프링 부트로 만드는 업로드 다운로드 Rest API Spring Boot 로 만드는 Upload와 Download Rest API 예제-05 이번 글에서는 마지막 단계 RestController에 API를 생성하고 테스트 까지 하면서 파일 업로드 다운로드 예제를 마치도록 한다. 기존에 생성한 FileUploadController에 나머지 소스를 추가한다. 추가할 api r pangsblog.tistory.com 스프링부트 @Transactional [SpringBoot] @Transactional 트랜잭션 사용하기 데이터 삽입 프로세스를 진행하던 중 에러가 발생하면 기존에 삽입이 이미 이루어진 inseok9068.github.io [레디스 관련] Spring data redis over.. 더보기 [자바의 신] 어노테이션 어노테이션은 컴파일러에게 정보를 알려주거나, 컴파일 할때 와 설치(deployment)시의 작업을 지정하거나, 실행할때 별도의 처리가 필요할때 사용한다. 어노테이션은 클래스, 메소드, 변수 등 모든 요소에 선언할 수 있다. 자바에서 사용하기 위해 정해져 있는 어노테이션은 3개, 어노테이션을 선언하기 위한 메타 어노테이션은 4+1개가 있다. 먼저 사용하기 위해 정해진 어노테이션 3개는 다음과 같다.(JDK6 기준) @Override 해당 '메소드'가 부모 클래스에 있는 메소드를 오버라이드 했다는 것을 명시적으로 선언 만약 이 어노테이션을 쓰고 오버라이드 형식에 맞지 않게 코딩했다면 컴파일 에러 발생 @Deprecated 만들어진 클래스나 메소드가 더 이상 사용되지 않는 경우 컴파일러가 알려주는 용도 @Su.. 더보기 [자바의 신] 클래스 안의 클래스 자바에서는 클래스 안에 클래스를 Nested 클래스라고 부른다. 왜 클래스 안에 클래스가 있을까? 코드를 간단하게 하기 위해서 이다. 한 곳에서만 사용하는 클래스를 논리적으로 묶어서 처리할 필요가 있을때(Static Nested 클래스) 캡슐화가 필요할때, 즉 내부 구현을 감추고 싶을때(내부 클래스) 소스의 가독성과 유지보수성을 높이고 싶을때 Nested 클래스는 자바 기반의 UI를 처리할 때 사용자의 입력이나, 외부의 이벤트에 대한 처리를 하는 곳에서 많이 사용된다. Nested 클래스는 선언 방식에 따라서 두가지로 구분할 수 있고, inner 클래스는 이름이 유무에 따라서 다시 두가지로 나눌수 있다. Static Nested 클래스 inner 클래스 로컬 내부 클래스 익명 내부 클래스 Static N.. 더보기 [자바의 신] 예외 예외는 매우매우 중요하다. 예외를 모르면 자바를 모르는것과 같다. 예외를 생각하지 않고는 안전한 프로그램 개발이 불가능하다. 자바에서 예외는 우리가 예상한 혹은 예쌍치 못한 일이 발생하는 것을 미리 예견하고 안전장치를 하는것. try ... catch try 블록 안에 예외가 발생할 수 있는 문장을 묶어주고, catch 블록 안에 예외가 발생했을때 처리를 해준다. 반드시 모든 문장을 묶을 필요는 없고, 예외가 발생하는 부분만 묶어주면 된다. try ... catch 블록에서 예외가 발생하면 예외가 발생한 문장이후는 실행되지 않고, 바로 catch 블록으로 넘어간다. 반대로 try블록에서 예외가 발생하지 않으면, catch 블록은 실행되지 않는다. 주의할 사항 변수의 선언 try ... catch 블록도 .. 더보기 [자바의 신] 인터페이스와 추상클래스 인터페이스나 추상클래스는 하나의 기호다. 전원버튼의 모양을 보고 전자기기의 전원을 켜는 것과 같이 인터페이스나 추상클래스의 모양을 보면 어떻게 써야 할지 알 수 있다. 보통 설계 단계에서 인터페이스를 정의하고 개발단계에서 인터페이스를 구현한 클래스를 만든다. 중요한 것은 인터페이스를 구현한 클래스가 어떻게 되어있는지의 여부. 인터페이스나 추상 클래스의 메소드를 사용하는 사용자의 입장에서 내부 구현이 어떻게 되어 있는지는 별로 안궁금하고, 그냥 호출하고, 응답을 받으면 된다. 인터페이스와 추상클래스를 사용하는 이유 설계시 선언해 두면 개발할때 기능을 구현하는데만 집중할 수 있다. 개발자의 역량에 따른 메소드의 이름과 매개변수 선언의 격차를 줄일 수 있다. 공통적인 인터페이스와 추상클래스를 선언해 놓으면 선.. 더보기 [자바의 신] Object 사실 모든 자바 클래스의 부모는 java.lang.Object클래스 이다. extends 키워드가 없을때, 즉, 아무 클래스도 상속받지 않은 클래스는 모두 Object를 상속받은것이다. 그럼 extends 키워드가 붙은 클래스는 Object도 받고, 다른 클래스도 받은건가? 다중 상속은 안된다고 했던거 같은데.. 다중 상속은 안되지만, 여러 단계로 상속받을수 있다. 아래 그림을 보자. 왼쪽처럼 Child가 Parent와 Object를 동시에 상속받을수 없다. 하지만 오른쪽과 같이 Parent가 Object를 상속받고, Child가 Parent를 상속받는 형태로 상속 받는 것은 가능하다. 결국 Child도 Object의 변수와 메소드를 상속받은것 처럼 사용할 수 있다.(public, protected) 왜.. 더보기 [CKEditor] 스프링 프로젝트에 CKEditor5 설치하기 우선 이전에 온라인 빌더를 활용해 다운받은 CKEditor5 라이브러리를 프로젝트에 옮겨야 한다. 나는 root 아래 /assets/admin/libs/ 에 모든 자바스크립트 라이브러리를 모아뒀기때문에, CKEditor5도 동일한 위치에 넣었다. 에디터를 적용할 jsp에 사용할 스타일시트와 자바스크립트를 삽입한다. 에디터가 들어갈 영역을 만든다. 이전에 index.html에서 에디터를 활성화하는 스크립트를 옮긴다. ClassicEditor .create( document.querySelector( '#editor' ), { toolbar: { items: [ 'heading', '|', 'fontFamily', 'fontSize', 'fontColor', 'bold', 'underline', 'itali.. 더보기 [CKEditor] 온라인 빌더를 활용한 CKEditor5 라이브러리 설정 예전에 네이버 스마트 에디터 2.0을 활용해 만든 사이트가 있었다. 그런데 업무상 한글파일을 복사해서 붙여넣는 필요가 있는데, 안된단다.. 그래서 새로운 에디터를 찾다보니 CKEditor5를 알게됐다. 일단 테스트로 한번 만들어보고, 스프링 프로젝트에 적용하는 것 까지 해볼 예정이다. 자. 일단 요구사항은 아래와 같다. 1. 한글파일을 붙여넣었을때 무리 없이 동작해야 함. 2. 이미지 업로드가 가능해야함. 3. 유튜브, 페이스북 등 동영상을 재생할수 있어야함. 자, 해보자. 공식사이트 Quick start 코드를 그대로~ 붙여넣으면 끝난다. 나는 index.html로 만들었다. Classic editor This is some sample content. 이 파일을 실행하면, 아래와 같은 화면이 딴 나타.. 더보기 이전 1 2 3 4 다음