Archive for 2월, 2014

[Tech] Cloude IDE Listup 2014

2014/02/27

Eclipse Orion http://www.eclipse.org/orion

Cloud9 IDE https://c9.io

codenvy http://codenvy.com

jsFiddle http://jsfiddle.net

Advertisements

Gradle wrapper proxy support

2014/02/20

Gradle wrapper behind a proxy
http://techdiary.bitourea.com/2012/03/gradle-wrapper-behind-proxy.html

gradlew 실행시 proxy 인자들을 제대로 인식시키는 방법. (이 문제로 몇번이나 gradlew 적용을 못하고 있었다.. )

위 글이 원문이고… 혹시 원문이 삭제될까봐 아래 간단한 기록을 남김.

해결방식은 JVM옵션(-D) 으로  proxy 정보를 넘기도록 처리하는것.

실행 :

gradlew build -Dhttp.proxyHost=www-xxx.com -Dhttp.proxyPort=80 -Dhttp.proxyUser=user1 -Dhttp.proxyPassword=user1

1) Windows batch file (gradlew.bat)

// GradleWrapperMain 호출 직전에 추가

@rem Add default JVM options by parsing command line. Anything starting with -D is option to java.
:SYSTEM_PROPS_EXTRACT
set _OPTION=%1
set prefix1=%_OPTION:~0,2%
if "%prefix1%" == "-D"
  SET DEFAULT_JVM_OPTS=%DEFAULT_JVM_OPTS% %_OPTION%=%2% 
)
shift
if not "%~1"=="" goto SYSTEM_PROPS_EXTRACT
2) Xnix shell script (gradlew.sh)
forvar in"$@"
do
    prefix=${var:0:2}
    if [[ $prefix == "-D" ]] ; then
    DEFAULT_JVM_OPTS=$DEFAULT_JVM_OPTS" "$var
    fi
done
functionsplitJvmOpts() {
    JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
thanks for SacrosanctBlood ( http://techdiary.bitourea.com/ )

[Tech] spring3.0 -> spring 3.2에서 ehcache 적용관련 작업 및 KeyGenerator 커스터마이징

2014/02/20

Spring을 3.0.X -> 3.2.7 로 변경하면서 cache추상화를 적용하는 과정에 대한 메모 및 KeyGenerator 작성 내용을 기록합니다.

spring 이 직접 cache 관련 annotation을 제공함.

 

1. 필요 library

ehcache-core-*.jar (local cache 사용인 경우 이것만.)

spring-context-support-3.2.*.jar ( cache.ehcache package 포함)

 

2. 해당 메소드에 적용

import org.springframework.cache.annotation.Cacheable;

@Cacheable(“cachename”)

public returnType methodName(params… ){ … }

 

3. 메소드명을 Key에 포함하는 KeyGenerator 작성 

> 기존 3.0에서 적용되는 cache는 기본으로 메소드명을 포함하기 때문에,

한개의 cache에 여러개의 메소드를 등록할 수 있었습니다. 그러나 3.1 이상에서는 기본 KeyGenerator가 parameter만으로 hashKey를 구성하기 때문에 호환성에 문제가 있습니다.  

세밀하게 관리할 경우 한 메소드당 한개가 적당하겠지만,

메소드가 많고 관리를 대충(?)해도 된다면 메소드 여러개를 묶는 3.0대 방식이 편합니다. 

그래서 하나 작성.

@Component(“cachePerMethodKeyGenerator”)

public class CachePerMethodKeyGenerator extends DefaultKeyGenerator {

    @Override
    public Object generate(Object target, Method method, Object… params) {
         return method.getName() + super.generate(target, method, params);
    }

}

4. 추가한 key-generator 등록하기

<cache:annotation-driven key-generator=“cachePerMethodKeyGenerator”/>

 

참고자료 : http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/cache.html

[Tech] spring ehcache 적용시 주의사항 ( spring 3.0.5)

2014/02/18

불필요하게 DB를 계속 읽어오지 않도록 ehcache를 적용해보았다. 

상세 가이드는 웹에서 찾아보면 될테고.. 

여기서는 작업 대한 메모와 “그대로 따라했는데도 안되는” 경우에 대한 경험을 메모하는 용도로 기록한다.

 

1. Spring 3.0.X 사용시 최소 library 

ehcache-core-2.6.8.jar (local cache만 사용시 )

ehcache-spring-annotations-1.2.0.jar (spring annotation 지원 APL 2.0)

guava-r09.jar ( ehcach-spring-annotations 에서 사용 )

spring-context-support-3.0.5.RELEASE.jar (spring 3.0.5 지원용)

 

2. cache annotation 적용 위치

servlet-context.xml 과 service-context.xml 이 각각 존재할 경우

service-context.xml 이 아닌 serlvet-context.xml 에 작성해야 정상적으로 service-context에서 가져온 service 들에 대해 cacheable 메소드를 intercepting 한다. ( component-scan 후에 하라고 나와있다.)

 

3. 메소드 적용시 주의사항

– Parameter가 사용자 객체일 경우 반드시 hashCode, equals를 구현해야함

– @Cacheable은 클래스가 아닌 메소드 단위임

– 클래스 내부의 호출은 인식하지 못함

from https://code.google.com/p/ehcache-spring-annotations/wiki/FrequentlyAskedQuestions

 

4. 로깅 ( log4j 에 다음 logger를 추가.)

    <logger name=”net.sf.ehcache.config”>

    <logger name=”com.googlecode.ehcache.annotations”>

 

5. 관련사이트 

http://ehcache.org/

https://code.google.com/p/ehcache-spring-annotations/