전체 글 168

@Transactional Checked Exception 사용시 Commit 되는 이유

■ Java Exception 구성Java에서 Exception(Checked)를 상속한 RuntimeException(Unchecked) 계열들이 파생된다.* Java에서 설계적 관점 참고 글https://velog.io/@eastperson/Java%EC%9D%98-Checked-Exception%EC%9D%80-%EC%8B%A4%EC%88%98%EB%8B%A4-83omm70j ■ Spring 기본설정스프링 문서에 보면 Transaction의 기본 동작 설정은 Checked Exception(RuntimeException 계열 이외의 Exception)에 대해서 Comiit처리를 기본 설정값으로 안내하고 있다. (중요)https://docs.spring.io/spring-framework/refere..

JAVA·Spring 2024.09.04

표준프레임워크 MSA 프로젝트의 Admin 서비스를 GitHub Code Space에서 띄우는 방법

■ 전제조건1) GitHub에서 표준프레임워크 MSA 프로젝트를 Fork 한다.https://github.com/eGovFramework/egovframe-msa-edu2) GitHub Code Space 생성 ■ Code Space 구동방법1) 터미널 탭에서 frontend > admin 이동, node 버전 변경Next.js/React 기반의 MSA frontend를 구동하기 위한 기준 node 버전은 V14.8.0이다.nvm이 이미 설치되어 있으므로 편리하게 node 버전을 다음 명령으로 변경한다.$ nvm list$ nvm install v14.8.0$ nvm use v14.8.0$ node --versionv14.8.02) node 패키지를 설치 및 실행한다.$ npm install$ npm r..

JDK9 이상에서 Module 문제, The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml

■ JDK9 이상에서 Module 방식에 의한 라이브러리 인식 문제JDK9에서 Module이라는 개념이 도입되어 다음과 같은 오류가 발생할수 있다.The package org.w3c.dom is accessible from more than one module: , java.xml  ■ 대응 방법 #1 (충돌 라이브러리 제거)1) JDK의 해당 모듈과 충돌을 일으키는 jar 라이브러리를 찾아야 한다.Linux 또는 macOS에서 다음 명령으로 대상 jar 라이브러리르 찾는다.find ./ -type f -name '*.jar' | while read LINE; do echo $LINE;jar tvf $LINE | grep org.w3c.dom;done 2) 대상이 되는 라이브러리가 발견되면 운영 프로젝트..

JAVA·Spring 2024.08.01

전자정부 하이브리드앱 예제 최신환경에서 빌드 문제 해결 (Command PhaseScriptException failed with a nonezero exit code)

■ 개발환경HW : mac mini M2 (16G RAM)OS : macOS Sonoma 14.5IDE : Xcode 15.4 ■ 전자정부 표준프레임워크 DeviceAPI 하이브리드앱 v3.9 빌드시 문제 해결하기시뮬레이터에 빌드시에 당황스럽게도 다음 에러가 발생한다.Command PhaseScriptException failed with a nonezero exit code Target > Build Phases > Copy www directory 위치에 있는스트립트를 모두  삭제한다. ( 이미 프로젝트내에 HTML 리소스인 www 디렉토리가 있기 때문에 삭제해도 무방하다. ) 위 문제를 해결하면 다음 오류가 발생한다.SDK does not contain 'libarclite' at the path ..

Ubuntu Desktop 22.04 LTS 한글 키보드 설정하기

■ 터미널에서 언어팩 설치sudo apt update sudo apt install language-pack-ko sudo apt install language-pack-gnome-ko sudo apt install ibus ibus-hangul ■  다음 PolicyKit 관련 에러 나는 경우 PolicyKit-1을 설치하고 재시작 한다.sudo apt install policykit-1 sudo systemctl restart polkit  dpkg 구성을 재설정 한다.sudo dpkg --configure -a  ■  IBus 설정 터미널에서 ibus-setup 실행ibus-setup Input Method 탭에서 Add 버튼을 클릭한다. Korean - Hangul을 선택하고 추가한다. 개인적으로..

TIP-LINUX 2024.07.12

Ubuntu Linux Samba(SMB) mount 하기

■ 최신 CIFS 유틸리티 설치$ sudo apt-get update $ sudo apt-get install cifs-utils ■ SMB mount 명령나의 경우 다음 명령 및 옵션으로 연결이 가능하였다.$ sudo mount -t cifs "//[IP주소]/[Path경로]" /mnt/SMB_MSA -o username=[계정],password=[비전],sec=ntlmssp,vers=2.0,iocharset=utf8 ■ 대응방법 - sec 및 vers를 다음 값으로 조합하여 변경sec=ntlmsec=ntlmsspsec=ntlmv2vers=1.0vers=2.0vers=2.1vers=3.0 ■ dmesg로 확인한 오류 로그vers=1.0 대입시 발생한 오류sec=ntlm 대입시 지원하지 않는 오류 등등[..

TIP-LINUX 2024.06.10

Ubuntu 24.04 원격 데스크탑 연결 "Settings" is not responding

■ Desktop Sharing 설정시 먹통되는 현상"Settings" is not responding 메시지가 나오고 먹통이 된다. ■ 해결방법VNC 또는 원격 데스크톱 서비스를 다음 명령어로 재시작$ sudo systemctl restart gdm $ sudo systemctl restart xrdp 방화벽이 데스크톱 공유에 필요한 포트를 차단하고 있지 않은지 확인$ sudo ufw allow 5900/tcp $ sudo ufw allow 3389/tcp $ sudo ufw reload 시스템이 최신 상태인지 확인$ sudo apt update $ sudo apt upgrade 데스크톱 공유 서비스와 관련된 오류가 있는지 다음 명령어로 시스템 로그를 확인$ journalctl -xe 원격 데스크톱 공..

TIP-LINUX 2024.06.04

Ubuntu Linux USB 외장하드 마운트 하기

■ fdisk 명령으로 장치 확인$ fdisk -lDevice 항목에서 "/dev/sdb1" 확인 ■ mount 디렉토리 생성-p : 2단계 이상의 디렉토리 일괄 생성$ sudo mkdir -p /mnt/usbhdd2t ■ 외장 USB HDD mount 하기-t : 파일 시스템 타입# mount -t [파일시스템타입] [인식된 디바이스 경로] [마운트 디렉토리]$ mount -t ntfs /dev/sdb1 /mnt/usbhdd2t ■ Symbolic Link 추가하여 편리하게 사용하기ln : 파일시스템의 링크를 만드는 명령# -s 심볼릭 링크 생성 옵션$ ln -s /mnt/usbhdd2t ~/usb_hdd_2t ■ Symbolic Link 확인하기$ ls -l ~/usb_hdd_2tlrwxrwxrwx ..

TIP-LINUX 2024.05.31

Ubuntu Linux 다른 디스크에 있는 Logical Volume(논리 볼륨) 마운트 하기

■ lsblk 명령으로 사전 확인블록 장치(디스크, 파티션, 논리 볼륨 등)의 정보를 확인$ sudo lsblk  ■ Logical Volume 인식 여부 확인ubuntu--vg--alt-ubuntu--lv가 인식되어 있다. 기존 동일한 이름과 충돌을 피하기 위해 -alt-가 붙어 있다.$ ls -l /dev/mapper ■ 마운트 현황 확인논리 볼륨이 있는 /dev/sda3의 경우 직접 마운트 하지는 않고 논리볼륨을 마운트 하는게 확인된다.$ df -h ■ 논리 볼륨 마운트$ sudo mkdir -p /mnt/hdd_alt_ubuntu_lv# " hdd_alt_ubuntu_lv"는 예시임. $ sudo mount /dev/mapper/ubuntu--vg--alt-ubuntu--lv /mnt/hdd_al..

TIP-LINUX 2024.05.29

Vagrant VM 이미지 백업 및 복원 방법

■ 복원 환경Ubuntu 20.04 LTS■ 백업 방법 정리You can package your working VM into a new vagrant box$ vagrant package --output ./new-box-name.boxand then backup this boxAfter you reinstall your Mackbook, you can then add this box to your local vagrant directory$ vagrant box add new-box-name ./new-box-name.boxAfter that you initiate the vagrantfile through$ vagrant init mynewboxYou will get back the same VM a..

GU(GraalVm Updater) 없는 경우 수동으로 Python(GraalPy) 추가하기

■ GraalVM 버전 체계GraalVM이 현재 JDK 기준으로 배포되고 있으며별도의 GraalVM 버전을 확인할수 있다.Open JDK : 17.0.6GraalVM : 22.3.1 (현재 JDK 17, JDK 21, JDK 22 버전이 배포 되고 있음)$ java -versionopenjdk version "17.0.6" 2023-01-17OpenJDK Runtime Environment GraalVM CE 22.3.1 (build 17.0.6+10-jvmci-22.3-b13)OpenJDK 64-Bit Server VM GraalVM CE 22.3.1 (build 17.0.6+10-jvmci-22.3-b13, mixed mode, sharing) ■ GU(GraalVm Updater) 사용하여 설치된 ..

JAVA·Spring 2024.05.24

Ubuntu Desktop 22.04 VNC(macOS 원격) + RDP(Windows 원격 데스크톱 연결) 초간단 연결

■ 알고 보면 간단한데 다양한 방법들과 자료들이 있어 혼란스러워서 정리한다.■ Ubuntu Desktop 22.04 LTS 기본 설치후 apt-get 패키지를 추가로 설치하지 않았다.■  Settings > Sharing > Remote Desktop 이동 ■  필수 설정값Remote Desktop 활성화 => 필수Enable Legacy VNC Protocol 체크 => macOS 및 VNC 프로그램 접근을 위해 체크Remote Control 활성화 => 원격 마우스 및 키보드로 화면 제어 위해 필요원격 접속을 위한 별도 비번을 "Password" 항목에 기존 내용 삭제하고 새로 작성한다.(기존에 무작위 값 부여 되어 있음)  ■  Require a password 체크 필요 위와 같이 설정하면 즉시 ..

TIP-LINUX 2024.04.17

Mac 터미널 /usr/libexec/java_home 명령으로 SDK man 경로를 인식 시키기

■ java_home 명령으로 SDK man 경로 인식 시키기 $ /usr/libexec/java_home -V Matching Java Virtual Machines (4): 9999 (arm64) "SDKman" - "SDKMAN Current JDK" /Library/Java/JavaVirtualMachines/sdkman-current/Contents/Home 17.0.9 (arm64) "Homebrew" - "OpenJDK 17.0.9" /opt/homebrew/Cellar/openjdk@17/17.0.9/libexec/openjdk.jdk/Contents/Home 11.0.11 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 11" /Library/Java/JavaVir..

TIP-맥OS 2024.04.02

Eclipse Boot Dashboard에서 한개 프로젝트로 멀티 인스턴스 띄우기

■ 필요한 이유 한개의 Boot Project로 여러개의 기능이 동일한 다중 인스턴스를 띄워야 할 경우가 있다. 이중화 이상의 테스트가 필요할 때이다. 이때 테스트를 위해 소스 프로젝트를 N개 만든다면 여간 불편한게 아닐 것이다. ■ Boot Dashboard 설정방법 1) 우클릭후 > "Duplicate Config" 선택하여 설정을 추가 한다. 2) 추가한 설정에 우클릭 > "Open Config" 선택하여 설정 화면을 연다. 3) Arguments 탭 선택 > VM arguments 항목에서 Boot Server 포트를 지정한다. -Dserver.port=8081 ■ Boot Dashboard 각각의 인스턴스 구동 결과

macOS에서 /Pictures 디렉토리 삭제 및 외장하드에 심볼릭 링크(바로가기) 연결

■ 목적 기본 내장 SSD의 용량 제한으로 /Pictures 디렉토리를 외장 SSD에 Symbolic Link로 추가하고자 한다. ■ Pictures 디렉토리 삭제 시도 $ sudo rm -rf ~/Pictures rm: Pictures: Operation not permitted 찾아보니 OS에 의해 "시스템 무결성 보호"되어 다음과 같은 메시지가 표시된다. 굳이 Pictures 디렉토리를 이렇게 까지 보호 해야 되나 싶어 해결 방법을 찾았다. ■ 터미널 전체 디스크 접근 권한 적용후 다시 시도 애플 로고 > 시스템 설정 > 개인정보 보호 및 보안 > 전체 디스크 접근 권한 다시 /Pictures 디렉토리 삭제 시도 하면 삭제가 가능하다. $ sudo rm -rf ~/Pictures 외장 SSD에 심볼..

TIP-맥OS 2024.03.25

ERROR: Could not find a version that satisfies the requirement tensorflow_text (from versions: none) - macOS m2

■ tensorflow-test 설치 오류 $ pip install tensorflow-text ERROR: Could not find a version that satisfies the requirement tensorflow_text (from versions: none) ERROR: No matching distribution found for tensorflow_text ■ macOS 환경 mac mini m2 깡통(8Core CPU + 10Core GPU) + 16G RAM macOS Sonoma 14.3.1 Anaconda v2023.09-0 (Python 패키지 관리) Python v3.11 Tensorflow-macos v2.15.0 Tensorflow-metal v1.1.0 * 참고로 현..

mac Mini m2 깡통 vs Nvidia GTX1050 Tensorflow GPU 환경 속도 비교

■ Mac mini 설치환경mac mini m2 깡통(8Core CPU + 10Core GPU) + 16G RAM macOS Sonoma 14.3.1Anaconda v2023.09-0 (Python 패키지 관리)Python v3.11Tensorflow-macos v2.15.0Tensorflow-metal v1.1.0 ■ Nvidia GPU 설치환경GPU : GTX-1050 2GBCPU : Intel i5-8500 (6Core) DesktopUbuntu Desktop 22.04 LTSNVidia Driver v535 (2024-03-04 현재 최신)CUDA x86_64 v11.8 (v12.2 호환 불가)cuDNN v8.6.0.163 (v8.9.7 호환 불가) Anaconda v2023.09-0 (Pytho..

macOS Apple Silicon m1/m2/m3에서 Tensorflow GPU 환경 구성하기

■ 기본 설치환경 mac mini m2 깡통(8Core CPU + 10Core GPU) + 16G RAM macOS Sonoma 14.3.1 Anaconda v2023.09-0 (Python 패키지 관리) Python v3.11 Tensorflow-macos v2.15.0 Tensorflow-metal v1.1.0 ■ 설치후 결론 - Linux 환경에서 CUDA 설치가 까다로운데 비해 macOS Metal 기반 Tensorflow는 설치가 아주 쉬웠다. ( pip로 간단하게 설치 완료) ■ 설치 방법 Anaconda VM 환경 추가 ( Python v3.11 기반 ) $ conda create -n tf-mac-metal python=3.11 Anaconda 생성한 환경으로 전환 (24-03-05 현재 ..