By 동치미 on February 12, 2010
Posted in 개인
By 동치미 on February 8, 2010
하나의 프로젝트에 하나의 애플리케이션만을 생성할 수 있다는 정보를 입수하고, 시도하지 않았던 Flex의 Maven 플러그인인 Flexmojos를 시도해 보았다. 모 차장님께서 상당히 많은 도움을 주셔서 만족할 만한 성과를 얻어 이렇게 정리 해 둔다.
환경
Eclipse 3.5 + FlexBuilder (Eclipse 3.5에 FlexBuilder 설치하기)
FlexMojos 3.4.2
FlexUnit 0.8.5
FlexMojos 설치 (FlexMojos 홈페이지 참조)
1. FlexMojos repository url(http://repository.sonatype.org/content/groups/flexgroup) 을 setting.xml 또는, 로컬 서버에 추가한다.
settings.xml 에 추가한예
<repositories>
<repository>
<id>flexgroup</id>
<name>flexgroup</name>
<url>http://repository.sonatype.org/content/groups/flexgroup</url>
</repository>
</repositories>
2. eclipse의 기존 인덱싱을 삭제하고 리인덱싱을 실행한다. (Preferences > Maven > Installations > Reindex Local Repository)

프로젝트 생성 및 FlexMojos, FlexUnit 추가
1. Maven 프로젝트를 생성한다. 생성할 때, Artifact Id에서 flexmojos-archetypes-modular-webapp를 선택하고, GroupId와 ArtifactId를 설정하고 완료한다. (에러 발생시 위에서 생성한 index를 다시한번 삭제하고 본 과정을 실행하도록 한다.)

2. swc, swf, war 프로젝트가 생성된 것을 확인 한 후, 필요한 프로젝트(Web 또는 SWF, SWC)를 모듈 형식으로 추가하도록 한다. 추가하는 프로젝트는 메이븐 Module로 추가하도록 한다.
FlexUnit 실행하기
1. FlexUnit을 실행하기 위해선 FlashPlayer.exe 파일의 위치를 알려주도록 해야 한다. 본인 PC의 기본 PATH에 FlashPlayer.exe 파일의 위치를 잡도록 한다. (기본적으로 FlexBuilder 디렉토리의 Player 디렉토리에 포함되어 있다. )
2. 원하는 프로젝트에 FlexUnit가 설치되어 있음을 확인(프로젝트 생성시 flexunit이 포함되어 설치된다. 각 pom파일을 살펴보라)하고 메이븐을 실행하면(mvn test등) player가 잠시 보였다 사라지며 테스트가 완료 된다.
3. war 디렉토리에 target을 보면 swf가 생성되어 있으면 성공.
Posted in 개발 | Tagged flex eclipse maven
By 동치미 on February 4, 2010
- 절대 패키지명과 동일한 인스턴스명을 사용하지 말것.(Flex Builder가 인스턴스를 제대로 찾지 못하여 컴파일 에러를 발생시킬것)
- 중첩된 패키지를 사용할 수 없습니다. 또는 클래스는 중첩되명 안됩니다. 라는 메시지 가 뜰 경우 거의 컴파일 오류이므로, 패키지 또는 클래스명을 확인하고, import가 제대로 되었는지 확인한다. 또는, 문법 오류이므로 체크해본다. 수정후 꼭, Clean을 실행한다.
- 한글 때문에 컴파일 에러가 날땐 인코딩을 UTF-8 또는 euc-kr로 바꾼다.
Posted in 개발 | Tagged flex
By 동치미 on February 3, 2010
Eclipse 새로 설치시 필요한 플러그인 url 모음이다. eclipse에 등록하여 업데이트 하거나, 다운로드한다.
- maven (m2Eclipse) : http://www.eclipse.org/subversive/downloads.php
- svn(subversive) : http://www.eclipse.org/subversive/downloads.php
Posted in 개발 | Tagged eclipse
By 동치미 on February 2, 2010
Eclipse Ganymede 버전까지 지원하는 FlexBuilder를 Eclipse 3.5 버전에서 사용할 방법을 찾아보다 아래의 방법을 찾아내었다.
1. 먼저 Eclipse Galileo(3.5) 를 설치한다.
2. FlexBuilder를 앞에서 설치한 Eclipse를 타겟으로 설치한다. (이때 나오는 버전 체크 문제는 간단히 무시한다.)
3. 설치 후 Eclipse를 실행하여 Flex Perspective 를 찾는다. 당연히 없다.
4. Eclipse를 종료한 후 Eclipse 홈의 links 디렉토리에 있는 com.adobe.flexbuilder.feature.core.link 파일을 확인한다.
5. path=%EclipseHome%/%FlexBuilderHome% 이라고 수정한다. (예:path=C:/flowerzip/FlexBuilder3-Plugin) ‘path=’ 를 꼭 입력하는게 중요!
6. Eclipse 를 다시 실행하여 Flex Perspective 를 확인한다. (제대로 확인해본다.)
7. Preference의 Flex에서 installed SDK를 확인하여 Flex SDK가 제대로 잡혔는지 확인한다.
끝.
추신 :
위와 같이 실행 한 후 Flex3Plugin 파일을 따로 보관해 두면 플렉스 플러그인을 삭제 했을 시 다시 설치할 필요가 없다. 이클립스에 links 디렉토리를 생성하여 위의 link 파일을 만들어 두고, Eclipse의 SDK를 수정해두면 끝.
출처 : Getting Flex Builder 3 plugin to survive a new Eclipse Version
Posted in 개발 | Tagged flex
By 동치미 on January 29, 2010
내가 만든 플렉스 개발 아키텍처에 몇가지 지적을 받았다. 그중 한가지가 서버와 클라이언트의 동일한 도메인 구조였다. 시스템의 도메인 구조와 UI의 도메인 구조가 같았을때 둘이 너무 강결합이 되지 않느냐는 것이다. 도메인의 변경시 UI에서 해야할 작업이 너무 많아 진다는 것이 문제였다. 여기서 변경은 단순한 컬럼 추가수준이 아님을 알것이다.
도메인 구조에 대한 의견중 하나로 ui 기반의 도메인구조에 대한 이야기가 나왔다. 즉, 화면 구조 모형의 도메인 설계방법이다.
둘의 장단점은 극명히 갈라진다. 전자의 경우 등록 프로세스가 간편해 진다. 서버와 동일한 구조이므로 화면의 입력필드와 도메인만 잘 매핑 해 두고 해당 도메인만 서버로 전송하면 끝이다. 후자의 경우 조회가 편리하다. 서버에서 반환하는 데이터를 그대로 매핑해두면 된다.(이런 경우 서버측은 주로 UI에 필요한 정보를 맞추어 보낸다)
둘다 일장일단 이지만 현 시스템에 어떤모델이 유리할까 고민이다. 시스템이 크면 클수록 후자가 유리할 것이라는 개인적인 견해이다. 아무래도 조회성 화면들이 많을 테니….
그래도 기본적인 crud + list 는 전자가 어울리지 않을까?
고로 현행유지 라는 결론을 내려본다.
(수정이 귀찮아서 그런거 절대 아님)
Posted in 개발 | Tagged 설계
By 동치미 on January 28, 2010
객체를 지향하는 언어 에서 setter/getter는 필수적이다. Eclipse는 JDT에서 기본으로 지원해 주고 있는데 Flex Builder에서 ActionScript 클래스에 대한 generator를 지원해주지 않더라. 여기저기 찾아본 결과 EclipseMonkey 를 이용하여 setter/getter 를 만들어주는 스크립트가 있더라. 설치한 방법과 사용 방법을 소개하고자 한다.
Eclipse Monkey란?
Eclipse Monkey는 이클립스를 위한 스크립팅 도구이다. Greasemonkey에서 영감을 얻어 만들어진 이 도구는 지겹고 반복적인 작업을 자동화 해준다. 먼저 Eclipse Monkey를 설치해보자.
환경 : Eclipse 3.4.2 + Flex Builder 플러그인
update : http://download.eclipse.org/technology/dash/update/
Eclipse의 업데이트 창에 위 url을 입력하면 Eclipse Monkey 와 Mozilla Rhino 가 보인다. 둘다 체크하여 install 한다. (개인적으로 이유를 알 수 없는 2번의 설치 실패를 경험했다. 단순히 eclipse만 껏다 install을 다시 하니 제대로 설치하더라.)
설치가 완료되었으면 메뉴에 Scripts 가 생성되었을 것이다. (Example을 누르면 Eclipse Monkey Example 프로젝트가 생성되며 메뉴에 변화가 생긴다.)
실행순서
1. 일반 Project를 만든다.(자바 Project가 아님)
2. scripts 디렉토리에 js 파일을 만든다.
3. 아래 소스를 paste 한다.
/*
* Menu: Actionscript > Generate Properties
* Key: M3+9
* DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
*/
function main() {
var editor = editors.activeEditor
var source = editor.source
if (editor.selectionRange) {
var range = editor.selectionRange
var offset = range.startingOffset
var text = source.substring(offset, range.endingOffset)
var result = text.match(/(\w+:\w+)/g);
o = ""
for ( var i = 0, n = result.length; i < n; ++i)
o += props(result[i])
for ( var i = 0, n = result.length; i < n; ++i)
o += getvar(result[i])
o += "\n"
// debug(o)
editor.applyEdit(offset, range.endingOffset - offset, o)
}
}
function props(v) {
var parts = v.split(":");
if (2 != parts.length)
return "";
var s = "\n\t\tpublic function get " + parts[0] + "():" + parts[1] + " {";
s += "\n\t\t\treturn _" + parts[0] + ";";
s += "\n\t\t}\n\n";
s += "\t\tpublic function set " + parts[0] + "(o:" + parts[1] + "):void {";
s += "\n\t\t\t_" + parts[0] + " = o;";
s += "\n\t\t}\n";
return s;
}
function getvar(s) {
if (1 > s.length)
return "";
return "\n\t\tprivate var _" + s + ";";
}
function debug(s) {
Packages.org.eclipse.jface.dialogs.MessageDialog.openInformation(window
.getShell(), "Monkey Debugging", s);
}
4. Eclipse를 껏다 키고, Script 메뉴를 확인하면 ActionScript 메뉴에 Generate Properties 가 생기고 Alt + 9 라는 단축키가 생성된 것을 확인할 수 있다.
5. 이제 실행시켜보자. 원하는 ActionScript를 열고, 필요한 property 를 선택한다. 만약 private var shipId:String; 라는 property가 있으면 private 부터 String; 문자까지 모두 선택한다.
6. Alt +9 를 누르면 실행되는 것을 확인할 수 있다.
참고 :
Posted in 개발 | Tagged actipscript, eclipse
By 동치미 on January 27, 2010
Flex의 DataGridColumn는 데이터를 매칭시킬때 dataField속성을 사용한다.
<mx:DataGrid id="contriesGrid" rowCount="25" dataProvider="{contries}" >
<mx:DataGridColumn width="150" headerText="국가" dataField="{contry}"/>
<mx:DataGridColumn width="150" headerText="지역" dataField="{region}"/>
</mx:DataGrid>
하지만 dataField는 맨 윗 계층의 데이터만을 조회할 수 있다. 가령 contry 객체 안에 name 이라는 프로퍼티가 있을 경우 vo 등의 객체를 이용하여 1차 계층으로 변환해주어야 한다. 이를 상속받아 변경해 주어야 한다고 생각만하고 실천에 옮기지 않고 있었는데, 이미 누군가 해 놓았더라. (역시!) 해서 출처와 함께 공개해 둔다.
DataGridColumnNested.as
package{
import mx.controls.dataGridClasses.DataGridColumn;
public class DataGridColumnNested extends DataGridColumn {
override public function itemToLabel(data:Object):String{
var currentData:Object = data;
if (data==null)
return “”;
if (dataField.indexOf(“.”) != -1){
var fields:Array = dataField.split(“.”);
try{
for each(var field:String in fields) {
currentData = currentData[field];
if (currentData==null)
break;
}
}catch(ipe:ItemPendingError){
ipe.addResponder(new ItemResponder(
function (result:Object, token:Object=null){
itemToLabel(result.body);
},
function (fault:Object, token:Object=null){
trace(‘Error while loading’);
}
));
}
}
return super.itemToLabel(currentData);
}
}
}
그리고 사용방법 예제
<mx:DataGrid id=“companyGrid” width=“800″ dataProvider=“{productArray}” editable=“true”>
<mx:columns>
<mx:DataGridColumn dataField=“id” headerText=“Id” editable=“false”/>
<mx:DataGridColumn dataField=“name” headerText=“Product”/>
<c:DataGridColumnNested editable=“false” headerText=“Company name” dataField=“company.name”/>
</mx:columns>
</mx:DataGrid>
출처 : Cornel Creanga – Nested properties and DataGridColumn
thx : cornel ^^
Posted in 개발 | Tagged flex
By 동치미 on January 22, 2010
무분별한 Flex 코딩을 막고자 어도비에서 제공하는 코드 컨벤션을 찾아보았다. 예상했듯이 기본적으로 제공되는 것이 있었고 번역해 놓은 것도 있었다.
가끔 참고해야 할 듯 해서 아래와 같이 링크를 가져다 놓는다.
- 명명 규칙
- 언어 사용법
- 파일 구성, 코드서식, AsDoc
번역 및 출처 : Emiliano Zapata 레볼루션
어도비 공식 코딩 컨벤션 : Flex SDK coding conventions and best practices
Posted in 개발 | Tagged flex
By 동치미 on January 21, 2010
잦은 이클립스 설치를 이유로 클립해 둔다.
- Preferences -> General 에서 Show heap status를 체크 : Heap 메모리 보기 설정
- Preferences -> General ->Appearance -> Label Decorations에서 Java Type Indicator를 체크 : 자바 파일 아이콘을 다양하게 함. Class, InterfaceEnum등의 타입 정보가 아이콘에 나타남
- Preferences -> General -> Startup and Shutdown : 불필요한 플러그인 초기 기동 방지(거의 불필요)
- GC 줄이기 위한 메모리 설정: eclipse.ini에서 -Xms와 -Xmx 값을 -Xms1000M -Xmx1000M 로 변경
- Preferences -> Java -> Editor -> Save Actions에서 Perform the selected actions on save와 Organize imports 를 순서대로 선택 : 저장시 Organize Imports 자동 실행
- Preferences -> General -> Workspace에서Refresh automatically 선택 : 이클립스 밖에서 워크스페이스 파일 수정한 경우 자동으로 이클립스에서도 인식하게 함.
Svn 설치후
- Preferences -> Team -> SVN -> Label Decoration에서 Text Decorations 탭을 선택, Outgoing flag에 ▶ 를 입력
참고 : http://younghoe.info/1232
Posted in 개발 | Tagged eclipse
Recent Comments