본문 바로가기
  • 개발하는 곰돌이

Development/etc.7

[IntelliJ] Remote JVM Debug를 사용해서 서버를 원격으로 디버깅 하기 목차들어가기 전에프로젝트를 개발하다보면 테스트 코드로 검증을 했다고 하더라도 로컬 환경이나 서버가 배포될 환경에서 애플리케이션을 실행했을 때 의도대로 동작하지 않는 경우가 발생합니다. 로컬 환경이라면 그냥 IDE의 디버그 모드를 사용해서 수정이 가능하지만 여러가지 이유로 로컬에서 테스트가 불가능한 로직은 개발 서버 등의 환경에 배포를 하고 테스트를 진행하다보니 일반적인 디버그가 어렵습니다. 이 때 IDE의 Remote JVM Debug 기능을 사용하면 서버에 배포된 애플리케이션이라도 로컬 환경에서 디버그 하듯이 디버그를 진행할 수 있습니다.Remote JVM Debug의 동작 원리자바의 디버거는 실행중인 애플리케이션에 디버거가 접속하여 동작합니다. IDE를 사용하여 디버깅을 하는 경우 위 그림에서 deb.. 2024. 10. 2.
[Gradle] 순수 자바/코틀린 Gradle 프로젝트를 실행 가능한 jar 파일로 빌드하기 목차 들어가기 전에 종종 스프링부트를 사용하지 않은 간단한 순수 자바/코틀린 프로젝트를 빌드해서 실행할 일이 있다. 스프링부트를 사용하지 않는 경우에는 bootJar 명령이 없어서 jar 명령으로 빌드할 수밖에 없는데 이렇게 생성된 jar 파일은 java -jar 명령어로 실행해도 제대로 실행되지 않는다. 이러한 현상이 발생하는 이유와 해결법을 정리해두고자 한다. 왜 gradle jar로 생성한 jar 파일은 실행되지 않을까? 기본적으로 Gradle의 jar 명령은 프로젝트의 소스 파일들을 컴파일한 후 jar 파일의 형태로 압축한다. 그리고 이 과정에서 MANIFEST.MF 파일이 생성되어 jar 파일에 추가된다. 터미널에 jar tf {jar 파일명}을 입력하면 jar 파일의 내부 구조를 확인해볼 수 .. 2023. 11. 28.
[IntelliJ] 스프링부트 프로젝트의 클래스 또는 리소스 수정 후 자동으로 재시작하기 이클립스에서 인텔리제이로 IDE를 갈아탄 이후 가장 불편했던 점이 로컬에서 인텔리제이를 통해 프로젝트가 실행 중인 상태에서 클래스나 리소스를 수정했을 때마다 프로젝트를 수동으로 재시작해야 했던 점이다. 그러던 중에 인텔리제이에서도 스프링부트 프로젝트의 클래스나 리소스를 수정했을 때 자동으로 프로젝트를 재시작해주는 기능이 있다는 것을 알게 되어 정리하려고 한다. 본 글은 IntelliJ IDEA 2023.2.4 Ultimate Edition + Gradle 기준으로 작성되었습니다. 의존성 추가 build.gradle에 아래 의존성을 추가한다. developmentOnly 'org.springframework.boot:spring-boot-devtools' Run/Debug Configurations 설정 .. 2023. 11. 2.
[IntelliJ] 인텔리제이의 Remote host를 사용하여 서버에 접속해보자! 목차 서론 기존에 프로젝트를 진행하면서 Filezila를 사용하여 리눅스 서버의 파일을 관리하고, putty를 사용하여 리눅스 서버의 터미널에서 하는 작업을 진행했다. 그러다가 어느날 팀 동료가 작업하는 것을 봤는데 인텔리제이에서 리눅스 서버의 파일을 관리하고, 리눅스 서버의 터미널을 사용하는 것이었다! 인텔리제이가 굉장히 많은 기능을 제공한다고는 하지만 이렇게 원격으로 서버에 접속하는 기능까지 제공한다는 사실에 적잖은 충격을 받았다. 그리하여 관련 내용들을 찾아 보고, 인텔리제이로 원격 호스트에 접속하는 방법을 정리한다. 기본 환경 해당 내용은 IntelliJ IDEA Ultimate 2023.3.2 버전에서 진행하였으나 WebStorm, Pycharm, CLion 등의 JetBrains의 다른 IDE.. 2023. 3. 9.
[Linux] 특정 프로세스를 종료하는 쉘 스크립트 작성하기 목차 시작 배경 사내에서 프로젝트를 배포할 때 리눅스 서버에 nohup를 사용하여 배포하고 있었다. 그러다보니 기존에 실행중인 프로젝트를 종료하기 위해 매번 ps 명령어로 프로세스 id를 찾아서 종료하는 것이 여간 번거로운 일이 아니었다. 그러다가 문득 든 생각이 그냥 실행만 하면 해당 프로세스를 종료해주는 프로그램을 만들면 되지 않을까?하는 것이었다. 처음에는 C를 사용하여 만들면 될거라 생각했는데 관련 내용을 찾다보니 그냥 쉘 스크립트 파일로도 충분히 가능한 일이어서 쉘 스크립트로 작성하게 되었다. 그리하여 쉘 스크립트를 통해 따로 프로세스 id를 찾지 않고도 프로세스를 종료하고, 나아가 이를 다시 시작하는 쉘 스크립트를 작성해보았다. 쉘 스크립트 작성 먼저 터미널에서 vi {파일명.sh}를 입력하여.. 2023. 3. 2.
[IntelliJ] 코드 에디터에 나오는 Usages, Code author 등의 힌트 위치 변경 IntelliJ로 코딩을 하다보면 이와 같은 usages, code author, related problems 힌트가 나타난다. 클래스나 메소드가 얼마나 사용되고 있는지, 누가 작성했는지, 연관된 오류가 몇개인지를 바로 알려주는 등 굉장히 유용한 기능이긴 하지만 이 힌트들이 줄을 차지하는 것처럼 보여서 코딩을 할 때 방해될 수 있으니 위치를 옮겨보자. 3개의 힌트 중 아무 힌트나 우클릭을 하면 메뉴가 나타나는데 Configure...를 클릭하여 설정창을 연다. 설정창을 보면 오른쪽에서 Potiosion을 설정할 수 있다. Default로 설정된 이 값을 Right로 변경한다. 같은 방법으로 Related problems, Usages, Code author 모두 변경하고 OK 버튼을 클릭한다. 한 줄을.. 2022. 12. 1.
[IntelliJ] 유용한 플러그인들 목차 CodeGlance Pro CodeGlance Pro - IntelliJ IDEs Plugin | Marketplace IntelliJ plugin that displays a zoomed out overview or minimap similar to the one found in Sublime into the editor pane. plugins.jetbrains.com VS Code처럼 스크롤바 옆에 현재 파일의 코드를 작게 보여준다. GitToolBox GitToolBox - IntelliJ IDEs Plugin | Marketplace Extends Git Integration with additional features. plugins.jetbrains.com 프로젝트가 Git에 연동되어 .. 2022. 11. 30.