본문 바로가기

프로그래밍/Java

행안부 개발보안 가이드에서 누락된 SpotBugs Detector 정리 이번에 참여하는 프로젝트에서 SpotBugs와 FindSecurityBugs를 이용하는 보안탐지 작업을 진행하게 되었다. 그 과정에서 FindSecurityBugs에서는 탐지못하지만 SpotBugs 에서는 탐지할수 있는 탐지 룰(Detector)들이 몇몇 있는 것이 확인되었다. 탐지 룰들의 경우 대부분은 FindSecurityBugs에서 탐지 가능했으며 그중 일부는 SpotBugs 에서도 같이 탐지가 가능한 것들이었다. 그러나 개중 몇몇은 SpotBugs에서만 탐지 가능한 것들이 있었다. 이것들에 대한 정리가 별도로 되어 있질 않아서 이 부분만 정리해서 글을 작성했다. 참고로 이 글은 소프트웨어 개발보안 가이드(2017.1월).pdf 문서를 보고 작성한 것임을 알려둔다. 행안부 SW 보안약점 관련 Det..
Optional 클래스의 orElse와 orElseGet에 대한 정리 이번 글에서는 Java 8 에서부터 지원하기 시작한 Optional 클래스의 orElse와 orElseGet 메소드에 대해서 정리를 해보려한다. 이 글에서는 Optional 클래스가 무엇인지에 대해서는 언급하지는 않고 다만 orElse와 orElseGet 메소드 이 두 개의 메소드에 대해서만 집중해서 보려고 한다. 먼저 이 2개의 메소드가 하는 역할은 Optional 클래스 객체가 가지고 있는 실제 값이 null 일경우 무슨 값으로 대체해서 return 해줘야 하는 지를 정의한다. 역할은 같은 역할이지만 사용되어지는 파라미터는 다른데 이 부분은 다음과 같다. T orElse(T other) T orElseGet(Supplier
Eclipse에서 Darkest Dark Theme 적용 후 추가로 해줄것 Eclipse에서 Darkest Dark Theme 적용 후 Git과 연동하면서 색상이 보기 흉하게 바뀌는 상황이 있었다. 이유는 Git으로 파일 관리를 하면서 파일의 상태가 바뀌었을때 이에 대해 표현하는 방법때문이었다. 예를 들면 파일을 수정할 경우 Commit이 아직은 안되어 있는 상태이기 때문에 Uncommited 인데 이때 이 자원을 나타내는 background 색상이 흰색으로 설정되어 있어서 전체적으로 검은색 테마에서 배경색을 흰색으로 주다보니 어울리지 않아 보기 싫은 상황이 생겼다. 암튼 Darkest Dark Theme를 사용하면서 배경색이 흰 색으로 되어 있는 부분은 튀어 보이는 상황이 벌어지는 것이 있는데 일단 예를 들은 경우를 수정할려면..(차후에 이런 상황들이 또 일어나면 여기에 정리..
Map과 VO(Value Object)의 해묵은 논쟁과 나의 결론.. 프로그래머란 생활을 10여년 가까이 하면서 프로그래머들간에 이런저런 논쟁을 하게 되는 상황을 종종 보게 된다. 논쟁이란 것이 결론이 나는 것도 있고 그렇지 않은 것도 있다보니 진행중인 논쟁은 언제나 있기 마련이다. ORM 방식의 개발과 SQL 방식의 개발중 어느것이 나은가?, 왜 SpringFramework에 종속적이어야 하는가 등등 직간접적으로 몇가지 접하는 논쟁이 있다. 오늘은 그 중 데이터 전달을 Map으로 하는게 나을지, VO로 하는게 나을지에 대해 좀 얘기해보고자 한다. 먼저 이 논쟁이 나온 배경에 대해 이해를 할 필요가 있어 이 부분을 설명해보도록 하겠다. 우리가 어떤 엔티티(엔티티는 설계상의 용어이므로 잘 이해가 안되는 분은 클래스라고 생각하시길 바란다)를 구체화한 객체를 전송할때 이런식으로..
JBoss Application Server 7에 Oracle Database Connection Pool 생성시 주의점.. Spring을 사용하면서 Oracle Database Connection Pool을 등록할때마다 늘 발생하는 상황이지만.. Oracle 11g에 있는 ojdbc6.jar를 이용해서 Oracle Database Connection Pool을 구성하면 네트워크 관련 에러가 발생한다. 이 부분은 Spring 자체에서 Connection Pool을 만들든, Spring에서 별도의 Connection Pool 라이브러리(예를 들면 c3p0 같은 라이브러리..)를 사용하든, WAS에 Database Connection Pool을 만들어서 이용하든 항상 ojdbc6.jar를 사용하면 발생하게 되는데.. 이것을 ojdbc14.jar(내가 알기론 JDK 1.4 버전에 맞춰진 Oracle용 JDBC 드라이버로 알고 있음)..
Mybatis의 Plug-In을 이용한 SQL문 파라미터 바인딩 로그 출력.. Mybatis에서는 Plug-In을 이용하여 Mybatis가 쿼리를 실행하는 시점에 간섭하여 사용자가 정의한 별도 작업을 진행할수 있다. 예를 들면 쿼리가 실행되기 전 또는 실행된 후에 해당 쿼리가 몇번 실행됐는지 그 실행횟수를 업데이트하는 그런 예를 들수 있다. 이 글에서는 쿼리를 실행하기 전에 로그에 파라미터가 바인딩된 쿼리 로그를 출력하는 Plug-In을 설명하고자 한다. 이 글에서는 Mybatis Plug-In에 대한 구체적인 설명은 하지 않는다. 다만 이 글에서 보여주는 Source의 주석으로 관련 내용을 설명했으니 참고하기 바란다. log4jsql이나 log4jdbc같은 괜찮은 로그툴이 있으나 굳이 이것을 만든것은 로그의 출력형태가 반드시 로그 파일 형태로만 갈수는 없기 때문이다. DB에 기록..
Java Collection 정리된 내용 우연히 알게된 어떤분의 블로그 내용인데.. 잘 정리되어 있어서 퍼옴.. http://blog.naver.com/windziel/60048694876