이클립스에서 사용하는 일반적인 플러그인은 다음과 같다.


apply plugin: 'java'
apply plugin: 'eclipse'



gradle build를 하면 jar파일이 잘 생성되는데 배포용 lib들을 깔끔하게 모아주는 방법이 없을까 찾아봤더니 있었다.


apply plugin: 'java-library-distribution'


build\distributions 폴더에 tar, zip 두가지 형태의 배포용 압축 파일이 생성된다.


단독 실행형 jar를 생성할 경우엔 다음 플러그인이 좋다.

apply plugin: 'application'


저작자 표시 비영리 변경 금지
신고

eclipse neon으로 옮기면서 기존에 .gradle 을 삭제하고 다시 설정 하게 손보는 중이였다.


딱 한 프로젝트만 error표시가 뜨는데 딱히 에러 메시지는 보이지도 않고 이상했다.


여기 저기 옵션을 뒤적거리다 보니 에러 표시가 보였다.


Persisted container 저게 구버저전 호환용인가? 뭐지?  나는 Gradle을 사용하니 필요가 없을것 같았다.


샘플로 프로젝트를 생성해보니 저런 항목은 없다.  기존 프로젝트 호환용으로 설정된게 아닌가 싶다.


remove로 지우니 에러 표시가 사라지고 깔끔하게 동작한다.


아마도 일반적인 상황에서는 안생길듯 하다. 내경우엔 개발중인 SNAP SHOT을 포함시켜서 발생한것으로 보인다.



저작자 표시 비영리 변경 금지
신고

이클립스에 gradle 을 사용할때 보통



이걸 설치 하거나 수동으로 설치를 했었는데


neon이 새로나와서 테스트 해보려고 살펴보니 못보던 플러그인이 보였다.


Buildship 이라고 새로 나온 모양이다.


기존플러그인을 삭제하고 새로 설치를 하니 프로젝트 아이콘이 초기화되었다.

프로젝트 형식을 변환하자.



기존에 gradle플러그인은 뭔가 좀 intellij에 비해서 이질적이였는데


샘플 프로젝트를 생성해보니 좀 더 자연스러워진 느낌이다.


새로 프로젝트를 만들어봤다.


Gradle Project를 선택하고 프로젝트 명을 입력하고 다음을 누르면 쉽게 프로젝트가 생성된다.



프로젝트의 구조가 gradle답게 변했다.

Tasks에서 build를 하면

결과가 보이고


프로젝트 경로의 Build\libs에 보면 jar파일이 잘 생성되어 있다.


기존 플러그인에 손이 익어서 새로운 시스템이 좀 불편해 보이는 점도 있는데 차차 적응 해나가야지




저작자 표시 비영리 변경 금지
신고

maven은 잘 모르는 관계로 그동안은 저장소에서 jar파일을 다운받아 사용했었는데 

도움말 문서를 자세히 살펴보니  maven  pom.xml에서는 사용이 가능하게 되어 있다.


Where can I get the latest release?

There is currently no stable release of Imaging. However you can pull the latest SNAPSHOT from the Apache snapshot repository by adding the snapshot repository to your pom.xml:

<repository>
  <id>apache.snapshots</id>
  <name>Apache Development Snapshot Repository</name>
  <url>https://repository.apache.org/content/repositories/snapshots/</url>
  <releases>
    <enabled>false</enabled>
  </releases>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>

Then you can use the SNAPSHOT version of Commons Imaging in your pom.xml:

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-imaging</artifactId>
  <version>1.0-SNAPSHOT</version>
<dependency>

그렇다는것은 gradle에서도 된다는건데?


잠시 구글링을 해보고  다음과 같이 repositories를 추가 한다.

repositories {
    mavenCentral()
    maven {
        url "https://repository.apache.org/content/repositories/snapshots/"
    }
}


dependencies는

compile 'org.apache.commons:commons-imaging:1.0-SNAPSHOT'


마지막 스냅샷을 잘 가져온다. 새로운 스냅샷이 등록되면 갱신이 되는지는 아직 확인 못했음


새로운 스냅샷이 등록되면 gradle refresh할 때 갱신된다.

저작자 표시 비영리 변경 금지
신고

https://github.com/eclipse-color-theme/eclipse-color-theme/issues/206


언제 부턴가 컬러테마를 적용한것이 기본값으로 적용되었다.


해결방법을 찾아서 해봤는데 잘된다.


테마를 클래식으로 바꾸고 재시작 - > 다시 다크테마로 선택을 하면 컬러테마가 유지된다.

저작자 표시 비영리 변경 금지
신고

자바로 간단한 API 웹 프로그래밍을 해야 해서 알아보다 보니


http://sparkjava.com/ 이 경량화 이면서 자바 초보인 내가 알아보기 쉽게 되어 있어서 선택했는데


문제는 배포방법을 모르겠어서 삽질이 시작되었다.


이클립스에서의 실행은 아주 쉽다.


이클립스용 Gradle를 설치해주고 (마켓에서 설치) 새로운 GradleProjet를 생성한다.




build.gradle에 sparkjava dependencies 를 넣어준다.


http://mvnrepository.com/artifact/com.sparkjava/spark-core/2.0.0


그리고 최종적으로는 war로 배포를 할것이니 war플러그인도 설정






테스트용 클래스를 하나 생성하고 코드를 sparkjava 홈페이지에서 그대로 가져온다음 실행을 누른다.

아..그전에 프로젝트 팝업메뉴Gradle -> Refresh All , Gradle -> Enable Dependency Managment





http://localhost:4567/hello 에 접속하면 끝!


개발은 이상태로 계속 하면 된다.


문제는 이렇게 개발한것을 어떻게 배포를 하느냐 인데

자바 초보인데다가 웹프로젝트도 처음이고 war파일을 톰캣이나 jetty에 wabapps경로어 넣으면 된다 정도의

아주 기초적인 지식만 가지고 하루종일 구글링을 해보고 밤잠 설쳐 가면서 삽질을 했는데 도데체 모르겠는것이다.


결국은 maven까지 깔아서 해봤는데도 잘 안되었다.

( 이 과정에서  gradle이 얼마나 쉬운지 체험했다.)


안되면 처음부터 천천히 보자..공식문서에는 다음과 같이 나온다.


Other webserver

To run Spark on a web server instead of standalone first of all an implementation of the interface spark.servlet.SparkApplication is needed. In the init() method the routes should be initialized. In your web.xml the following filter needs to be configured:

어쩌라고?



자세히보니 init()을 하란다....


어쩌라고?????



다시 구글링..


범인은 가까운데 있다지..ㅡ.ㅡ;;


Git의 Test코드에서 sample을 찾아 볼 수있었다.


다른 웹서버에서 사용하기 위한 web.xml 설정과

https://github.com/perwendel/spark/blob/master/src/test/webapp/WEB-INF/web.xml


이를 사용하기 위한 샘플 코드

https://github.com/perwendel/spark/blob/master/src/test/java/spark/servlet/MyApp.java



이대로 지금 작업중인 HelloSpark에 추가를 한다.


src/main/webapp/WEB-INF/web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <filter>
        <filter-name>SparkFilter</filter-name>
        <filter-class>spark.servlet.SparkFilter</filter-class>
        <init-param>
            <param-name>applicationClass</param-name>
            <param-value>org.gradle.Spark</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>SparkFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

자바 코드도 수정을 한다.


아까 테스트한 Hello World에 github에서 가져온 소스를 덧붙인다.

package org.gradle;
import static spark.Spark.*;
import spark.servlet.SparkApplication;

public class Spark implements SparkApplication{

    public static void main(String[] args) {

        staticFileLocation("/public"); // Static files
        get("/hello", (req, res) -> "Hello World");
    }

    @Override
    public void init() {
        // TODO Auto-generated method stub
        before("/protected/*", (request, response) -> {
            halt(401, "Go Away!");
        });
        get("/hi", (request, response) -> {
            return "Hello World!";
        });
        get("/:param", (request, response) -> {
            return "echo: " + request.params(":param");
        });
        get("/", (request, response) -> {
            return "Hello Root!";
        });
        post("/poster", (request, response) -> {
            String body = request.body();
            response.status(201); // created
                return "Body was: " + body;
            });
        after("/hi", (request, response) -> {
            response.header("after", "foobar");
        });
        try {
            Thread.sleep(500);
        } catch (Exception e) {
        }
    }
}

이클립스 메뉴에서 Window->Show View -> Other 에서 Gradle Tasks를 추가 하고

작업중인 프로젝트를 선택한 후 build를 더블클릭하면 build\libs 경로에 HelloSpark-1.0.war 파일이 생성되며

이것을 톰캣이나 다른 jetty 서버에 배포를 하면 된다.


ps.

staticFileLocation("/public"); // Static files

이함수는 임베디드 jetty에서는 아무데서나 써도 되지만 war로 배포 하겠다고 한다면

꼭 main에서 실행해야 한다. 이것 때문에 하루 삽질!

저작자 표시 비영리 변경 금지
신고

결론 : 결과값은 resultMap으로 받을 수 없다.


mapper.xml

<select id="getNumber" statementType="CALLABLE" parameterType="hashmap">
        { #{Result, mode=OUT, jdbcType=INTEGER, javaType=int} = call getNumber
            (
                #{NumKey, mode=IN, jdbcType=VARCHAR, javaType=String},
                #{Count, mode=IN, jdbcType=INTEGER, javaType=int},
                #{GetNumber, mode=OUT, jdbcType=INTEGER, javaType=int }
            )
        }
</select>

결과값(output)은 파라메터로 넘긴 map에 담겨서 넘어오며 return은 null로 넘어온다.


저작자 표시 비영리 변경 금지
신고

'지식창고 > Java' 카테고리의 다른 글

이클립스 컬러테마 문제  (0) 2014.11.26
Sparkjava 와 Gradle 그리고 배포  (0) 2014.09.29
mybatis procedure 삽질  (0) 2014.08.28
자바 EUC-KR, UTF-8 파일 둘다 읽는 방법  (0) 2014.08.12
Java Resize Library Test  (0) 2014.08.09
eclipse aptana git 문제  (0) 2014.05.29

http://khacademy.96.lt/wp/java/java-character-set의-이해


오늘 하루종일 삽질 하면서 테스트한 결과를 요약 하자면 다음과 같다.

위의 링크의 블로그의 코드가 큰 도움이 되었다.

  • String에 저장되는 코드는 유니코드이다.
  • 이 유니코드를 다른 코드로 내보낼때 사용하는것이 .getByte("EUC-KR") 같은 코드이다.
  • 만약 이클립스 인코딩이 UTF-8인경우 FileInputStream으로 EUC-KR을 읽어서 String으로 바로 저장을 하게되면 EUC-KR의 코드를 UTF-8로 생각하여 유니코드로 변환되어 저장되므로 이 데이터는 다른 코드로 변환이 불가능해진다.
  • 각기 다른 인코딩의 파일을 읽어야 한다면 byte 배열로 읽어들인 이후에 인코딩을 지정해야만 한다.


public class FileRead {
    public static void main(String[] args) {
        System.out.println("InputStream으로 읽기");
        System.out.println(new String(readFile2("utf8.txt")));
        System.out.println("utf8.txt -- 읽기완료");

        System.out.println(new String(readFile2("ansi.txt")));
        System.out.println("ansi.txt -- 읽기완료");

        try {
            System.out.println(new String(readFile2("ansi.txt"),"euc-kr"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        System.out.println("ansi.txt -- 읽기완료");
    }

   public static byte[] readFile2(String fileName){
        FileInputStream fis=null;
        byte[] data = null;
        try {
            fis = new FileInputStream(fileName);
            data = new byte[fis.available()];
            fis.read(data);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try{
                if(fis!=null) fis.close();
            }catch(IOException e){ ; }
        }
        return data;
    }

}


저작자 표시 비영리 변경 금지
신고

'지식창고 > Java' 카테고리의 다른 글

이클립스 컬러테마 문제  (0) 2014.11.26
Sparkjava 와 Gradle 그리고 배포  (0) 2014.09.29
mybatis procedure 삽질  (0) 2014.08.28
자바 EUC-KR, UTF-8 파일 둘다 읽는 방법  (0) 2014.08.12
Java Resize Library Test  (0) 2014.08.09
eclipse aptana git 문제  (0) 2014.05.29
  1. thumbnailator
    https://code.google.com/p/thumbnailator/
    코드 간결
    품질 중, 속도 하
  2. imgscalr
    http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/
    BufferdImage사용 코딩
    품질 하, 속도 중
  3. java-image-scaling
    https://code.google.com/p/java-image-scaling/
    BufferdImage 사용 코딩
    품질 상, 속도 상


java-image-scaling의 코드를 사용한 ImageUtil 클래스를 그대로 사용해도 좋을것 같다.



저작자 표시 비영리 변경 금지
신고

'지식창고 > Java' 카테고리의 다른 글

이클립스 컬러테마 문제  (0) 2014.11.26
Sparkjava 와 Gradle 그리고 배포  (0) 2014.09.29
mybatis procedure 삽질  (0) 2014.08.28
자바 EUC-KR, UTF-8 파일 둘다 읽는 방법  (0) 2014.08.12
Java Resize Library Test  (0) 2014.08.09
eclipse aptana git 문제  (0) 2014.05.29

이클립스에서 git을 사용해보고 있는데 처음에 개념이 서지 않아서 한참 삽질을 했다.


이클립스도 익숙하지 않은데다가 subversion을 tortoisesvn 을 사용해서 쓰고 있던지라 IDE에 통합된 Git은 생소하기만 하고 git에 대한 개념을 글로만 익힌터라 원격저장소 - 로컬 저장소 - 작업디렉토리의 관계에 대한 개념과

이클립스의 workspace에 대해서 모든게 엉켜있었다.


어느정도 프로젝트를 내보내고 commit하고 push하고 import하는걸 알아내고 테스트 하던중


메뉴가 좀 이상하다는걸 느꼈다.


정체불명의 Git 메뉴...


이건 뭐지? 내가 보던 EGit의 메뉴가 아닌데? 그래도 기능은 동작했다...잘 동작 했으면 그러려니 하고 아마 그냥 사용했을지도 모른다. 문제는 Comment가 깨진다는것이였다. (Git 저장소는 codebreak.com 를 사용중)


이와 관련된 플러그인을 삭제 하면 될것 같았는데 설치된 목록에는 보이지 않았다.


한참 메뉴를 살펴보다 보니 Share Project 메뉴에 aptana git 이 있는걸 보고 aptana에 Git이 포함되어 있다는걸 알았다.

해결 방법은 자동으로 aptana git과 연결이 되는 옵션을 풀어주면 된다.


Preferences > Team > Git > Automatically attach our git support to projects added that have git repositories.

아..이미 연결된 프로젝트를 다시 연결 시키는 방법은 찾지 못하여

삭제하고 다시 import를 하였다.


EGit의 메뉴


저작자 표시 비영리 변경 금지
신고

'지식창고 > Java' 카테고리의 다른 글

이클립스 컬러테마 문제  (0) 2014.11.26
Sparkjava 와 Gradle 그리고 배포  (0) 2014.09.29
mybatis procedure 삽질  (0) 2014.08.28
자바 EUC-KR, UTF-8 파일 둘다 읽는 방법  (0) 2014.08.12
Java Resize Library Test  (0) 2014.08.09
eclipse aptana git 문제  (0) 2014.05.29