본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA

Development165

[디비 파기 | PMD] MisplacedNullCheck MisplacedNullCheck우선순위 : 3 다음의 샘플 코드의 if문 내에 있는 null 체크 구문은 모두 잘못된 위치이다. 이 구문들은 만일 a가 null이라면NullPointerException이 발생한다. 샘플코드112345public class Foo { void bar() { if (a.equals(baz) && a != null) {} }} 샘플코드212345public class Foo { void bar() { if (a.equals(baz) || a == null) {} }} 부연 설명논리 연산에서 &&와 ||는 연산자 앞에 있는 조건을 먼저 확인하고 그 결과에 따라 연산자 뒤에 있는 조건을확인할 지 말 지 결정을 하게 된다. 즉 어떤 상황이건 a.equals(baz)를 먼저 수행하.. 2016. 2. 28.
[디비 파기 | PMD] AvoidDecimalLiteralsInBigDecimalConstructor AvoidDecimalLiteralsInBigDecimalConstructor우선순위: 3 사람들은 보통 new BigDecimal(0.1)이 정확히 0.1과 같을 것이라고 생각한다. 하지만 실제로는0.1000000000000000055511151231257827021181583404541015625의 값을 갖는다.이것은 0.1이 정확히 double을 표현하는 수가 아니기 때문이다. 따라서 생성자를 통해 전달되는 숫자형의 값은 기대와는 다르게 0.1과 같지 않게 된다. 반면에 String형을 사용하는 생성자에서는 그 값이 정확하게 일치한다. new BigDecimal(“0.1”)은정확하게 0.1과 같다. 그러므로 일반적으로 문자열을 파라미터로 전달하는 생성자의 사용이 권장되는 것이다. 샘플 코드 1123.. 2016. 2. 28.
[디비 파기 | PMD] ClassCastExceptionWithToArray ClassCastExceptionWithToArray특정 클래스가 담긴 Collection 객체로부터 Array를 얻어올 경우 Collection.toArray() 메소드의 파라미터로특정 클래스의 배열형을 넘겨주어야 한다. 그렇지 않으면 ClassCastException이 발생을 한다. 샘플 코드123456789Collection c = new ArrayList();Integer obj = new Integer(1);c.add(obj); // PMD 룰에 위배되며 이 문장을 실행하는 경우 ClassCastException 발생Integer[] a = (Integer [])c.toArray(); // PMD 룰에 위배되지 않으며 정상 처리된다.Integer[] b = (Integer [])c.toArray.. 2016. 2. 28.
[디비 파기 | PMD] UnconditionalIfStatement, CollapsibleIfStatements UnconditionalIfStatement조건이 없는 if문은 피하라! 샘플코드12345678910111213public class Foo { public void close() { if (true) { // fixed conditional, not recommended // ... } } } 샘플코드와 같이 if문의 조건절에 true나 false를 직접 대입하는 문장을 은근히 자주보게 된다.논리 전개상 true가 들어가면 무조건 실행되는 문장이고 false가 들어가면 무조건 실행되지 않는 문장이니if문이 무슨 의미가 있는가? if문의 조건절에는 상황에 따라 달라질 수 있는 문장만을 사용하자. CollapsibleIfStatementsif문 합치기 샘플코드123456789101112131415// 원래.. 2016. 2. 28.
[디비 파기 | PMD] ReturnFromFinallyBlock외 8건 ReturnFromFinallyBlock Avoid returning from a finally block, this can discard exceptions.finally 블록에서 리턴하는 것을 자제하라. exception 처리가 무시될 수 있다. 샘플 코드123456789101112131415161718192021public class Bar { public String foo() { try { throw new Exception( "My Exception" ); } catch (Exception e) { throw e; } finally { return "A. O. K."; // 이 곳에서 리턴 하는 경우 catch문이 무시되고 정상인 것처럼 리턴 } // 처리된다. } } 다들 아시다시피 fina.. 2016. 2. 28.
[Spring 3.1.1] datasource 2개 사용하기. Spirng 3.1.1 + MyBatis + jQuery로 웹 사이트를 구현하고 있다. 그런데 현재 시스템에서 서로 다른 2개의 DB를 사용을 하고 있는 상태이다. 물론 한쪽 DB로 접속해서 소유권을 명시적으로 기술해서 타 DB의 테이블에 대한 작업을 진행할 수 있지만 일단 datasource 2개를 별도로 만들기로 했다. 다만 Spring 설정은 pure java 설정으로 진행했다. 방법을 찾기 위해 구글과 네이버를 통해 검색을 해보았지만 springboot에 대해서는 pure 자바 설정에 대한 자료가 많은 반면 Spring에 대해서는 아직까지도 대부분의 설정이 xml 파일을 이용해서 이루어지고 있었다. 게다가 springboot는 JPA + Hibernate밖에 보이질 않아서 MyBatis 설정은 찾.. 2016. 2. 28.
[AngularJS] $scope 상속에 대해 유의할 점 일단 controller는 상속이 되고 controller에 사용되는 $scope 역시 상속이 된다는 점을 알고 있었다.하지만 그 구체적인 동작 방식을 모르다보니 상당한 삽질을 하게 되었다. 일단 오늘 정리할 것은 ng-model을 이용하여 양방향 바인딩을 할 때 $scope 상속이 어떻게 동작하는지이다. 컨트롤러 구성 app.controller("controller1", function ($scope) { $scope.parentdata = "parent scope";}); app.controller("controller2", function ($scope) { $scope.childdata = "child scope";}); html 코드 {{parentdata}} -------------------.. 2015. 8. 12.
[주의!] Enterprise환경에서 Swift 개발 시 주의할 점! 오늘 SM 업무 수행 중인 모 기업에서 추가로 개발 중인 앱 개발자한테 연락이 왔다.전달받은 인증서와 프로비저닝으로 빌드하고 In House 배포는 되었는데 그쪽 개발자가 확인한 바로는 Swift 배포 이전에 생성된 인증서로는 Swift 관련 라이브러리 처리 시오류가 발생한다는 것이다. 관련 내용 https://developer.apple.com/library/ios/qa/qa1886/_index.html https://www.airsignapp.com/ios-apps-using-swift-crash-when-signed-with-inhouse-certificate/ 아직 정확하게 확인은 못하였지만 기업 환경에서 Swift 개발 시 주의해야 할 것 같다. 2015. 5. 28.
[Tip] 빌드 설정 값을 쉽게 확인하자!!! 실로 오랜만에 Spring (boot)로 작업을 하려다보니 많은 것이 바뀌었다.예전에는 그냥 필요한 라이브러리 집어넣고 Ant로 빌드하는게 끝이었는데... 이젠 Maven, gradle, Ivy 등 다양한 빌드 틀들이 존재한다.그런데 여기서 좀 혼란스러운 것은 바로 의존성 설정...대부분 프로젝트 생성시 기본적으로 포함이 되지만 나중에 추가하는 경우어던 이름의 어떤 버전을 설정해야 하는지 막막한 경우가 있다. 그런데 이런 사이트가 있네~!!이런 고마울데가~ㅠㅠ http://mvnrepository.com 앞으로 빌드 설정에서 헤맬 일은 없겠네. 2015. 4. 29.
반응형