검색

레이블이 eclipse인 게시물을 표시합니다. 모든 게시물 표시
레이블이 eclipse인 게시물을 표시합니다. 모든 게시물 표시

2022년 12월 20일

TIPS - java.sql.SQLException: Locale not recognized (맥에서 오라클 연결시 "로케일을 인식할 수 없습니다" 오류)

 맥에서 OS 가 업데이트 되면 Oracle Database 연결시 "Locale not recognized" 오류가 발생하며 이는 시스템설정의 언어 및 지역 설정 지역 선택 박스에서 (다른 나라를 선택하고 다시 대한민국을 선택하는 방식의) 해외 여행을 한번 하고 나면 정상 동작하는 이슈가 있었다. 

그림1. Ventura 언어 및 지역 설정

Ventura 업데이트 이후에는 위의 같은 조치에도 문제가 해결되지 않고 설정을 수정하여 조치해야하는 수고가 필요하다. 의문이 가는 것이 M1 MacBook Pro 에서는 동일한 이슈가 발생되지 않는  것으로 확인되고 있다. 


SQL Developer 

/Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/sqldeveloper.conf 에서 AddVMOption 옵션을 사용 아래와 같이 Locale 설정을 추가한다. 

AddVMOption -Duser.language=ko
AddVMOption -Duser.country=KR

테스트 환경은 아래와 같다.

◼︎ 노트북
  • Model : MacBook Pro (16-inch, 2019)
  • CPU : 2.3 GHz 8코어 Intel Core i9
  • GPU : AMD Radeon Pro 5500M 4 GB
  • MENORY : 16GB
  • DISK : 1TB SSD
  • OS : macOS 13.1(22C65)

◼︎ 프로그램
  • Oracle SQL Developer 22.2.1.234
  • Java 11.0.16.1

Eclipse (Tomcat)

Eclipse 를 개발도구로 사용하는 경우 대부분이 플러그인을 사용하여 톰켓을 설정하고 사용하게되는데 위와 동일한 속성값을 톰캣 런타임 옵션에 아래와 같이 추가한다.

-Duser.language=ko -Duser.country=KR

그림2. Eclipse Servers Tomcat Configuration

그림3. Eclipse Tomcat Configuration Edit Window

테스트 환경은 아래와 같다.

◼︎ 노트북
  • Model : MacBook Pro (16-inch, 2019)
  • CPU : 2.3 GHz 8코어 Intel Core i9
  • GPU : AMD Radeon Pro 5500M 4 GB
  • MENORY : 16GB
  • DISK : 1TB SSD
  • OS : macOS 13.1(22C65)

◼︎ 프로그램
  • Eclipse IDE for Enterprise Java Developers (includes Incubating components) 4.17.0
  • Java 11.0.16.1
  • Apache Tomcat 8.5

참고자료 

  1. An getting this error when i run my project: java.sql.SQLException: Locale not recognized
  2. My Oracle Support Banner java.sql.SQLException: Locale not recognized When Using -Duser.language and -Duser.region (Doc ID 2637901.1)

2022년 1월 11일

SpotBugs Maven Plugin 을 이용한 Maven 프로젝트 정적 보안 취약점 분석

FindSecurityBugs

자바 웹 어플리케이션과 안드로이드 애플리케이션에 대한 보안 감사를 지원하는 StopBugs 플러그인이다. Command Injection, XPath Injection, SQL/HQL Injection, XXE 및 Cryptography 취약점을 포함하여 128개의 다른 취약점 유형을 탐지할 수 있다.


Spotbugs 는 AVA 언어를 대상으로 하지만 Groovy, Scala 및 Kotlin 에서도 작동하는 정적 분석도구이다.

Development 환경

HW : MacBook Pro 2019

  • 2.3Ghz 8Core Intel Corei9
  • 16GB 2667 Mhz DDR4
  • SSD 1TB
  • OS : macOS Monterey 12.0.1

SW :

  • JDK 14.0.2
  • Visual Studio Code 1.63.2
  • Maven 3.8.4

Maven

적용하려는 Maven 프로젝트  pom.xml 파일을 아래와 같이 ① SpotBugs Maven Plugin 을 설정을 추가한다.


	
    
	
		
			
				org.apache.maven.plugins
				maven-compiler-plugin
				2.3.2
				
					${javac.src.version}
					${javac.target.version}
					${project.build.sourceEncoding}
				
			
			
			
	            com.github.spotbugs
	            spotbugs-maven-plugin
	            4.5.0.0
	            
	                spotbugs-security-include.xml
	                spotbugs-security-exclude.xml
	                
	                    
	                        com.h3xstream.findsecbugs
	                        findsecbugs-plugin
	                        1.10.1
	                    
	                
	            
        	 
        	
		
	


다음으로 아래 ② 필터 파일 추가한다. ( 세부 설정은 매뉴얼 을 참고. 따로 설정하여 테스트 하지 않음)
  • spotbugs-security-include.xml
  • spotbugs-security-exclude.xml

spotbugs-security-exclude.xml





spotbugs-security-include.xml


    
        
    


취약점 검사 및 결과 확인

이제 다음 명령을 사용하여 취약점을 검사하고 결과를 보도록 하자.

mvn compile
mvn spotbugs:spotbugs

spotbugs:spotbugs 는 컴파일된 코드(target/classes)를 요구하기 때문에 반듯이 컴파일 이후에 실행해야한다.


이메 마지막으로 분석 결과를 확인해보자. 결과 확인인 아래와 같은 명령을 실행하여 GUI 도구를 통하여 확인할 수 있다.

mvn spotbugs:gui


GUI 도구는 검사된 보안  취약점 사항에 대한 결과를 아래와 같이 보여 준다. 영어로 되어 있지만 보안에 관한 기본적인 이해가 있다면 어렵지는 않다.



참고자료


2021년 6월 19일

이미지/영상 프로세싱을 위하여 자바를 지원하는 환경으로 OpenCV 설치하기

자바 기반 웹 프로그램에 이미지/영상 프로세싱 처리를 구현하기 위하여 OpenCV (Open Source Computer Vision) 설치하려고 한다.

설치는 대상은 아래와 같다. 

Development
  • JAVA 1.8.x
  • Eclipse 4.17.0
  • Tomcat 8.x 
  • HW : MacBook Pro 2019 
    • macOS Big Sur 11.4
    • 2.3Ghz 8Core Intel Corei9 
    • 16GB 2667 Mhz DDR4
    • SSD 1TB 
Server 
  • Tomcat 8.5.58.0
  • Open JDK 1.8.0_292-b10
  • Oracle Cloud : VM.Standard.E2.1.Micro 
    • CentOS Linux release 7.9.2009 (Core)
    • 1 OCPU, 1GB MEMORY, 50GB Block Volume
    • 1Network 0.48 Gbps

맥북에 설치하기

설치는 Homebrew 을 사용한다. (Homebrew 는 이미 설치된것으로 가정)


그림1. The Missing Package Manager for macOS (or Linux)


① XCode & Apple Command Line Tools 설치

XCoce 는 앱스토어(App Store)를 통하여 설치한다.


그림2. App Store

또한 최신 make , gcc 등과 같은 도구 설치를 위하여 콘솔에 아래 명령을 입력한다.

   
sudo xcode-select --install

② 자바 빌드 도구인 Apache Ant 를 설치한다.
     
brew update
brew install ant

③ OpenCV 설치
다음 명령을 사용하여 homebrew 에서 제공하는  버전을 확인해보면 2.x, 3.x 버전만 지원하고 있다. 최신 버전 설치를 위하여 아래와 같이 소스를 빌드하여 설치한다.

  
  brew search opencv

자바 지원을 위하여 Opencv 패키지 설정에서 아래와 같이 수정한다. (Homebrew 에서 패키지는 Formula 라  부른다 )

  
  brew edit opencv

-DBUILD_opencv_java=OFF  을  -DBUILD_opencv_java=ON  으로 변경




만일 빌드과정에서 특정 자바 버전을 지정할 필요가 있다면 brew formula 의 cmake 파트에  -DOPENCV_JAVA_TARGET_VERSION=1.8 값을 추가해줘야 한다. 
  
  args = std_cmake_args + %W[
      -DCMAKE_OSX_DEPLOYMENT_TARGET=
      -DBUILD_JASPER=OFF
      -DBUILD_JPEG=OFF
      -DBUILD_OPENEXR=OFF
      -DBUILD_PERF_TESTS=OFF
      -DBUILD_PNG=OFF
      -DBUILD_PROTOBUF=OFF
      -DBUILD_TESTS=OFF 
      -DOPENCV_JAVA_TARGET_VERSION=1.8

다음 명령을 실행하여 설치를 시작한다.
  
  brew install --build-from-source opencv

소스에서 빌드하여 설치하는 것은 많은 자원이 소요된다.


약 17분 정도가 소요되었다.


 /usr/local/Cellar/opencv/4.x.x/share/java/opencv4/.

자바에서 사용하기 위해서  jar 파일과 오브젝트 파일이 필요하다. (설치경로 확인 필수)

오라클 클라우드 리눅스에 설치하기

① 빌드를 위한 도구들을 설치한다.

  
  sudo yum install cmake3 gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools 
  gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel 
  gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel 
  jasper-devel jasper-utils swig python libtool nasm build-essential ant
  

② OpenCV 홈페이지에서 최신 소스를 다운로드한다. 빌드를 위한 opencv 디렉토리를 생성하고 해당 폴더 아래에 다운로드한 소스파일 압축을 푼다. 이제 빌드를 위하여 opencv 폴더로 이동한다.

  

wget https://github.com/opencv/opencv/archive/4.5.2.zip
mkdir opencv
unzip 4.5.2.zip -D ./opencv
cd opencv

③ 아래 명령을 입력하여 빌드를 시작한다.  

  

    cmake3 -D CMAKE_BUILD_TYPE=RELEASE 
    -D CMAKE_INSTALL_PREFIX=/usr/local 
    -D INSTALL_C_EXAMPLES=ON 
    -D INSTALL_PYTHON_EXAMPLES=ON 
    -D OPENCV_GENERATE_PKGCONFIG=ON 
    -D BUILD_EXAMPLES=ON opencv-4.5.2/


make 명령시 -j 옵션은 병렬 처리를 위한 코어 수를 의미하며 코어 수는 nproc 명령을 사용하면 알 수 있다.
오라클 클라우스 서버의 경우 빌드에  많은 시간이 소요되었다. (1 시간 이상)

       
      make -j2



설치 역시 많은 시간이 소요된다.
  
      sudo make install

라이브러리 설치 위치 : /usr/local/share/java/opencv4

④ 정상 동작 확인을 위하여 간단 예제를 사용하였다.

 
    import org.opencv.core.Core;
    import org.opencv.core.CvType;
    import org.opencv.core.Mat;
    
    public class Hello {
    
    	public static void main( String[] args ){
    		System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
    		Mat mat = Mat.eye( 3, 3, CvType.CV_8UC1 );
            System.out.println( "mat = " + mat.dump() );
    	}
    }
    

테스트는 아래와 같이 소스를 컴파일하여 실행한다.

 
javac -cp /usr/local/share/java/opencv4/opencv-452.jar Hello.java

java -Djava.library.path=/usr/local/share/java/opencv4 -cp /usr/local/share/java/opencv4/opencv-452.jar:. Hello


⑤ Tomcat 환경에서 사용할 예정이기 때문에 아래와 같이 .bash_profile 파일에 네이티브 라이브러리 경로 추가한다. opencv-452.jar 은 사용하는 웹 프로그램의 WEB-INF/lib 복사해준다. 한가지 아쉬운 점은 무료로 사용하는 Oracle VM 의 성능이 MacBook Pro 와 너무 차이가 크다.

 

CATALINA_OPTS=' -Djava.library.path=/usr/local/share/java/opencv4 '
export CATALINA_OPTS ;


위와 같이 설치된 리눅스에서는 org.opencv.xphoto.Xphoto 패키지가 포함되지 않았다. 추가 모듈 설치가 필요한 부분으로 예상하고 git 에서 opencv_contrib 을 다운로드 하고 아래와 같은 방법으로 다시 빌드를 진행하였다. (처음에는 opencv 소스 역시 git 에서 다운하여 빌드를 하였으나 오류가 해결되지 않아 opencv_contrib 만 git 에 소스를 사용하는 방법을 사용했다.)

  
wget https://github.com/opencv/opencv/archive/4.5.5.zip
unzip 4.5.5.zip
git clone https://github.com/opencv/opencv_contrib.git
mkdir build 
cd build

cmake3 -D CMAKE_BUILD_TYPE=RELEASE \
-D OPENCV_EXTRA_MODULES_PATH=/home/opc/src/opencv_contrib/modules \ 
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON  \
-D INSTALL_PYTHON_EXAMPLES=ON  \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_opencv_ximgproc=ON \
-D BUILD_EXAMPLES=ON /home/opc/src/opencv-4.5.5
 
make -j2
sudo make install 

참고자료

2017년 11월 22일

YUI Compressor 을 이용한 웹 프로그램 성능 개선

웹브라우저를 통하여 실행되는 웹 프로그램은 가능한 가볍게 만드는 것이 중요하다.
가벼운 웹 프로그램을 만드는 가장 간단한 작업은 코드 축소, HTTP 압축등이 있다.

코드 축소와 관련하여 자바 스크립트 코드를 축소하는데 가장 널리 사용되는 도구에는 여러가지가 있지만 개인적으로는 YUI Compressor 를 선호한다.

참고로 CompressorRater 웹 사이트에서는 여러 도구들에 대한 성능 테스트할 수 있는 웹 기반의 도구를 제공하고 있다.

Eclipse Plugin 설치

Eclipse 에서 설치는 아주 간단하다. 다음의 버튼을 드레그하여 실행중인 Eclipse 에 끌어다 놓으면 설치가 진행된다. ( 플러그인 설치 사이트 )

Drag to your running Eclipse* workspace. *Requires Eclipse Marketplace Client

Eclipse 에서 사용하기 

코드 축소 대상을 선택하고 오른쪽 마우스 버튼을 클릭후 External Tools > Compress CSS 선택한다.
주의할 것은 동일 이름의 파일이 이미 존재하는 경우는 정상적으로 코드 축소 파일이 생성되지 않는다.


Eclipse Maven 에서 사용하기 

프로젝트를 Maven 을 사용하여 빌드하고 있다면 pom.xm 파일에 코드 압축 관련 설정을 통하여 빌드시 자동으로 처리되도록 할 수 있다.

먼저 YUI Compressor Maven plugin 플러그인을 사용하도록 pom.xml 파일을 아래와 같이 수정해주어야한다.

 

   net.alchim31.maven
    yuicompressor-maven-plugin
    1.5.1
    
        
            
                compress
            
        
    



다음으로 프로젝트의 스크립트 및 CSS 소스가 WebContent 폴더에 존재하고 아래와 같은 구조로 되어있다고 가정하자.


WebContent
├── css
    ├── community.ui
    └── bootstrap
├── js
└── fonts


또한 WebContent/css/community.ui 폴더의 특정 css 들만을 소스 압축하려고 한다고 하면 그리고 압축파일은 min.css 형식을 원한다면 다음과 같은 설정이 필요하다.

 

    
        net.alchim31.maven
        yuicompressor-maven-plugin
        1.5.1
        
          
            
              compress
            
          
           
        
            utf-8
            true
            
            .min   
            
            
            **/css/community.ui/community.ui.core.css
            **/css/community.ui/community.ui.glogals.css
            **/css/community.ui/community.ui.style.css
            
            ${basedir}/WebContent
            ${basedir}/WebContent 
                       
    



이제 Maven 빌드시 goals 을 package 또는 yuicompressor:compress 지정하여 파일 압축을 처리할 수 있다.

결론

일반적으로는 execludes 속성을 사용하여 기술하지만 대부분의 오픈소스들은 이미 소스 압축된 파일들을 제공하고 있고 직접 만들어 사용하는 css 또는 javascript 들만 압축을 하면 되기 때문에 위와 같이 include 옵션을 사용했다.