기존의 Maven 으로 작성된 프로젝트를 Gradle 로 변경하는 작업을 하였다.

자신있게 gradle build 를 했다.

그런데 Maven 으로 잘되던 것이 갑자기 test step 에서 error 가 나는것이다.

이유는 
import static org.hamcrest.CoreMatchers.containsString; 
에서 containsString 을 못찾는것이다.

이유를 찾아보니 
JUnit 에 종속적인 hamcrest 의 org.hamcrest 와 
org.mockito에 있는 org.hamcrest 가 충돌나는 것이었다.

정확한 해결책인지는 아직도 확신은 안들지만 
아래같은 순서로 [프로젝트네임].gradle 파일의 내용을 수정하니 잘되었다.

dependencies {  
  testCompile group: 'org.hamcrest', name: 'hamcrest-core', version: '1.3'
  testCompile group: 'org.mockito', name: 'mockito-all', version:'1.10.19'
  testCompile group: 'junit', name: 'junit', version:'4.12'
}

아마도 dependencies 하는 순서대로 호출시 참조하는 것 같다.

Posted by 빨강토끼
TAG Gradle

댓글을 달아 주세요

나는 java 에서 배열을 shift 하는 방법이 가끔 헛갈릴때가 있다.

그중 rotation left 하는 방법을 정리하였다.

그런데 이 방법은 메모리를 주어진 배열의 2배를 사용한다. 주어진 배열만큼의 배열을 하나 더 생성하여서 옮겨진(rotation left) 위치에 copy를 하는 방식이다.

좀 더 효율을 높히기 위하여 생각할수있는 방법은 크게 2가지이다.

  1. 메모리 사용을 줄이기 위하여 직접 in-place 방법으로 처리하는 방식
  2. 속도를 높히기 위해서 하나하나를 copy하는 방식이 아닌 block단위로 copy하는 방식

1번 소스

2번 소스

Posted by 빨강토끼

댓글을 달아 주세요

  1. lsof 파일명 
    지정한 파일을 엑세스 하고 있는 프로세스의 정보를 보여준다.

  2. lsof 경로명 
    지정한 디렉토리를 엑세스 하고 있는 프로세스의 정보를 보여준다.

  3. lsof -i 
    모든 네트워크에 연결되어 있는 프로세스와 파일의 정보를 보여준다. 
    ex)lsof -iTCP // TCP에 연결되어있는 프로세스와 포트의 정보를 보여준다.

  4. lsof -p 프로세스ID 
    지정한 프로세스와 고나련된 프로세스와 파일의 정보를 보여준다.

  5. 해킹추적 시나리오 
    $ lsof -i // 기본포트연것을 확인한다. 
    $ lsof -p // 프로세스를 분석한다. 
    $ lsof /home/홈페이지 디렉토리 // 특정디렉토리에 있는 프로세스 검사 
    $ lsof /tmp // 임시파일 관련 프로세스 분석 
    $ lsof /dev // 정규 해킹 디렉토리 분석


Posted by 빨강토끼
TAG lsof

댓글을 달아 주세요