콘텐츠로 건너뛰기

Programmer

wordpress permalinks 404 오류

워드프레스 Permalinks 404 에러 워드프레스를 설치하면 기본 링크가 http://localhost/?p=123 처럼 표시된다. ?p 처럼 파라미터로 받는 것보다는 restful한 느낌의 URL이 좋아서 Permalink 변경을 했더니 404 에러가 발생한다. 찾아보니 rewrite rule을 정의하는데 필요한 권한이 없어서 그런 것이었다. wordpress가 설치된 디렉토리에 .htaccess 파일에 아래처럼… 더 보기 »wordpress permalinks 404 오류

@SuppressWarnings 활용

Overview 나는 @SuppressWarnings 를 별로 좋아하지 않는다. 코드를 잘 만들면 되는데, 굳이 정적분석을 무시할 필요가 없다는 생각때문이다. 그런데 코딩을 하다보니 반드시 써야할 경우가 생겼다. 단순히 IDE에서 노란 밑줄을 보고 무시해도 되지만, 불필요한 경고가 너무 많아지면 정말 필요한 경고를 무시하게 되는 경향이… 더 보기 »@SuppressWarnings 활용

ModelAndView의 addObject() 분석

최근에는 API서버만 개발하다보니 RestContoller만 다루다가, 간만에 ModelAndView를 다룰 일이 생겼다. 오랜만에 ModelAndView를 사용하니 Object를 어떻게 추가해야하는지 기억이 가물가물해서 찾아본 김에 기록을 남긴다. ModelAndView를 다룰 때는 단순히 return new ModelAndView("/foo");와 같이 쓰는 경우는 드물고, 대부분 아래처럼 object parameter를 mapping해서 사용하게 된다.

위의… 더 보기 »ModelAndView의 addObject() 분석

Java8에서 interface 변경

자바8에서 interface에 default라는 지시자가 추가되었다. 원래 자바의 interface에는 구현체가 들어갈 수가 없었다. 느슨한 결합에 대한 최소한의 제약 사항과 상수정도를 지정해줄 수 밖에 없었다.

만약 여러 가지 객체에서 사용되는 공통 메소드를 지정하고, 필요한 경우에만 다르게 지정하고 싶으면 abstract class를 사용해야만… 더 보기 »Java8에서 interface 변경

JPassKit 적용중 오류 발생

서비스에서 ios wallet을 제공하려고 하니, 예전과는 다르게 서버단 통신을 통해 인증받는 절차가 추가로 생겼단다. 다만, 애플에서 제공하는 서버쪽 데모를 보면 ruby로 만들어져있다. 왜 하필 루비인가? swift도 아니고… 여튼 그걸 java로 porting하려니 이미 만들어 놓은 것이 있을 것 같아서 구글링했더니, jpasskit이 그나마… 더 보기 »JPassKit 적용중 오류 발생

Integer.getInteger()의 잘못된 사용

애시당초에 올바른 데이터타입을 사용했다면 문제가 없었겠지만, 레거시 코드에 붙이다보면 타입캐스팅이 필요한 경우가 있다.

  평상시라면, required=true인 값이기 때문에 apache commons를 이용해서 파싱했을 것이다

  그런데 이후에 로직이 변경될 경우(가령, required가 빠진다거나), NumberUtils의 default value = 0으로 적용되면 side-effect이… 더 보기 »Integer.getInteger()의 잘못된 사용

JPA datetime 오류

JPA에서는 persistence context 라는 개념이 있어서, 사실상 DB와 Application 사이에 하나의 proxy가 더 존재한다. 캐시나 관리 등의 측면에서 장점도 분명이 있지만, mybatis와 같이 direct로 데이터를 주고 받을 때와 다르게 data의 sync가 맞지 않으면 곤란한 경우가 발생한다. 그 중에 하나가 datetime… 더 보기 »JPA datetime 오류

Mysql In절의 ordering

간혹 쿼리를 할 때, 한 번에 select하기 위해 in절을 이용하게 된다. 다만 이 in절이라는 게 순서를 보장하지 않는다. optimizer에 plan에 따라서 움직이겠지만, 결국은 해당 값이 있는지만 체크하기 때문에 실제로 in절 내의 순서는 내가 List로 전달했다 하더라도 쿼리 결과에 별 영향을… 더 보기 »Mysql In절의 ordering

페이스트재킹

페이스트 재킹이라고, 카피 이벤트를 핸들링해서 유저가 보고 있는 화면과, 복사된 화면이 다르게 하는 경우가 있다. 위의 경우에는 echo “not evil” 이 실행될 거라 예상하고 복사해서 터미널에 붙이는 순간, 실제로는 echo “evil”이 실행된다. 물론 대부분 관리자 권한에 대해서는 따로 체크하겠지만,… 더 보기 »페이스트재킹

intellij 설정 – junit을 쉽게 하는 방법

Intellij 15부터는 각 테스트를 IDE Code창에서 바로 실행시키는 건 알고 계시겠죠? 왼쪽 편에 화살표를 누르면 바로 테스트 실행이 뜹니다. class도 마찬가지고, method도 마찬가집니다. 사실 단축키(ctrl + shift + R)로 해당 메소드에서 실행을 시키기도 합니다. 근데, 계속 테스트 컨텍스트를 선택하라는 메시지가… 더 보기 »intellij 설정 – junit을 쉽게 하는 방법