블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
01-06 19:54
 

달력

« » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
 

최근에 올라온 글

최근에 달린 댓글

 

다운로드

http://www.sencha.com/products/extjs/download/ 에서 Ext JS 4 를 다운로드 받습니다.
이 글을 작성하는 시점에는 Ext JS 4.0.2a 를 GPL 로 제공합니다.




Ext JS 4 디렉토리 구성

다운로드 받은 파일의 압축을 풀고, 아래의 디렉토리/파일을 작업 폴더로 복사 합니다.



/resources
/src
/ext.js
/ext-debug.js


작업 디렉토리는 Ext JS 에서 제공하는 가이드 대로 아래와 같이 구성하였습니다.




웹 애플리케이션의 시작점인 index.html 을 프로젝트 루트에 아래와 같이 생성합니다.




app.js 의 생성

모든 Ext JS 4 애플리케이션은 Application 클래스의 인스턴스로 부터 시작됩니다.

Ext.Application 에서 애플리케이션에 대한 별도의 설정이 가능합니다.

name 속성을 통해 전역변수를 설정하고 Ext.Loader 에 네임스페이스를 등록합니다.
appFolder 속성은 위에서 등록한 네임스페이스의 클래스 구조를 설정한 디렉토리를 설정합니다.
launch 함수는 애플리케이션 생성이 불려지는 함수를 정의합니다.


프로그램을 실행시키면 아래와 같은 화면이 나옵니다.




 

참고자료

http://docs.sencha.com/ext-js/4-0/#!/guide/application_architecture



Posted by 자수씨
, |

m2eclipse + WTP ... 팁???

Eclipse / 2011. 9. 9. 11:09


기존에 메이븐 디펜던시와 WTP 를 연동해서 쓸 때는 ".classpath" 파일을 수정해서 사용하였습니다.

/.classpath
<classpath>
  ...

  <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
      <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
  </classpathentry>
  ...

</classpath>


위의 방법보다는 배포와 직접 연관이 있는 "org.eclipse.wst.common.component" 파일을 수정하는게 일관성이 있어보입니다.

/.settings/org.eclipse.wst.common.component
<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module>
    ...
    <dependent-module deploy-path="/WEB-INF/lib" 
        handle="module:/classpath/con/org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">

      <dependency-type>consumes</dependency-type>
    </dependent-module>
    ...
  </wb-module>
</project-modules>


나만 그런가;;;

Posted by 자수씨
, |



Employee = Ext.define('Employee', {
    extend: 'Ext.data.Model',
    fields: [
        'id',
        {name: 'name', mapping: 1},
        {name: 'occupation', mapping: 2}
    ]
});
var myReader = new Ext.data.reader.Array({
    model: 'Employee'
}, Employee);

Ext 에서 제공해주는 ArrayReader 는 위와 같은 방식으로 정의를 하며, 데이터는 아래와 같은 방식이여야 합니다.

[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]


하지만 아래와 같이 하나의 배열에 담긴 데이터가 들어올 때 읽어들일 수 있는 방법은 존재하지 않습니다. (찾아본 바로는...)

[ 'vicki.co.kr', 'tistory.com', 'daum.net' ]

ArrayReader 로 읽더라도 스토어에는 'v', 't', 'd' 와 같이 앞의 한자리만 가지고오게 됩니다.


/app/ux/data/reader/SingleElementArray.js



위와 같이 단일 요소 배열도 처리할 수 있는 ArrayReader 를 확장한 후 아래와 같이 사용하면 끝~ 입니다.




Posted by 자수씨
, |

Ext JS 4.0 에서 제공해주는 "Row Editing Grid" 는 아래와 같이 Update 와 Cancel 버튼 밖에 없습니다.
(http://docs.sencha.com/ext-js/4-0/#!/example/grid/row-editing.html)




위의 기능에 Delete 버튼이 있으면 좋을 것 같아서 클래스를 확장해 보았습니다.

/app/ux/grid/plugin/DeletableRowEditing.js


/app/ux/grid/DeletableRowEditor.js



위와 같이 Editing 클래스와 Editor 클래스를 확장한 후 그리드 패널에 위에서 생성한 플러그인으로 설정하면 됩니다.

Row Editing Grid 정의


Deletable Row Editing Grid 정의
- 리스너에 deleterow 이벤트 핸들러를 추가하여 수정 중인 행에 대한 record 인자로 받아 처리합니다.
(나중에 내공이 더 쌓이면 내부 기능으로 붙여버리는 것도 고려를... 으흠...)







Posted by 자수씨
, |

지난 번 포스팅에서 작성한 코드에 대한 테스트 코드를 만들어보겠습니다.


1. 테스트 클래스 생성

/spring-data-sample/src/test/java/kr/co/vicki/sample/spring/data/jpa/repository/IMemberRepositoryTest.java


위의 테스트 코드를 실행하니 아래와 같은... 시퀀스가 없다고 합니다.




하이버네이트 용 시퀀스를 생성합니다.



코드를 실행하면 결과는 체크가 불가능하지만 녹색바가 뜨기 때문에 정상 동작한다고 생각합니다 -ㅅ-;;;


2. JpaRepository 의 이용



JpaRepository 는 기존에 사용하였던 CrudRepository 와 PagingAndSortingRepository 를 상속받는 구조입니다.

기존에 사용하였던 CRUD 외에 페이징과 소팅도 지원을 하며 메소드 이름을 통해 쿼리 제너레이션이 가능합니다.

IMemberRepository 의 superclass 를 JpaRepository 로 변경한 후 아래와 같이 메소드를 추가합니다.



findByMemberId(String memberId) 메소드는 메소드 이름 통해 쿼리를 생성하여 실행되게 됩니다.

select m from Member m where m.memberId = ?1


아래와 같은 규칙으로 메소드 이름으로 쿼리가 생성되니 참고를...
Keyword
Sample JPQL snippet
And findByLastnameAndFirstname … where x.lastname = ?1 and x.firstname = ?2
Or findByLastnameOrFirstname … where x.lastname = ?1 or x.firstname = ?2
Between findByStartDateBetween … where x.startDate between 1? and ?2
LessThan findByAgeLessThan … where x.age < ?1
GreaterThan findByAgeGreaterThan … where x.age > ?1
IsNull findByAgeIsNull … where x.age is null
IsNotNull,NotNull findByAge(Is)NotNull … where x.age not null
Like findByFirstnameLike … where x.firstname like ?1
NotLike findByFirstnameNotLike … where x.firstname not like ?1
OrderBy findByAgeOrderByLastnameDesc … where x.age > ?1 order by x.lastname desc
Not findByLastnameNot … where x.lastname <> ?1


SQL 없이 직관적으로 코딩이 가능한 Spring Data JPA!!! 실제 개발 프로젝트에 적용시키까지는 많은 시간이 걸리겠지만 컨셉은 아주 상콤합니다!!!

Posted by 자수씨
, |

이전 포스팅에 이어 샘플 소스를 작성해보도록 하겠습니다.


1. 테이블 생성
샘플 테스트에 사용할 테이블을 아래 스크립트를 실행시켜 생성합니다.




2. domain, repository 소스 구성



Member 클래스: id 컬럼을 기본적으로 제공해주는 AbstractPersistable 를 상속받습니다.
- kr.co.vicki.sample.spring.data.jpa.domain.Member



IMemberRepository 클래스: id 를 이용하여 기본적인 CRUD 를 제공해주는 CrudRepository 를 상속받습니다.
- kr.co.vicki.sample.spring.data.jpa.repository.IMemberRepository



3. 환경 설정



/META-INF/persistence.xml (JPA 설정)


/infrastructure.xml (DB 환경 설정)


/repository-context.xml (jpa repository 등록)




이제 테스트 코드를 만들일만 남았습니다.

Posted by 자수씨
, |

Spring Data JPA 가 눈에 들어와서 간략한 튜토리얼을 작성합니다.


1. Maven 프로젝트 생성하기

이클립스에서 "New Maven Project" 로 Spring Data JPA 용 프로젝트를 생성합니다.

생성 시에 "Create a simple project (skip archetype selection)" 을 체크하시면 좀 더 빠르게 구조화된 프로젝트 구성이 가능합니다.




빌드 패스에서 "JRE System Library" 를 1.4 에서 1.6 으로 변경하고 /src/test/resource 를 삭제하면 위와 같은 구성이 됩니다.


2. pom.xml 설정

pom.xml 에 디펜던시와 플러그인과 관련된 설정을 적용합니다.



위와 같이 pom.xml 을 설정하고 저장하면, Spring Data JPA 로 개발할 수 있는 기본 환경 구성이 완료되었습니다~

Posted by 자수씨
, |

예전에 정리해놓은 줄 알았는데;;;; 아니였나보네요~




익셉션이나 에러 발생 시 스택 트레이스를 활용할 때 사용합니다


Posted by 자수씨
, |


32비트 환경에서 32비트 JVM 으로 자바 프로그램을 실행시켰는데 아래와 같은 메시지가 나오면서 프로그램이 종료됩니다.

Running a 64-bit JVM is not supported on this platform.


혹시라도 머신에 64비트 JVM 이 설치되었는지 아무리 뒤져봐도 나오지 않았는데...

실행 스크립트에 아래와 같은 옵션 때문에 발생했던 문제였습니다.

JAVA_OPTS="-showversion -d64 -Xms512m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=128M"


JAVA_OPTS="-showversion -d32 -Xms512m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=128M"

"-d64" 라는 옵션을 "-d32" 로 변경하고 재구동을 하니 정상동작합니다.


도대체 저걸 왜 달아놓은거지 -_-;;;

Posted by 자수씨
, |

clean 하고 package, install, deploy 하는 작업이 귀찮아서... 플러그인 수정했슴돠...





ㅋㅋㅋ

Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백