기존의 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 빨강토끼
,

나는 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 빨강토끼
,