전체 글 70

Java의 빌드툴로 Maven 사용 시 Junit의 scope 관련 에러

이번 포스팅은 Maven에 관한 내용입니다. pom.xml 파일에서 의존성의 주입 시 여러가지 속성들이 존재하지만 scope 속성에 관련된 내용입니다. scope는 해당 의존성이 어떤 레벨에서 까지 영향을 미치지는지를 기술하는 속성입니다. 예를 들어서 실제 컴파일에서는 사용하지 않고, 테스트를 사용할 시에만 라이브러리를 사용하겠다. 이럴때 test라는 범위를 지정해주면 이 라이브러리는 실제 src/main의 영역에는 의존성이 추가되지 않고, src/test라는 영역에서만 의존성을 주입하게 됩니다. 이 포스팅은 이로인해 발생하는 에러때문에 작성되었는데, 정확한 이유는 알 수 없지만 svn에 의하여 버전관리되는 프로젝트에서 pom.xml 파일에 junit 관련 의존성 주입이 다음과 같이 되어 있는 상황이었고..

JAVA 지역 변수의 범위 최소화

이전의 정적 팩터리 부분에 이어서 effective java의 내용을 정리한 글입니다. C와 같이 역사가 깊은 프로그래밍 언어의 경우 지역 변수를 코드의 첫 블럭에 선언하는 경우가 많다. 이러한 전통이나 습관이 이어져서 자바에서도 코드의 첫 블럭에 지역변수를 선언하는 경우를 많이 볼 수 있는데, 이는 자바처럼 어디서든 변수를 선언할 수 있는 언어의 경우 좋은 습관이 아니다. 지역변수는 유효범위를 최소로 줄이면 변수의 가독성과 유지 보수에 관한 장점이 크게 올라가는데 지역변수가 코드의 첫부분에 선언된것 만으로도 코드가 어수선해져 가독성이 떨어지게 된다. (변수를 실제로 사용하는 시점에서는 타입과 초깃 값이 기억나지 않을 수 있다.) 즉, 지역변수의 범위를 줄이는 가장 강력한 기법은 ‘가장 처음에 쓰일때 선..

[Mac] 특정 포트 종료하기

가끔 톰캣을 사용하다 보면 톰캣을 종료할때 제대로 종료 되지 않아서 8080포트 혹은 지정해둔 포트가 정상적으로 종료되지 않는 경우가 있다. 그런 경우 맥의 터미널에서 해당 포트를 직접 종료해주어야 하는데 방법은 포트 번호를 통해 프로세스 번호를 찾은 뒤 해당 프로세스를 종료해주는 방식이다. 즉 명령어는 [프로세스 번호 찾기] -> [프로세스 종료하기] 순으로 이어진다. 나의 경우 톰캣의 웹접속 포트를 8080으로 지정해두었기 때문에 8080포트를 종료하는 것으로 가정하고 진행하겠다. 관리자 권환으로 진행하기 위해 명령어에는 sudo를 붙여준다. sudo lsof -I :8080 sudo kill -9 “프로세스번호” 위와 같이 진행하게 되면 해당 프로세스를 깔끔하게 종료하게 된다.

OS 관련/mac os x 2019.10.01

안드로이드 스튜디오 예외 발생 시 중단점 만들기(Break on Exception)

안드로이드 스튜디오에서 예외 발생 시 예외 지점에서 브레이크 포인트가 잡히지 않는 경우 브레이크 포인트가 자동으로 설정되도록 만들어주는 설정입니다. 설정 켜기 기본적으로 안드로이드 스튜디오에서 이 설정이 켜져있지 않은것으로 알고 있는데, 이를 다시 실행시키기 위해서는 [Run] -> [View Breakpoints..] (단축키 사용 시 cmd + shift + F8 입니다.) 를 사용하여 다음 화면으로 이동 후 [Any exception] 을 체크 해줍니다. 다음과 같이 체크 해주면 됩니다. 특정 예외만 잡기 특정 예외만 등록하기 위해서는 좌측 상단의 + 버튼을 클릭해줍니다. 위의 + 버튼을 클릭하게 되면 사진과 같이 어떤 포인트에 관한 설정을 추가할지가 나타나는데 저희는 Java Exception을 ..

안드로이드 More than one file was found with OS independent path '?'

안드로이드 개발중 jar 파일 추가하고 나서 More than one file was found with OS independent path ‘build.xml’ 과 같은 에러가 발생했습니다. 대충 OS에서 중복된 경로가 발견돼서 에러가 발생하는 문제로 위의 경로를 gradle에서 패키징옵션의 exclude로 처리해주니 해결되었습니다. 프로젝트경로의 Gradle Scripts에서 build.gradle (Module: app) 이라고 되어있는 파일에 들어가서 android { compileSdkVersion 28 buildToolsVersion '28.0.3' packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' excl..

안드로이드 getDeclaredFields 활용하여 VO 객체에 한번에 값 넣기

안드로이드 개발 중 간단하게 VO에 임의의 값을 넣어서 사용해야 할 일이 있어 getDeclaredFields를 사용해서 구현하였습니다. 자바의 라이브러리라 자바에 포스팅 해야하나 안드로이드에 포스팅 해야하나 고민하다가 자바였으면 이렇게 개발하지 않았을 것 같아서 안드로이드 카테고리에 포스팅 합니다. 참고하실 분들은 보시고 참고해 주세요. getDeclaredFields로 프로퍼티 정보 가져오기 특정 객체의 클래스로 접근 시(getClass()사용) 내부의 프로퍼티들의 명을 getDeclaredFields를 활용하여 Field의 배열 형태로 가져올 수 있습니다. 예를 들어서 TestVO라는 클래스가 있고 이 클래스의 객체를 testVO라고 하겠습니다. 이때, TestVO testVO = new TestV..

안드로이드 Error running '' : The activity must be exported or contain an intent-filter

오랜만에 안드로이드 스튜디오에서 개발 중 뜬금없이 아래와 같은 에러가 발생 했습니다. 뭐지 싶어서 찾아보니 제가 가지고 있는 java 파일 중 MainActivity라는 액티비티가 모듈화 되어서 해당 액티비티로 빌드를 시도해서 발생하는 에러였습니다. 어떤키를 잘못 눌렸는지는 모르겠지만 상단 빌드창이 위와 같이 되어있어서 아래와 같이 변경해줌으로써 해결 되었습니다. 이런 간단한 실수는 하지 않기 위해 포스팅 해둡니다.

React Native 에서 Navigation 사용하기

React Native 공부중에 navigation 내용은 정리 해둘까 싶어서 작성합니다. 네비게이션 테스트 환경 빌드 expo 패키지 매니저 npm yarn 사용할 네비게이션 라이브러리 react-navigation Navigation 이란 거의 대부분의 모바일 앱은 단일 화면으로 구성되지 않습니다. 대체로 모바일 앱 여러개의 화면을 가지고 있기때문에 이러한 화면의 전환을 위해서는 이를 위한 라이브러리가 필요합니다. 사용자가 직접 구현하기 까다롭기 때문에 이를 위해 여러 회사에서 화면 전환을 위한 라이브러리를 만들었는데 오늘은 그 중 react-navigation을 사용해볼 것입니다. react-navigation 사용하기 프로젝트 생성 일단 react native 프로젝트를 새로하나 생성 하겠습니다...

DPT 기본 DPLauncher 수정

DPT 루팅 방법 : https://eodevelop.tistory.com/40 이 포스팅은 위 url에서 진행하는 루팅을 수행했다는 전제하에 진행됩니다. 이번 내용은 기존에 사용하는 E-Ink-Launcher를 가상 홈 버튼이 아닌 DPT 장비 상단의 물리 버튼에 메뉴를 추가하는 방식으로 사용해 볼까 합니다. 예를 들면 아래와 같은 화면이 구성됩니다. E-Ink-Launcher 설치 일단 기본적으로 E-Ink-Launcher 앱을 설치해야 합니다. 물리 키에 추가될 App 버튼과 연결될 App이기 때문에 아래의 링크에서 다운 후 DPT에 설치 하곘습니다. ADB가 사용 불가능 하다면 해당 과정을 진행할 수 없기 때문에 아직 사용이 불가능 하신 분은 여기에서 루팅 후 진행하시기 바랍니다. url :htt..

이것 저것 2019.08.14