Adobe Flash Builder 4.5.1 이 정식 배포되었습니다. (한국 2011년 6월 21일) 
Adobe Flash Builder 4.5에서 Flex를 이용해 iOS, BlackBerry 어플을 배포할 수 없었는데, 이 점이 개선되었습니다. 이제 Adobe Flash Builder 4.5.1 을 이용해 iOS(iPhone, iPad), BlackBerry, Android 어플을 Flex나 ActionScript 3.0으로 개발할 수 있게 되었습니다. 

아래 화면은 Flash builder 4.5.1에서 Flex 모바일 프로젝트로 Apple iOS, BlackBerry Tablet OS, Google Android 어플을 개발할 수 있음을 보여줍니다. 


아래 링크를 통해 Flash builder 4.5.1 의 개선된 내용을 확인할 수 있습니다. 
Flash Builder 4.5.1 Release Notes
Flash Builder 4.5.1 with Improved iOS Support  
 
Flash Builder 4.5.1로 업데이트 하기 위해서는 2가지 방법이 있습니다.  기존 Flash Builder 4.5가 설치했다면 다음 방법을 택일할 수 있습니다.(먼저 Download a free trial of Flash Builder 4.5 Premium Edition 에서 Flash Builder 4.5를 다운받아 설치하세요.)

1. Flash Builder 4.5 자동업데이트 기능을 이용 
이 방법은 빌더를 실행하고 Help > Search for Flash Builder Updates...로 들어가시면 됩니다. 열이아빠님의 말에 의하면 많이 느리답니다. 참고: 열이아빠님의 플래시 빌더 4.5.1 

2. 업데이트 파일을 다운받아 업데이트 실시
Adobe Flex Support Center 에서 직접 다운받으실 수 있습니다. 이 방법이 첫번째 방법보다는 빠릅니다. ^^

Flash Builder 4.5.1에는 AIR 2.6이 탑재되어 있습니다. 그러므로 최근에 배포된 AIR 2.7을 다운받아 설치하시면 AIR 2.6, AIR 2.7 환경에서 개발이 가능합니다. AIR 2.7은 iOS 어플의 속도를 적어도 4배이상 향상시켰기 때문에 AIR 2.7을 설치할 것을 권고하는 바입니다.

Flash Builder 4.5.1을 이용해 Flex 4.5.1 기반에서 개발하면 생산성이 극대화 됩니다. 하나의 프로젝트로 iOS, Android, BlackBerry 어플개발을 할 수 있습니다. 아래 링크에 있는 영상을 보시면 약 8분여만에 트위터와 연동하는 어플을 만들어 각각의 디바이스에 실행해보는 모습을 보여주고 있습니다. 

FLASH BUILDER 4.5.1 ROCKS  


여러분은 Flash Builder 4.5.1에서 iOS 어플 개발하는 방법은 다음 동영상과 문서를 통해 배울 수 있습니다. 중요한 것은 Mac뿐 아니라 Window환경에서도 iOS 어플을 개발할 수 있습니다.

Build iOS applications with Flex and Flash Builder 4.5.1
 
Using Flash Builder 4.5 to package applications for Apple iOS device 
Flex/AIR for iOS Development Process Explained! 

Android와 BlackBerry 어플을 어떻게 만드는지도 알 수 있습니다. 다음 문서들을 보세요.
Using Flash Builder 4.5 to package applications for Google Android device 
Using Flash Builder 4.5 to package applications for BlackBerry Tablet OS devices 


기존 Flash 개발자나 Flex, ActionScript, AIR 개발자는 모두 별 어려움없이 iOS, Android, BlackBerry 어플을 개발할 수 있다는 점이 이번 Flash Builder 4.5.1 배포의 가장 큰 매력이 아닌가 생각합니다. 

하지만 한가지 아셔야 하는 것은 각각 OS별로 특정 기능은 지원할 수 없다는 점입니다. 가령 안드로이드 기반의 위젯같은 것은 현재로선 개발이 불가능하지요. 그러므로 이런 경우에는 원래 개발 방식대로 개발해야할 것입니다. 

AIR 2.7이 Linux 환경에서 더이상 지원하지 않는다는 뉴스는 개발자로서 아쉬움이 남지만, Flash Builder 4.5.1의 런칭으로 극복되길 바라는 바입니다.


참고글 

열이아빠님의 플래시 빌더 4.5.1
Download a free trial of Flash Builder 4.5 Premium Edition
Adobe Flex Support Center - 여기서 Flash Builder 업데이트 버전을 직접 받을 수 있습니다.
Flash Builder 4.5.1 Release Notes
FLASH BUILDER 4.5.1 ROCKS  
Flash Builder 4.5.1 with Improved iOS Support
Build iOS applications with Flex and Flash Builder 4.5.1
Flex SDK and Flash Builder updates available - adds iOS and BlackBerry PlayBook support
(동영상)Mobile Application Development with Flex and Flash Builder
Flash Builder Developer Center 
Adobe Flash Builder 4.5.1, AIR 2.7 and iOS
Hands On with Flash Builder 4.5.1 for Apple iOS 
Flex/AIR for iOS Development Process Explained!
Build iOS applications with Flex and Flash Builder 4.5.1  
Build Mobile Apps for Android Devices, BlackBerry PlayBook, iPhone and iPad Today! 
(우야꼬)Flash Builder 4.5로 iPhone 4용 듀얼 브라우져 앱 만들기 
(지돌스타)Adobe AIR 2.7 SDK 및 Runtime 정식 런칭. iOS환경에서 4배 빨라졌다! 
Episode : Mr.MixIt And Pyramix Games For Android and iOS 
What’s your favorite Flash Builder 4.5 feature?
Flash Builder 4.5 에서 plug-in 버전 설치 하기
AIR 2.7 now available for desktop, Android, iOS and Blackberry Tablet OS.

글쓴이 : 지돌스타(http://blog.jidolstar.com/773)  

이 글은 어도비 공식블로그에도 발행되었습니다.
큰변화 1 : http://blog.naver.com/adobe_korea/100129033987
큰변화 2 : http://blog.naver.com/adobe_korea/100129042984 
큰변화 3 : http://blog.naver.com/adobe_korea/100129043356


Adobe Flash Builder 4.5 는 Flex와 ActionScript 언어를 사용하여 모바일, 웹, 데스크탑 어플리케이션을 신속히 제작할 수 있는 통합개발도구(IDE)이다.

이번에 출시된 Flash Builder 4.5에는 Apple의 iOS, Google의 Android, Blackberry Tablet OS 모바일 어플리케이션 개발 및 테스트, 배포를 위한 기능이 추가되었다. 또한 Flash Builder 4.5는 개발 및 테스트 할 수 있는 시간을 크게 단축시키기 위한 도구 지원하고 더욱 향상된 성능으로 완성도 높은 어플리케이션을 개발할 수 있도록 도와준다. 또한 Flash Builder와 Adobe Flash Catalyst를 이용해 개발자, 디자이너간에 쌍방향 워크플로우를 가능하게 함으로써 프로젝트 디자인 및 개발을 동시에 수행할 수 있도록 했다. Flash Builder 4.5는 기존 Flex 3, Flex 4, Flex 4.5 버전에 상관없이 모든 Flex 버전에 대응할 수 있도록 했다.
 
이 문서는 Flash Builder 4.5에 어떠한 큰 변화가 있는지 구체적인 설명을 통해 이해시키는데 도움을 주는 것을 목적으로 한다.

큰변화 1. 모바일 및 멀티스크린 어플리케이션 개발
Flash Builder 4.5는 Flex 및 ActionScript를 이용해 모바일 AIR 어플리케이션을 개발, 테스트, 배포를 지원한다. 기존 Flash Builder를 이용했던 개발자들의 경험을 그대로 반영하여 웹, 데스크톱, 모바일 어플리케이션을 만들 수 있다. Flash Builder 4.5부터는 Google Android, Apple iOS, Blackberry Tablet OS 어플리케이션도 개발할 수 있게 되었다.

현재시점(2011년 5월)에 공식배포되어 있는 Flash Builder 4.5는 ActionScript Mobile Project상에서 Android, iOS 어플리케이션만 개발이 가능하며, Flex Mobile Project의 경우에는 Android 어플리케이션만 개발이 가능하다. 하지만 2011년 6월에 Flash Builder 4.5는 한번더 업데이트가 될 예정이며 앞서 언급한 모든 OS의 어플리케이션 개발이 가능하겠다.

Adobe Flex 4.5 SDK는 아래화면처럼 모바일 환경에 알맞은 일반적인 템플릿를 제공한다. Flash Builder 4.5는 이 Flex 4.5 SDK를 이용한 프로젝트를 개발할 수 있도록 지원해준다.

Adobe Flash Builder 4.5의 Mobile Project Wizard

Flash Builder 4.5에서 모든 모바일 프로젝트는 데스크탑 시뮬레이터 또는 디바이스를 선택적으로 연결하여 테스트 및 디버깅을 할 수 있다. 중요한 것은 같은 프로젝트내에 같은 소스를 가지고 다양한 디바이스 환경에 적용할 수 있다는 점이다. 이것은 Flash Builder 4.5가 멀티스크린 어플리케이션 개발환경을 제공한다는 것을 의미한다. 또한 Flash Builder 4.5는 개발 완료시 배포를 위해 간소화된 방법을 제공하고 있다.

다음 링크를 통해 Adobe Flex 4.5 SDK와 Flash Builder 4.5를 이용한 개발에 대해서 대략적으로 학습해 볼 수 있다.

- Hello World: Build a mobile app in five minutes
- (동영상)Guided Tour of mobile application development with Flash Builder 4.5
- Mobile development using Adobe Flex 4.5 SDK and Flash Builder 4.5
- [따라하기]Flash Builder 4.5로 iPhone 4용 듀얼 브라우저 앱 만들기


큰변화 2. Flex 와 ActionScript 프로젝트 코딩 및 테스트 시간 단축
Flash Builder 4.5는 최적화된 코딩 환경을 제공하기 위한 기능이 추가되었다. 이것은 좀더 코딩을 더욱 빠르고 생산적인 코딩이 될 수 있도록 한다.

코드 템플릿(Code template), 퀵어시스트(Quick Assists), 코드힌트(Code hits), 메타데이터 코드(Metadata code) 자동 완성 등 Flash Builder 4.5는 코딩 시간을 단축시키기 위한 갖가지 기능들을 제공한다.

여기서는 코드 템플릿과 퀵어시스트만 살펴보겠다.

2.1 코드 템플릿(Code Template)
Flash Builder 4.5부터 코드 템플릿(또는 snippets: 쓸모있는 코드 조각) 지원이 추가되었다. 이것은 자주 사용하는 MXML, ActionScript, CSS 코드를 미리 추가해 개발자가 일일히 타이핑하지 않고  개발할 수 있도록 도와준다. Flash Builder 4.5에는 package, class, for 루프, while 루프, switch 블록등과 같은 100개가 넘는 코드 템플릿이 제공된다. 개발자는 자신의 커스텀 템플릿도 정의할 수 있으며 템플릿을 import/export할 수 있어 다른 개발자와 공유할 수도 있다.
 
아래 화면은 메뉴에서 Window > Preferences를 선택한뒤 Flash Builder > Editors > Code Templates를 선택했을때 모습이다. ActionScript, CSS, Flash Builder, MXML의 코드 템플릿이 적용되어 있다. 화면에서 MXML의 Button 클래스 코드 템플릿을 Preview창에서 확인할 수 있다.

실제 코딩시에는 아래 화면처럼 Button을 입력한 뒤 Ctrl+Space키를 누르면 아래와 같이 코드힌트를 볼 수 있다. 여기까지는 이전 Flash Builder에서도 제공하는 것이다. (참고 : MacOS에서는 Spotlight의 단축키가 Ctrl+Space로 되어 있으므로 설정>Spotlight에서 단축키 사용을 해제하면 된다.)


다시 한번 Ctrl+Space를 누르면 아래 화면처럼 Button에 대한 코드 템플릿만 보이게 된다. 해당 템플릿을 선택후 더블클릭 또는 Enter를 입력하면 코드가 추가된다.


아래 화면은 Button의 코드템플릿을 사용해 코드를 추가한 결과화면이다.


2.2 퀵어시스트(Quick Assists)
퀵어시스트는 코드 템플릿만큼이나 굉장히 유용하다. 이벤트 핸들러 함수를 자동으로 생성, 변수나 메서드의 이름을 리펙토링, Getter/Setter 생성, 로컬변수 및 인스턴스 변수 자동 생성, import 생성, 로컬변수를 인스턴스 변수로 변경, 생성되지 않은 클래스 및 메서드 생성 등등 거의 못하는게 없다. 퀵어시스트를 받을 부분에 커서를 올려놓고 Ctrl+1(MacOS에서는 Cmd+1)을 시도해보면 되겠다.

퀵어시스트를 조금 맛보도록 하자. 아래 코드처럼 UserVO 클래스를 만들고 생성자에 result.createCursor()을 만들었다. 앞으로 result는 ArrayCollection 클래스의 변수가 될 것이다. result위에 커서를 올려놓고 ctrl+1를 눌러보자. 아래화면처럼 2가지 선택이 나온다. 하나는 result 로컬변수 또하나는 인스턴스 변수이다. 로컬변수를 선택하자.


우리는 자동으로 아래 코드처럼 var result:Object 로컬변수가 생성되었음을 알 수 있다. 생성된 로컬변수 result위에 커서를 올려놓고 ctrl+1키를 눌러보자. 이번에는 새로운 퀵어시스트가 나온다. 첫번째는 로컬변수를 필드로 변환한다는 것, 두번째는 UserVO안에서 result 이름을 바꾼다는 것, 세번째는 Workspace내에 모든 result의 이름을 바꾼다는 것이다. 우리는 첫번째를 선택할 것이다.


아래처럼 result는 로컬변수에서 인스턴스 변수로 변경되었음을 알 수 있다.


result의 변수 타입을 Object에서 ArrayCollection으로 변경하고 ArrayCollection에서 퀵어시스트를 받아보자. 우리는 의도한바 이미 정의된 ArrayCollection을 import하는 것을 선택하면 되겠다.


아래처럼 ArrayCollection클래스가 자동으로 import 되었다.

퀵어시스트는 mxml 코드 상에서도 위력을 발휘한다.

아래 코드에 click 마우스 이벤트의 핸들러 함수인 onClick 위에 커서를 올려놓고 ctrl+1 키를 눌러보자. 그럼 아래 화면처럼 event 핸들러를 생성할 것임을 퀵어시스트가 알려주고 있다. 이것을 선택하자.


퀵어시스트의 도움으로 이벤트 핸들러 함수를 MXML 코드내에 자동으로 삽입하게 되었다.

퀵어시스트 기능은 이외에도 다양한 기능이 있으므로 필요하다면 Ctr+1(MacOS에서는 Cmd+1)을 활용하길 바란다.

코드 템플릿 및 퀵어시스트외에 코드힌트(Code hits), 메타데이터 코드(Metadata code) 자동 완성등 빠른 개발을 위한 기능에 대해 조금더 알아보고 싶다면 다음 글을 참고하길 바란다.

- Coding productivity enhancements in Flash Builder 4.5 



큰변화 3. 디자이너/개발자 워크플로우(workflow) 개선
이전 버전인 Flash Builder 4와 Flash Catalyst CS5는 개발자와 디자이너 간에 Flex 프로젝트를 진행하기 위한 협력도구 관계이다. 그 점은 지금도 변함없지만 이전 버전의 문제는 추가적인 개선을 위해 디자이너와 개발자간에 양방향 워크플로우를 지원하지 못했다는 점이다. 결국 개발이 끝난 Flex코드는 더이상 디자이너가 고칠 수 있는 여지를 마련되지 못했는 것이다. 하지만 Flash Builder 4.5와 Flash Catalyst CS5.5 부터는 양방향 협력이 가능하다. 다음 그림은 개선된 양방향 워크플로우를 보여주고 있다.

개선된 양방향 워크플로우



다음 링크를 통해 Flash Catalyst CS5.5 정보를 더욱 자세히 볼 수 있겠다.

- Flash Catalyst CS5.5 공식페이지
- Understanding new Flash Catalyst CS5.5 and Flash Builder 4.5 workflows
- What's New in Adobe Flash Catalyst CS 5.5
- (동영상)ADC Presents - Introduction to Flash Catalyst CS5.5 


큰변화 4.  최신 플랫폼 지원 및 성능 향상 
Flash Builder 4.5는 Eclipse의 마지막 버전(3.6.1 "Helios")을 지원한다. 또한 MacOS에서 Eclipse의 Cocoa 버전을 지원한다. 이전 Flash Builder는 Eclipse plug-in 버전을 따로 배포했다. 하지만 Flash Builder 4.5부터는 설치 디렉토리 > utilities 내에 Adobe Flash Builder 4.5 Plug-in Utility가 추가적으로 제공한다.

Flash Builder 4.5 설치시 함께 설치되는 Flex 4.5는 웹/데스크탑 어플리케이션을 위한 새로운 Spark DataGrid, Form, Image 컨트롤이 포함되었다. 또한 Flex 4.5는 모바일 어플리케이션 개발에 적합한 컨트롤을 제공한다. 
Flex 4.5에 대한 소개는 다음 링크를 참고한다.

- Introducing Adobe Flex 4.5 SDK 

Flash Builder 4.5는 종속되는 라이브러리가 많은 대용량 어플리케이션의 리팩토링 작업에 필요한 시간을 65% 단축했다. 또한 복잡한 어플리케이션을 프로파일링하는데 필요한 메모리를 60% 줄이고 그 응답속도도 향상시켜 Flex 어플리케이션 개발속도를 단축할 수 있게 되었다.


큰변화 5. PHP 개발 지원
Flash Builder 4.5는 PHP 개발자들을 겨냥한 새로운 버전의 Flash Builder가 소개되었다. Flash Builder 4.5 for PHP는 Flash Builder 4.5와 Zend Studio 8이 통합되었다. Flash Builder 4.5 for PHP를 이용하면 Flex와 PHP를 유연하게 개발이 가능해진다. 하나의 통합환경내에서 프로젝트 생성, PHP서비스 연결, 디버깅 워크플로우등이 모두 지원된다. PHP와 함께 개발을 원하는 개발자는 Flash Builder 4.5 for PHP 버전을 다운로드 받길 바란다.

다음 링크를 통해 Flash Builder 4.5 for PHP에 대해서 학습할 수 있겠다.

- Introducing Flash Builder 4.5 for PHP
- Streamlining Flex and PHP development with Flash Builder for PHP


더욱 많은 Flash Builder 4.5 정보
지금까지 Flash Builder 4.5의 큰변화라는 주제로 살펴보았다. Flash Builder 4.5 및 관련 기술들에 대한 문서 및 동영상을 아래 링크를 통해 공유하겠다.  

- Flash Builder 4.5 공식페이지
- Using Adobe Flash Builder 4.5 (PDF p.250) 
- Flex 4.5 SDK, Flash Builder 4.5 and Flash Catalyst CS 5.5 Now Available!
- Sharing projects between Flash Professional and Flash Builder
- Flex Test Drive for Mobile - Build a mobile application in an hour 
- Flash Builder Developer Center 
- Tour de Flex
- (동영상)Building Apps with Flash Builder 4.5
- (동영상)Mobile Flex 4.5 Demonstration
- (동영상)Tour de Mobile Flex on iOS
- (동영상)Preview of Flex on iOS devices
- (동영상)Flex on the iPad
- (동영상)Comb Over Charlie - an AIR 2.6 multiscreen game
- (동영상)Flex Charts on the iOS, Android and the PlayBook


오랜만에 Adobe Labs를 가봤는데 마침 Flash Builder 4, ColdFusion Builder, Flex 4 SDK가 베타 딱지를 떼고 정식으로 배포되기 시작했네요.

  • Adobe ColdFusion Builder
  • Adobe Flash Builder™ 4
  • Adobe Flex® 4 SDK

    위 링크를 통해 자세한 정보를 볼 수 있습니다.
  • 추가사항 1
    정영훈님께서 유용한 댓글을 달아주셨습니다. 이클립스에 Flash Builder를 Plug-in 형태로 설치할 때 멈추는 현상이 있는데 아래 내용으로 문제를 해결할 수 있습니다.

    설치할때 우선 압축을 풀게 되는데 그 경로를 지정할 수가 있습니다.
    그 압축을 푸는 경로에 하글이 섞여 있으면 설치가 안됩니다.

    xp에서는 바탕화면 에 압축을 풀게 딜포트 설정으로 나옵니다
    그 경로를 한글이 없는 경로로 수정하면 설치가 가능합니다.


     

    글쓴이 : 지돌스타(http://blog.jidolstar.com/667)


    Flash, Flex, AIR, ActionScript 프로젝트를 진행하면서 모든 코드를 손수 만들어 사용하는 것은 그다지 추천할 만한 일은 아니다. 왜냐하면 아무리 실력있는 개발자라도 프로젝트에 필요한 코드모음을 전부 만드는 것은 너무 큰 노력이 들뿐만 아니라 코드의 유지보수에도 매우 많은 시간을 허비할 수 있기 때문이다.

    Flash 기반 코드 라이브러리는 이미 수년간에 걸쳐 공개되어 있다. 조금만 노력을 기울이면 3D, 트윈, 물리엔진, 수학, 보안, 데이터관리, MVC,   as3corelib, Papervision3d, Away3d, Flex 컴포넌트, 각종 유틸등 ActionScript/Flex/AIR/Flash에 관련된 수십,수백가지 우량(?) 라이브러리들을 쉽게 사용할 수 있다.


    위에 링크되어 있는 라이브러리만 해도 정말 현업에 바로 사용할 수 있는 것들이 정말 많다. 또한 단순히 공개차원을 넘어 지속적으로 업데이트가 되며 완성도가 높아지고 있다.

    그럼 다시 생각해보자. 내가 3D 게임을 만들기 위해 3D 엔진을 만들어야할 것인가? 내가 트윈(tween)을 구현하기 위해 트윈엔진을 만들어야 할것인가? 각종유틸이 필요해서 그걸 다 내가 만들것인가? 만약 검증되지 않고 아직 별도로 공개되어 있지 않은 것이라면 당연히 만들어야할 것이다. 하지만 기본적으로 큰 노력없이 쉽게 사용할 수 있고 자동으로 업데이트 및 검증까지 해주는 사람들이 만든 훌륭한 라이브러리가 있는데... 왜!!! 그걸 다 만들 필요가 있는가이다.

    재미있게도 위에서 소개한 라이브러리들은 대부분 Google 코드(http://code.google.com)에 공개되어 있다. 이는 무엇을 의미하는가? 업데이트할때마다 압축파일을 받아 라이브러리에 복사하는 수고가 필요없이 SVN으로 간단하게 업데이트 할 수 있다는 것을 말한다. 이것을 적극 활용하는 방법을 소개하는 것이 이 글을 쓰는 목적이다.

    필자는 Flash 개발자라면 누구라도(?) 잘 알고 있는 Flash 3D 엔진인 Papervision3D과 Away3D를 SVN을 이용해 가져와 프로젝트에서 활용하는 방법을 언급하고자 한다. 개발환경은 Flash Builder 4를 기준으로 하겠다. (거의 모든 기능을 Flex Builder 3에서도 할 수 있다.)


    1. Flex/Flash Builder에 SVN 플러그인 설치
    이제부터 설명할 공개 라이브러리를 사용하기 위해 Flash builder에 SVN 플러그인을 설치해야한다. 방법은 어렵지 않다. 다음 링크를 참고한다.

    Flex Builder 에서 Subversion(SVN) 사용하기


    2. Google Code에서 Papervision3D SVN 주소 확인하기
    Google 코드 사이트(http://code.google.com)로 들어가 papervision3d로 검색해서 Papervison3D 구글코드 페이지(http://code.google.com/p/papervision3d/)로 들어간다. Papervision3d의 라이센스와 각종 링크들을 보면 다른 정보들도 확인할 수 있다.

    물론 화면 우측 Featured downloads에 있는 zip 및 swc 파일을 받아 직접 프로젝트에 복사해 사용할 수 있으나(많은 블로그에 이 방법을 소개하고 있다.) 앞서 말한데로 새로 업데이트되는 최신소스를 바로바로 사용해보려면 이 방법은 너무 불편하다. 게다가 공개 라이브러리를 사용하는게 4~5개 이상 넘어가면 지속적인 업데이트가 힘들다.

    어떤 개발자는 너무 최신 버전이면 버그가 있을지도 모르지 않겠느냐? 라고 의심할 수 있을 것이다. 하지만 Papervision3D와 같이 이미 대중적(?)으로 인기를 모으고 있는 라이브러리라면 철저한 검증없이 함부로 최신화(commit) 하지 않는다.


    위 Source 탭으로 들어가 Checkout 메뉴를 보면 아래처럼 SVN checkout 주소가 있다. 이 주소는 저장소의 주소라 불리운다. 여러분은 이 주소로 Papervision3D 소스 코드를 받아올 수 있겠다.




    3. SVN을 이용해 Papervision3D 라이브러리 프로젝트 만들기
    이제 본격적으로 Papervision3d를 SVN으로 받아와 라이브러리 프로젝트를 만들어보자.

    Flash Builder를 실행한다. 실행되면 메뉴에서 File > Import 로 들어간다. 아래 처럼 창이 뜨면 SVN > Checkout Projects from SVN 을 선택한다음 Next 버튼을 누른다.



    아래 처럼 보이면 새로운 저장소 위치를 만들기 위해 Create a new repository location을 선택후 Next 버튼을 누른다. 이는 새로운 저장소라는 것은 SVN을 접속할 주소를 의미한다고 보면 되겠다. 여기서는 Google 코드에서 봤던 주소 http://papervision3d.googlecode.com/svn/trunk 가 되겠다.

    아래처럼 나오면 주소를 입력하고 Next 버튼을 누른다.



    아래 화면처럼 나오면 http://papervision3d.googlecode.com/svn/trunk 저장소 내에 있는 Papervision3D 소스 경로를 볼 수 있다. 우리는 ActionScript 3.0 기반에서 제작하기 때문에 as3/trunk를 선택한다. 이때 선택하는 기준은 그 안에 src 폴더의 상위 폴더이어야 한다. 이 방식은 다른 라이브러리를 참조해서 하더라도 저장소내에 구조가 조금씩 다르지만 같은 방법을 사용하므로 기억하자.


    위 창에서 Next 버튼을 누르면 다음 창으로 전환된다. 세부적으로 Check out 하는 방법을 설정할 수 있는데 우리는 최신 버전을 사용할 것이기 때문에 바로 Finish 버튼을 누른다.



    이제 Papervison3D 라이브러리를 가져올 SVN 주소 설정을 끝냈으므로 이 라이브러리가 담길 프로젝트를 생성해야한다. 위 절차를 모두 끝내면 자동적으로 다음과 같이 New Project 창이 뜬다. 이때 Flex Library Project를 선택하면 되겠다.


    다음 그림처럼 Project name을 Papervision3D(이름은 아무거나 써도 상관없다.)으로 설정하고 Flex SDK Version을 선택한 다음 Finish버튼을 누른다.


    참고로 Flex SDK Version을 선택시에 라이브러리가 AIR 코드가 포함되어 있는 경우라면 Include Adobe AIR libraries를 선택해야한다.(예: as3corelib) 또한 라이브러리가 구동되기 위한 SDK가 무엇인지도 알아야한다. 가령 Flash Player 10부터 3D API를 사용한 라이브러리라면 그것을 지원하는 SDK를 사용해야한다는 것을 의미한다. SDK는 Adobe Labs에서 최신버전을 받아 사용하면 된다.(방법을 모르시면 댓글을 ^^)

    아래처럼 Confirm Overwrite 메시지가 뜨면 그냥 OK 버튼을 누른다.



    이제 구글 코드 저장소로부터 아래처럼 Papervision 3D 코드를 받아온다.


    Package Explorer에 추가된 Papervion3D 라이브러리 프로젝트를 확인하자. 하지만 만약 에러메시지가 나온다면 다음과 같이 해보자. 해당 프로젝트를 선택하고 오른쪽 마우스 버튼을 눌러 컨텍스트 메뉴에서 Properties로 들어가보자. 아래와 같은 창이 나오면 왼쪽 메뉴에서 Flex Library Build Path를 누르고 우측 상단 탭에 Classes를 선택한다. 그리고 Select classes to include in the library를 선택한 다음 src 앞에 check박스를 체크한다. 그리고 OK 버튼을 누르면 다시 컴파일 되면서 컴파일 에러가 사라질 것이다.



    여러분은 이제 최신버전의 Papervision3D를 사용할 수 있게 되었다. 아래처럼 해당 프로젝트를 선택하고 오른쪽 마우스 버튼을 눌러 컨텍스트 메뉴에서 Team > Update to Head를 선택하는 것만으로 최신버전으로 업데이트 할 수 있게 된다. 이러한 방법은 SVN으로 공유한 다른 라이브러리들을 항상 최신으로 유지하는데 쉬운 방법을 제공하게 된다.


    한가지 언급하자면 위에서 소개하는 방법은 Papervision3D를 예로 들었기 때문에 다른 라이브러리의 공개 형태에 따라 수행하는 방법의 차이가 있을 수 있다는 점을 강조하고 싶다. 그러한 점은 개발자가 알아서 체크할 수 있어야 한다.


    4. 조금만 더 가다듬어 보기 (관심있는 사람만 읽으면 됨)
    3번까지 진행하는 것만으로도 개발하는데 전혀 문제없지만 아래 내용을 좀더 알고 가면 더욱 좋을 듯 싶다.

    지금까지 구글 코드로부터 SVN 저장소를 통해 받아온 Papervison3d 라이브러리는 설정파일을 제외한 ActionScript 3.0 코드가 대부분이다. 그래서 실질적으로 프로젝트에 필요한 설정구성요소인 .actionScriptProperties나 .flexLibProperties등의 파일들은 Papervision3D 개발자가 처음부터 저장소에 공유하지 않는다. 왜냐하면 .actionScriptProperties, .flexLibProperties들은 Flex Builder나 Flash Builder와 같이 특정 개발툴에서 필요한 파일이기 때문에 다른 IDE에서는 무의미 할 수 있기 때문이다.

    아래 처럼 Papervision3D의 프로젝트 이름에 SVN으로 공유되었으나 폴더그림에 * 표시가 되어 있다. 이 표시는 원래 SVN 저장소 내용과 프로젝트 내용이 다를때 나온다. 이 다른 내용이라는 것은 금방 언급했던 .actionScriptProperties, .flexLibProperties 등이다.


    Flash Builder에서는 프로젝트내의 .actionScriptProperties, .flexLibProperties 파일을 직접 볼 수 없도록 되어 있다. 이는 Filter 처리가 되어 있기 때문이다. 아래 그림처럼 선택해 Filter 처리된 파일들을 전부 check out하자.



    위 그림 처럼 Filter 처리된 파일을 check out하면 아래처럼 프로젝트 내에 .actionScriptProperties, .flexLibProperties 등을 볼 수 있게 된다. 이 파일의 아이콘에 ?로 표시된 것은 저장소에 이 파일이 존재하지 않음을 나타내는 것이다.

    * 표시나 ? 표시를 없애기 위해서 이러한 파일들이 SVN 저장소와 공유되지 않도록 무시할 수 있도록 하면 된다. Flash Builder에 설치된 SVN 플러그인은 이러한 기능을 지원해준다. 메뉴에서 window > Preference로 들어가 창이 뜨면 Team > Ignored Resources로 들어가면 아래 처럼 나온다. 여기에 다음 내용을 Add Pattern하자.

    .actionScriptProject
    .actionScriptProperties
    .flexProperties
    .flexProject
    .project
    bin
    .settings
    참고 : http://labs.adobe.com/wiki/index.php/Flex_Builder:resources:plugins:subversion:filtering




    이제 아래 그림처럼 * 표시나 ? 표시가 없어지고 저장소의 원본과 프로젝트의 소스가 일치함을 나타내는 표시로 바뀐다.




    5. Away3D를 SVN으로 받아오기

    Papervision3D 라이브러리를 이용해서 애플리케이션을 만드는 예제는 굳이 설명안해도 된다고 생각한다. 대신 Away3D를 활용하는 방법을 약간 언급하고자 한다.

    Away3D도 Papervision3D처럼 구글코드(http://code.google.com/p/away3d/)를 통해 SVN으로 소스를 공개하고 있다. 하지만 Away3D는 Papervision3D와 다르게 Flash Player 9, Flash Player 10 버전을 함께 제공하면서 Flash Player 10 3D 라이브러리를 이용한 3D 엔진인 Away3DLite도 제공한다. 또한 몇가지 유용한 예제도 함께 제공하고 있다.


    Away3D 저장소 주소(http://away3d.googlecode.com/svn/trunk)로 접속하면 아래처럼 나온다. fp9과 fp10은 각각 Flash Player 9, 10 버전을 의미한다. 아무래도 Flash Player 10 버전이 최신이면서 효율적으로 만들어졌으므로 fp10에 있는 공개 라이브러리와 예제소스를 참고할 것이다.

    fp10에 보면 Away3D, Away3DLite 소스가 있음을 확인할 수 있다. 또한 그에 대한 예제는 Examples에 들어 있다.


    아래는 해당 라이브러리와 예제의 저장소 주소이다.


    여러분은 Papervision3D를 SVN으로 프로젝트를 만든 것처럼 Away3D에서도 그래도 하면 된다. 단. Examples의 경우 중간에 프로젝트 생성시 ActionScript 프로젝트를 선택하기 바란다. 물론 Flash Player 10 기준이라는 점도 명심하자.

    예제 프로젝트에서는 해당 라이브러리 프로젝트의 경로를 포함시켜줘야한다. Away3D_Example은 Away3D 라이브러리를 Away3DLite_Examples는 Away3dLite 라이브러리를 포함해야한다. 방법은 간단하다. Away3D_Example와 Away3DLite_Examples내에 libs 폴더안에 각각의 라이브러리 프로젝트에서 만들어진 bin디렉토리에 있는 
    swc를 복사하면 된다. 하지만 이는 애플리케이션을 전부 만들고 배포하고 난 다음에 백업을 위해 선택할 방법이고 실제로 개발할때는 다음과 같이 한다.

    1. Away3D_Example 프로젝트를 선택한다.
    2. 메뉴에서 Project > Properties를 선택한다.
    3. 창이 뜨면 좌측 ActionScript Build Path(Flex의 경우 Flex Build Path)를 선택한다.
    4. 상단 Library path 탭을 선택한다.
    5. Add Project를 선택한 다음 Away3D 라이브러리를 선택한다.
    6. OK 버튼을 누른다.
    7. Away3D_Example의 .actionScriptProperties를 연다.
    아래 그림처럼  default package에 있는 소스 들은 전부 애플리케이션들이다. 이 코드들이 진정한 애플리케이션으로서 동작하려면 .actionScriptProperties내에 application으로 등록해야한다. 수작업이긴 해도 전부 등록하자. 또는 해당 as 파일을 선택후 마우스 오른쪽 버튼을 눌러 Set as Default Application 항목을 선택해도 된다. 이는 애플리케이션으로 등록하는 동시에 Default 애플리케이션으로 잡아준다. Default 애플리케이션을 지칭하는 것은 .actionScriptProperties 파일 내에 actionScriptProperties 태그의 mainApplicationPath 속성이 그 역할을 한다.



    위 처럼 설정하면 이제 예제 파일들을 아무 문제없이 동작시킬 수 있을 것이다.
    8. Away3DLite_Example도 위와 비슷한 방법으로 하면 되겠다.

    아래는 Away3DLite_Examples에 있는 Advanced_Mario1000.as 애플리케이션을 실행하는 화면이다.

    아마 어떤 애플리케이션은 as3dmod 라이브러리가 필요하다는 에러가 나올것이다. 이것도 비슷한 방법으로 Google Code에서 가져올 수 있다. 단, 몇가지 다른 설정을 해야하는데 여기서 설명하지 않고 각자의 몫으로 돌리겠다.


    정리하며

    개발자라면 Google Code와 친해져야하지 않을까? 또한 기존 라이브러리가 있는가 검색을 해보는 성의가 있어야하지 않을까? 그리고 그 라이브러리를 잘 활용하는 방법을 스스로 깨달으려고 노력해야하지 않을까?

    잘못된 사항이나 더 좋은 정보가 있다면 얼마든지 댓글이나 트랙백 부탁한다.


    참고
    bs-papervision : http://code.google.com/p/bs-papervision/ 
    as3dmod : http://code.google.com/p/as3dmod/
    sandy3d : http://www.flashsandy.org 
    alternativa3D : http://alternativaplatform.com/en/alternativa3d/

    글쓴이 : 지돌스타(http://blog.jidolstar.com/639)



    Flex 또는 ActionScript 3.0 라이브러리를 만들면서 하나의 네임스페이스를 지정키 위해 manifest설정을 하게 된다. (manifest를 모른다면 일단 Flex Builder에서 나만의 manifest만들기를 먼저 읽어보길 바란다.)

    Flash Builder 4 beta 2를 이용하면서 같은 방법으로 manifest를 설정하는데 아래와 같은 에러가 계속 나는 것이다.


    경험상 소스상에는 문제가 없는 것이기 때문에 다른 부분을 찾다가 beta 2에 있는 새로운 기능을 포착했다. 아래 이미지는 해당 프로젝트에서 Properties > Flex Library Builder Path 에서 Classes 탭을 선택했을때 화면이다. 이전 버전의 Builder에서는 보이고 있는 라디오 버튼이 없었던 것으로 알고 있는데 이번에 새롭게 들어갔나보다.

    저 기능은 라이브러리 컴파일시 컴파일할 대상의 Class를 선택하는 기능인데 이번에 기능이 바뀌면서 자동으로 모든 클래스가 포함되는 것을 선택하도록 하는 기능이 추가된 것이다. 이게 기본값이다. manifest관련 에러가 났던 것인 이 부분이 원인이였다. 다음 처럼 Select classes to Include In the library를 선택해보고 다시 컴파일하면 에러가 사라진다.


    아놔~~ 이 때문에 1시간 허비했다. 아직 beta버전이니깐 넘어가자. 정식버전 나오면 나아지겠지.

    Flash Builder 4는 이전 Flex Builder 3에 비해 너무도 많은 부분이 개선이 되었다. 이제 개발툴로서 제대로 자리매김하는 것으로 보인다. Flash Builder 4 및 다른 제품군을 다운 받기 위해 아래 링크를 참고하길 바란다.

    http://www.adoberia.co.kr/pds/down.html?src=text&kw=000026

    글쓴이 : 지돌스타(http://blog.jidolstar.com/613)
    Flash Builder 4 Plugin을 설치후 기존 프로젝트로 열었을때 황당한 문제에 봉착했다. 아래 그림처럼 툴바에 Run, Debug 버튼이 없어진 것이다.


    한번도 이런적이 없어서 몇시간 당황했는데, 해결방법은 이외로 간단했다.

    먼저 툴바위에 마우스 오른쪽 버튼을 눌러 Customize Perspective 를 선택한다. 또는 메뉴에서 Window > Customize Perspective 를 선택하면 되겠다. 그럼 다음과 같은 창이 나온다. 여기서 Command 탭을 선택한다.

    위 그림과 같이 왼쪽 Available command groups에 Launch를 체크한뒤 OK버튼을 누른다.



    휴~ 이거 하나 알아낼려고 엄청 힘들었다. 별것도 아닌것이... ㅎㅎㅎ

    Flash Builder 는 언제든지 다운받을 수 있다. 다음 링크를 참고바란다.
    http://www.adoberia.co.kr/pds/down.html?src=text&kw=000026 

    글쓴이 : 지돌스타(http://blog.jidolstar.com/608)

    독립형 FB4(Flash Builder 4)를 사용하지 않고 굳이 Eclipse에 FB4 plugin을 설치하는 이유는 독립형 FB4는 기능의 제약점이 있기 때문이다. 물론 FB4로도 충분히 개발이 가능하지만 Eclipse와 연동하는 것은 이 편이 실무에 더욱 적합하다. 그 이유는 hika님의 글 Flex Builder는 반드시 Plug in 으로 설치 글을 읽어보면 알 수 있다.

    하지만 이러한 설치법은 처음 해보는 사람에게는 단순하지 않다. 한방에 설치하는 독립형 FB4에 비해 이것저것 고려할 것이 많은 것 같은 생각이 들기 때문이다. 이 글을 쓰는 목적은 FB4 plugin을 설치를 하는데 있어서 다소 어려움을 쉽게 극복하기 위한 방법을 소개하기 위함이다.

    설치하는 대략적인 순서는 hika님이 매우 잘 설명해 주었다.
    Flex Builder는 반드시 Plug in 으로 설치

    그러나 더욱 자세한 방법은 Chocodonut님의 글대로 하면 되겠다.
    Flex Builder 3 Professional Eclipse plug-in 설치

    FB4도 위 글과 거의 동일한 방법으로 설치하지만 아래와 같은 몇가지 체크할 사항이 있다. (단, 본인은 Window XP환경에서 테스트 했음을 언급한다. Mac이나 Linux의 경우 아래에서 지적한 문제가 있을지는 테스트해보지 않았다.)

    1. Eclipse는 Ganymede를 설치한다.
    먼저, Eclipse버전은 Ganymede RC2 버전을 이용하기 바란다. 최신 버전인 Galileo는 제대로 설치되지 않는다.
    http://www.eclipse.org/downloads/
    에서 화면 오른쪽에 Older Versions를 선택한 뒤 Eclipse Ganymede SR2 Packages로 들어간다. 여기서 Eclipse IDE for Java EE Developers를 다운로드 받으면 되겠다. 아래 링크로 직접가도 되겠다.
    http://www.eclipse.org/downloads/packages/release/ganymede/sr2

    다운받은뒤 설치를 원하는 곳에 압축을 풀면 설치가 완료이다. 설치완료후 반드시 한번이상 실행해준다.

    만약 Galileo버전을 사용하고 싶다면 굳이 말리지 않는다. ^^
    다음 글을 참고한다.
    http://blog.naver.com/joycestudy/100090900907


    2. Eclipse실행시 JVM terminated. Exit code=-1 에러가 발생하는 경우
    Eclipse 설치폴더에 eclipse.ini를 열어 다음과 같이 수정한다.
    -showsplash
    org.eclipse.platform
    --launcher.XXMaxPermSize
    256M
    -vm
    C:\Program Files\Java\jdk1.6.0_07\bin\javaw.exe
    -Dosgi.requiredJavaVersion=1.5
    -vmargs
    -Xms40m
    -Xmx512m

    원래 eclipse.ini에서 수정된 부분은 -vmargs의 위치가 -Xms40m 바로 위로 이동된 것이며 추가된 부분은 -vm 부분이 들어간 것이다. 이때 javaw.exe 경로는 각자 jdk또는 jre 설치 경로를 따라 설정하면 되겠다. 이렇게 해도 같은 에러가 난다면 검색을 통해 다른 방법을 찾길 바란다.


    3. Flash Builder 4 plug in을 설치시 반드시 Eclipse 설치경로를 지정해줄것!
    FB4 plug in을 설치하면 중간에 Eclipse설치 경로를 지정하는 순서가 있다. 이 부분을 잊지 말고 Eclipse 경로를 지정하기 바란다.


    4. FB4를 실행할때는 Eclise를 실행하거나 FB4에 설치된 Run FB Plug-in with alternate Eclipse를 실행한다.
    FB4 plug-in에서 Run FB plug-in 을 실행하면 eclipse-host-distro의 Eclipse가 실행되므로 이것을 사용하지 말자.

    5. 바로가기를 FB4 아이콘으로 바꾸기
    일반적으로 Eclipse를 실행하기 위해 바탕화면에 바로가기를 만들거나 빠른실행아이콘으로 등록해서 사용할 것이다. 하지만 이 바로가기는 기본 아이콘이 이클립스이다. 그러므로 기존에 사용하는 이클립스 아이콘이 있다면 무엇이 Flash Builder이고 무엇이 Eclipse인지 잘 분간이 안갈터...

    바로가기의 아이콘을 Flash Builder 아이콘으로 바꿔보자.
    1. Flash Builder Plug-in이 설치된 폴더로 가서 eclipse-host-distro 폴더에 가면 Eclipse.ico 파일이 있다. 이것을 복사해서 Eclipse 설치 폴더에 복사한다.
    2. 다음으로 바탕화면 또는 빠른실행아이콘을 선택해 마우스 오른쪽 버튼을 눌러 속성을 선택한다.
    3. 아이콘 변경 버튼을 눌러 Eclipse 설치 폴더에 복사한 Eclipse.ico로 바꿔준다.

    이제 근사하게 Flash Builder 아이콘을 가진 바로가기를 만들 수 있게 되었다.


    6. 이전 워크스페이스를 열때 만약 Run, Debug 버튼이 사라진다면!
    다음 글을 참고한다.
    Flash Builder/Flex Builder의 툴바에서 Run, Debug Launch 버튼이 없어진 경우 해결법


    7. 이전 워크스페이스의 SDK경로는 따로 빼자!
    Flash Builder의 SDK가 아닌 기존에 원래 사용하던 SDK를 참조할 필요가 있는 경우가 있다. 이런 문제를 해결하기 위한 방법은 여러가지가 있겠지만 본인은 C나 D 드라이브로 SDK폴더를 따로 만들어 FB가 이 SDK를 참조하도록 하고 있다.

    다음과 같이 진행한다.

    1. C나 D 드라이브등에 사용할 SDK를 복사한다.(새 FB의 설치경로에 sdks에 있는 파일을 복사할 수 있다.)
    2. FB를 실행한다.
    2. 메뉴에서 Window > Preference를 선택한다.
    3. 창이 뜨면 좌측에 Flash Builder를 열어 Installed Flex SDKs를 선택한다.
    4. 우측에 Flex 3.4, Flex 4.0이 이전 FB버전의 경로를 참고하고 있을 것이다. 이를 C나 D드라이브에 복사한 SDK를 참조하도록 한다.


    8. 기본 플러그인 설치는 기본!
    독립형 FB4에는 설치되지 않는 플러그인이 Eclipse에는 언제든지 설치가 가능하다. 주로 협업이 이뤄지므로 SVN등을 설치해야하고 다양한 배포 경로를 확보하기 위해 ANT관련 설정이 필요할 것이다. C/C++개발을 위한 CDT, PHP개발을 위한 PDT등 플러그인을 제한없이 설치할 수 있으니 Eclipse의 FB4 plugin을 설치하는 편이 훨씬 득이라는 것을 느낄 수 있을 것이다.

    다음글들을 참고하면 좋겠다.
    Flex Builder 에서 Subversion(SVN) 사용하기
    Flex Builder 3에서 ANT 사용하기
    Maven 시작하기


    정리하며
    사실 위에 제시한 사항들은 개인적으로 사용하는 방법이다. 꼭 그렇게 따라할 필요 없으며 필요시 참조하면 무난할 것이라 판단한다.

    실무에 종업하시는 분들은 왠만하면 FB4 플러그인을 사용하고 있다. hika님의 블로그에 실무를 통해 자주 사용하는 설정정보를 정리해두었으니 참고 바란다.

    플래시를 위한 이클립스 기본 설정

    다음 글들은 이외에 개발에 큰 도움이 되는 글이니 참고 바랍니다.
    플래시 어플리케이션 개발하기
    플래시 프로젝트 생성하기


    다운로드
    Flash Builder 및 갖가지 Adobe 제품군을 다운로드 받으려면 다음 링크를 참고하세요.
    http://www.adoberia.co.kr/pds/down.html?src=text&kw=000026

    글쓴이 : 지돌스타(http://blog.jidolstar.com/607)


     

    Flex Builder 또는 Flash Builder 에서 유용하게 사용할 수 있는 플러그인을 소개했습니다. 더 많을 것이라 생각하는데 함께 공유했으면 좋겠네요. 댓글, 트랙백 모두 환영합니다.

    http://opencast.naver.com/FL188/8


    참고로 Flash Builder는 아래 링크로 가서 다운받으세요.
    http://www.adoberia.co.kr/pds/down.html?src=text&kw=000026 


    글쓴이 : 지돌스타(http://blog.jidolstar.com/581)

    Adobe가 Coldfusion 9 Beta 및 새 Builder를 배포했습니다.

     

    Adobe Labs(http://labs.adobe.com)에서 다운로드 받을 수 있습니다.

     

    벌써 설치기까지 나왔는데 Coldfusion에 큰 관심과 애정을 가지고 계신 장창학 님의 블로그에서 보실 수 있습니다.

     

    Coldfusion 9 Beta 및 Coldfusion Builder 간단 설치기

     

    Coldfusion은 빠르고 쉬운 웹서비스를 개발하는 방법중에 하나입니다.

    매우 강력함에도 불구하고 한국에서는 많이 쓰이지 않고 있는데요.

    그래서 아쉽게도 한글로된 문서도 많이 없는 편입니다.

    그래도 몇몇 선구자님들이 계셔서 다행입니다.

     

    제 생각에 그 선구자 중에서 장창학님이 대표적인 것 같습니다.

    그래서 Coldfusion에 대해서는 장창학님의 블로그에 잘 정리되어 있습니다.

    관심있으신 분은 꼭 훑어보시고요.

     

    용스님이 쓰신 ColdFusion 웹서비스 간단하게 만들어보는 예제도 있네요.

    ColdFusion CFC로 웹서비스 간단하게 만들어보기

     

    위키피디아에 ColdFusion에 대해서 자세히 나와있네요. ^^

     

    http://en.wikipedia.org/wiki/ColdFusion

     

    카페도 있습니다. 이것 역시 장창학님이 운영하시는... 대단하십니다.

    http://cafe.naver.com/opencfml.cafe

     

    아무튼 공부하고자 마음만 먹으면 할 수 있습니다. ^^

     

     

     

    위 그림은 Flex Builder 3(Flash Builder 4)의 Profiling(프로파일링) 기능에서 시간별 메모리의 상태를 보여주고 있는 것이다. 프로젝트를 하다가 저놈의 메모리가 도데체 왜 올라가는지 이해할 수 없었다. 분명 참조를 제대로 지워주고 있지 않으렸다!

     

    등록했던 이벤트도 지워주고 자식들도 빼주고 붙여주면서 원인을 분석해갔다. 전체에서 부분으로 부분에서 전체를 훑어보면서 메모리의 변화를 계속 살펴봤다.

     

     

    위 그림은 메모리가 정상적으로 반환되고 있는 모습이다. Flash Player에서는 참조관계가 root에 묶여 있거나 환형참조일때 가비지 컬렉션(Garbage Collection)으로 인식하여 어느 서점에 메모리에서 해지를 시킨다. 그래서 개발자는 참조를 잘 지워줘야 한다.

     

    메모리가 비정상적으로 올라간 첫번째 원인은 이벤트 핸들러를 등록만 하고 지우지 않은데서 비롯되었다. 그래서 이벤트 핸들러를 약참조(weak reference)로 하도록 해서 해결했다. 약참조의 경우 소멸시점이 명확하지 않을때 유용하게 사용할 수 있다. 그리고 객체 중복 참조로 인해 메모리가 상승했는데 한쪽에서만 참조를 없애고 다른 한 곳에서는 삭제하지 않은 오류를 범했다. ㅡㅡ;

     

    아~ Flex Builder에 이 기능이 없었다면 저걸 어떻게 찾을 수 있었을까? Flash Builder 4부터는 이 프로파일링 기능에 퍼포먼스 해석(performance analysis)기능 까지 추가 되고 개선되었다는데~~ 어찌하는지 해봐야 겠다.

     

    Flex Builder에서 디버깅&프로파일링 하기 - 1부 -

    Flex Builder에서 디버깅&프로파일링 하기 - 2부 -

     
    Flash Builder는 아래 링크에서 다운로드 받을 수 있습니다.
    http://www.adoberia.co.kr/pds/down.html?src=text&kw=000026 

    기존 Flex Builder 3를 구입한 사람에게만 적용됩니다.

     

    Step 1. Adobe Labs에 접속합니다. (http://labs.adobe.com)

     

    Step 2. Adobe Flash Builder 4 Beta 다운로드 페이지로 이동합니다.

    https://www.adobe.com/cfusion/entitlement/index.cfm?e=labs%5Fflashbuilder4

    Adobe 회원이 아니라면 먼저 회원가입하세요.

     

    Step 3. 30-day Beta 부분에 request extension serial number 를 선택합니다.

    기존 Flex Builder 3를 고객만 해당되며 Flash Builder 4 다운로드 후 21일 후에 Flash Builder 4에 대한 Serial Number를 받을 수 있다고 명시되어 있습니다.

     

     

    Step 4. 자신의 이름과 전자우편주소, Flex Builder 3 Serial Number를 입력하고 Do you accept this term?를 check한다음에 Request Serial Number 버튼을 누릅니다.

    입력한 전자우편 주소로 Flash Builder 4 Serial Number가 전송되므로 정확하게 입력해야합니다.

     

    성공적으로 발송되면 다음과 같은 페이지가 나옵니다.

     

    Step 5. 입력한 전자우편 계정에서 Flash Builder 4 Serial Number를 확인합니다.

     

     

    Step 6. Flash Builder 4를 실행시키고 받은 Serial Number를 입력합니다.

     

     

    이제부터 Flash Builder 사용기간에 구애받지 말고 마음대로 쓰세요.

    Adobe Labs에서는 Learn to Use Flash Catalyst 라는 제목으로 Flash Catalyst에 관련된 페이지를 오픈해두었습니다.

    아래 링크를 통해서 어렵지 않게 Flash Catalyst에 대해 접할 수 있습니다.

     

    http://labs.adobe.com/technologies/flashcatalyst/tutorials/

     

    Adobe Developer Center에서는 Flex에 관련된 새로운 소식이 속속 올라옵니다. 유용한 기술문서가 자주 올라오기 때문에 참고하시면 도움이 됩니다.

     

    http://www.adobe.com/devnet/flex/

     

    여기에 최근에 올라온

    등을 한번쯤 구독해 보심을 권합니다.

     

    Flex 4 및 Flash Builder에 대해서 자세히 알고 싶다면 아래 Flex 4 Livedocs를 참고합니다.

     

    http://livedocs.adobe.com/flex/gumbo

     

     

     

    Flex SDK 4를 이용한 예제가 Tour de Flex에 추가 되었습니다.

     

    Flex 4가 기존 Flex 3에 비해서 바뀐 부분이 있는데 이를 쉽게 공부하길 원한다면 Tour de Flex를 이용하는 것이 좋을 것 같습니다.

     

    Tour de Flex에는 Flex 4의 Components, Effects, Layouts, Primitives, Styles 사용법에 대해서 쉬운 예제를 제공하고 있습니다.

     

    Flex 개발자라면 꼭 한번 보시길 바랍니다.

     

     

    Tour de Flex는 Web용, 데스크탑용(AIR로 제작됨)이 있습니다.  아래 링크를 통해 보시거나 다운로드 받아 설치하세요.

     

     

     

    Tour de Flex Eclipse Plug-in 소개 및 설치, 사용해보기

    Tour de Flex에서는 Eclipse Plug-in을 제공하고 있습니다. 여러분은 쉽게 Tour de Flex에서 제공하는 200여가지의 Flex 샘플을 Flex Builder 3.x 또는 Eclipse 3.4를 통해 쉽게 검색해 볼 수 있습니다. 다음과 같은 순서로 설치해보십시오.

    1. Flex Builder 3에서 Help > Software Updates > Find and Install 을 선택합니다.
    2. 새창이 뜨면 Search for new features to install 을 선택후 Next 버튼을 누릅니다.
    3. Net Remote Site 버튼을 눌러 새창이 뜨면 Name에 Tour de Flex, URL에 http://tourdeflex.adobe.com/eclipse 를 입력합니다.
    4. Site to include in search 리스트 창에 Tour de Flex만 check하고 Finish 버튼을 누릅니다.
    5. 성공적으로 연결이 되면 Select the features to install 리스트 창에 Tour de Flex가 뜹니다. 이것을 선택하고 Next를 누릅니다.
    6. Feature License에서 라이센스 동의를 선택후 Next 를 누릅니다.
    7. Finish를 눌러 Plug-in을 다운로드 합니다.
    8. 다운로드가 완료되면 install이나 Install All을 눌러 설치합니다.
    9. 설치 완료 이후 자동으로 다시 Flex Builder 3를 구동해야 한다는 메시지가 뜨면 Yes버튼을 눌러 재시작합니다.

     

    설치가 완료되고 Flex Builder 3가 다시 구동되면 메뉴에서 Windows > Other Views에 들어가 봅니다.

     

     

    위 그림처럼 Tour de Flex가 설치되어 있고 이것을 선택하고 OK 버튼을 누릅니다.

     

    아래와 같은 Updating 메시지가 뜨면 Download now를 눌러 설치하세요. 이런 메시지가 뜨는 것으로 보아 Plug-in이 Tour de Flex AIR 프로그램을 자동으로 설치 및 업데이트를 해주는 것으로 보입니다.

     

     

    Flex Builder에 아래와 같은 창이 나오면 Serach Components를 통해 해당 컴포넌트를 검색할 수 있습니다. 필자는 아래 화면과 같이 Button으로 검색해봤습니다. 결과가 나오면 보고 싶은 항목을 선택하여 더블클릭하도록 합니다. 그러면 설치형 Tour de Flex를 실행시켜 해당 컴포넌트의 사용 예제를 보여주도록 되어 있습니다.

     

     

    아래는 Button Loader Skin을 더블클릭으로 선택해서 나온 결과입니다.

     

     

    아쉽게도 약간의 버그가 있는 것 같고 Flash Builder 4에는 아직 제대로 동작이 안되는 것을 확인했습니다. 이 부분에 대해서는 업데이트 될 때까지 기다려야할 것 같습니다. 개발 하면서 궁금한 사항이 있다면 이 Tour de Flex Eclipse Plug-in을 적극 활용하면 도움이 될 것이라 생각합니다.

    Flash Builder 4와 더불어 Flash Catalyst Beta 버전이 배포되었습니다. 이것도 여전히 공식배포 버전은 아니며 테스트 버전이라고 볼 수 있지만 거의 완성단계가 아닌가 판단이 됩니다.

     

    Flash Catalyst(이하 FC)는 개발자와 디자이너가 협업의 도구입니다. 지금까지 Flex Builder의 디자인 모드 및 CSS를 통해 어느정도 디자인이 가능했지만 디자이너가 접근하기에는 너무나도 불편한 구조였습니다. 또한 디자이너가 MXML, ActionScript 3.0 코드까지 알아야하는 경우도 발생해서 더욱 다루기 어렵고 개발자와의 협업이 어려웠던 것이 사실입니다.

     

    FC는 디자이너가 프로그래밍 코드를 전혀 알것없이 PhotoShop 또는 Illustrator 와 같은 디자인 툴로 작업한 PDS나 AI파일을 카탈리스트로 불러와 레이아웃, State등을 잡고 각종 Effect도 잡을 수 있도록 만들 수 있습니다. 그 결과물(MXML코드)을 개발자에게 넘겨주면 개발자가 MXML에 비지니스 로직을 추가하는 방법으로 진행이 됩니다. 완벽한 디자인 분리가 될 것이라는 것은 해봐야 알겠지만 아무튼 이런 툴이 만들어진 것은 분명 반가운 일입니다.

     

    FC는 기존 Flash를 사용해본 디자이너라면 쉽게 접근해서 사용할 수 있는 구조로 되어 있습니다. 그러므로 학습하는데도 큰 무리가 없을 것으로 보입니다.

     

    FC로 작업한 결과물은 Flex뿐 아니라 AIR로도 개발이 가능해집니다. 이것 또한 큰 매력이라고 할 수 있습니다.

     

    FC는 아래 링크에서 다운로드 받을 수 있으며 30일 Trial버전으로 테스트해볼 수 있습니다.(Adobe 가입/로그인을 해야합니다.)

    http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs_flashcatalyst

    재미있는 것은 Serial Number를 함께 제공해줍니다.

     

    FC에 대해서 더욱 자세히 알고 싶다면 아래 링크를 참고하세요. 동영상을 꼭 보시길…

    http://labs.adobe.com/technologies/flashcatalyst/

     

    아래 링크는 GotoAndLearn 사이트에서 제공하는 Flash Catalyst and Flex 4에 대한 간단한 강의입니다.

    Flash Catalyst and Flex 4: Part 1

    Flash Catalyst and Flex 4: Part 2

     

     

    1. Flash Catalyst 설치하기

    시리얼 번호를 입력하라는 창이 나옵니다. 배포 페이지에서 Serial Numbers를 함께 제공하므로 그것을 입력해서 사용합니다.

     

    사용권 계약입니다. 당연히 동의해야 설치가 가능하겠죠?

     

    옵션 설정인데… 뭐 선택할 것이 없네요. 그냥 설치합니다.

     

    아래 화면처럼 설치 진행률을 보여줍니다.

     

     

    2. Flash Catalyst 사용해보기

    필자도 처음 해보는 것이라 자세한 기능 설명은 해드릴 수 없습니다. 엉성하게 나마 소개해 드리겠습니다.

     

    설치가 완료되면 실행해보시길 바랍니다. BETA 1이 선명하게 표시되어 있군요.

     

    아래는 실행화면입니다. 한글버전이 지원되는군요. 매우 좋습니다.

     

    잘 보시면 Adobe Illustrator AI파일에서, Adobe Photoshop PSD 파일에서, 마지막으로 FXG 파일에서 작업을 시작할 수 있음을 알 수 있습니다. 아직 이런 작업물이 없으므로 그냥 새로운 프로젝트를 만들어보겠습니다.

     

    아래와 같은 창이 나옵니다. 프로젝트 이름과 폭,높이,색상을 정합니다. 이름에 한글입력은 전혀 안됩니다. 프로젝트 명이니 당연한 것인지도..

     

    프로젝트를 만들어봤습니다. 매우 단순해보입니다. 아래 그림의 상단에 Page1은 Flex의 State(상태)를 의미합니다.


    즉, 화면전환을 위한 것이지요. 오른쪽에 간단한 도구와 Flex Component도 볼 수 있습니다.

     

    맨 아래 타임라인을 클릭해보면 아래처럼 볼 수 있습니다. 이것은 State 전환을 위한 설정입니다. FC로 State 및 각종 Effect도 줄 수 있다는 것을 예상 할 수 있습니다.

     

    버튼을 올려봤습니다. 버튼이 선택되어 있는 상태에서 버튼 설정을 쉽게 할 수 있도록 만들어져 있습니다. 필자는 개발자라 오히려 한글로 표현된 것이 어색하네요.

     

    단추모양편집을 눌러보겠습니다.

     

    아래처럼 버튼의 상태모양을 편집할 수 있습니다. 버튼의 State를 변경할 수 있도록 되어 있군요. 되돌아 가려면 검정색으로 보이는 바에 프로젝트명을 클릭하면 됩니다.(아래 그림에서는 jidolstar를 클릭합니다.)

     

    응용프로그램 상호작용의 +버튼을 눌러보면 Flex 컴포넌트의 CreationComplete 이벤트가 발생했을때 처리를 설정할 수 있도록 되어 있습니다. 가령 상태 변환 및 동작시퀀스 제작등입니다.

     

    그 아래 사용자 정의 상호 작용을 누르면 마우스 이벤트에 대한 다음 동작을 정의할 수 있습니다.

     

    다른 주제로 넘어가서…

     

    FC의 화면의 페이지 상태 밑에 중복상태, 비어있는 상태 버튼이 있는 것을 볼 수 있습니다. 차이점은 선택되어 있는 상태를 중복해서 상태를 만들것이냐 아니면 새로 상태를 만들것이냐 차이입니다. 확실한 것은 눌러보면 알 수 있다는 ^^

     

    아래처럼 상태를 만들어 봤습니다. 타임라인 부분도 변경된 것을 확인할 수 있습니다.

     

    각 상태 변화를 보기 위해  다른 컴포넌트를 올려보겠습니다.

    아래는 2번째 상태입니다. 기존 상태를 중복한 겁니다. 확인(CheckBox)를 추가했습니다.

     

    아래는 가로 스크롤 막대(HScrollBar)를 넣어봤습니다.

     

    이제 이것을 저장해보겠습니다. 확장자가 FXP이군요. 기억해야겠네요.

     

     

    3. Flash Builder 4에서 로드해보기

     

    Flash Builder 4를 실행해보시고 방금 만들 FC파일을 로드합니다.

     

    아래처럼 Flex 프로젝트가 만들어지고 MXML 코드가 들어가 있습니다. 상태 및 각 컴포넌트 배치, Transition 설정까지 모두 다 있습니다. 또한 components에는 만든 컴포넌트의 스킨도 포함되어 있는 것을 확인 할 수 있습니다. 개발자는 이제 FC에서 만들어진 결과물을 가지고 비지니스 로직만 구축하면 됩니다.

     

    4. 정리하기

    Flash Catalyst는 필자도 처음 사용해본 것입니다. 그러기 때문에 더 자세한 내용은 전달 할 수 없었습니다. 앞으로 필자도 이와 관련된 연구를 계속해서 함께 정보공유를 할 수 있는 분위기가 만들어졌으면 합니다. 기존 Flex 개발자는 Flash Builder 4 및 Flex 4 SDK를 공부해야할 것이고 디자이너는 Flash Caalyst를 익혀야 할 것입니다. Flash Builder와 Flash Caalyst는 Adobe RIA 개발/디자인 최초(?)의 협업도구 입니다. 첫번째 버전이라 아마도 부족한 점이 있을 것이지만 앞으로의 발전을 기대해봅니다.

    Adobe Flash Builder 4 Beta가 배포되었습니다. 공식판은 아니고요. Flash Builder 4는 Flex Builder 3의 차기버전으로 Flex SDK 4(Flex Gumbo)를 기본 SDK로 설정되어 있습니다. Flex SDK 4로 만들어진 애플리케이션은 기본적으로 Flash Player 10 버전에서 동작이 가능합니다. 물론 기존 Flex SDK 3도 사용할 수 있습니다.

     

    아래 링크에서 언제든지 다운로드 받을 수 있습니다.(회원가입하셔야 합니다.) 윈도우, 맥 버전이 있으니 자신의 운영체제에 맞게 다운로드 받으시면 됩니다.

     

    http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs%5Fflashbuilder4

     

     

    다음 글을 참고하세요.

     

    1. 설치하기

    위 링크에서 다운로드 받아 쉽게 설치할 수 있습니다.

     

    처음 설치화면입니다.

     

    C:/Program Files/Adobe/Flash Builder Beta 경로에 기본 설치되는군요.

     

    설치중인 화면입니다.

     

    이름도 Gumbo입니다. ㅎㅎ 아직 Beta라는 것이겠죠.

     

    실행해 보겠습니다.

     

    30일 Trial버전으로 사용해봅니다.

     

    첫 실행 화면입니다. FB 문자가 선명하네요. FB는 Flex Builder가 아니라 Flash Builder 입니다.

     

     

     

    2. 사용해보기

     

    메뉴 구성 변화

    FXP 임포트도 되고 Test Case Class, Test Suit Class도 만들 수 있도록 되어 있네요. Flex Builder로 테스트 주도형 제작이 가능해지겠군요.

     

    Data 메뉴가 상당히 직관적으로 바뀌었네요. 또한 더욱 많은 서비스도 지원하도록 만들어졌고요. 진정한 RIA를 구축하기 위한 서버측 기술 지원을 배려한 기능이군요.

     

     

    이전에 없었던 Data/Services, ASDoc, Network Monitor 등이 지원되네요.

     

    아래는 네트워크 모니터툴입니다. RPC 통신등을 할 때 서버와 통신이 어떻게 되는지 확인하는데 요긴하게 사용할 수 있을 것 같습니다. 이제 Http Watcher가 필요 없겠군요!!!!!

     

     

    Flex 코딩해보기

    Flex Project를 만들어보겠습니다. SDK를 Flex SDK 3.4와 Flex 4.0을 사용할 수 있도록 되어 있네요. Flex 4.0 기반에서 작업해 보겠습니다.

     

    FDT(Flash Development Tools)에서 보이는 구조와 비슷하네요. 프로젝트에 사용하고 있는 Flex 4.0 SDK 라이브러리들도 보이고 각각의 (+)버튼을 누르면 정의된 클래스도 한눈에 볼 수 있습니다. 이거 정말 편해졌군요. SWC도 못봤던 netmone.swc, sparksins.swc등이 있습니다.

     

    재미있는 것은 Flex Gumbo가 Fx이니셜로 컴포넌트가 만들어진 것으로 알고 있었는데 FxApplication이 아닌 그냥 Application입니다.

    그리고 몇가지 namespace(fx, s, mx)로 구분 되었네요. ComboBox가 DropDownList로 이름이 바뀐 것 같습니다.

     

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/halo"
        minWidth="1024" minHeight="768">
        <s:Panel x="14" y="44" width="250" height="200" title="타이틀입니다.">
            <s:Button x="15" y="12" label="버튼"/>
            <s:CheckBox x="15" y="46" label="체크박스"/>
            <mx:ColorPicker x="16" y="71"/>
            <s:DropDownList x="103" y="13"/>
            <s:RichEditableText x="92" y="50" width="147" height="39" text="RichEditableText 컴포넌트"/>
        </s:Panel>
    </s:Application>

     

    디자인 모드입니다. 스킨도 바뀌고 새로운 컴포넌트도 있네요.

     

    실행해볼까요?

    헛! 깔끔해진 실행화면!, Flex가 이젠 기본스킨도 이쁘게 나왔네요.

     

     

    Theme 선택 기능

    프로젝트의 Properties를 보면 Flex Theme가 추가되었습니다. 와우! 그런데 아직 기능이 완벽하지 못한 것 같습니다. 적용이 잘 안되네요 ㅡㅡ;

     

     

    Flash CS4 Component 연동

    디자인 모드에서 Components를 보시면 Custom에 New Flash Componet, New Flash Container가 있습니다. 즉 Flash CS4에서 만들어진 SWC와 연동이 가능해졌다는 것을 의미합니다.

     

    드래그 해서 디자인 뷰에 붙이면 아래처럼 화면에 보이고 선택하면 오른쪽 Properties에 Create in Adobe Flash 버튼이 보입니다.

     

     

    버튼을 누르면 Class를 선택할 수 있게 하고 SWC 파일을 선택합니다.

    Create 버튼을 누르면 Flash CS4가 실행되면서 컴포넌트를 만들 수 있게 되어 있네요.

     

     

    ASDoc 기능

    와우! Panel에 마우스를 올려보니 간단한 설명도 나오네요. Eclipse에서는 되던건데… ㅎㅎ

     

    앗… ASDoc View가 바로 이런 역할을 가지는 거였군요. 해당 컴포넌트를 선택하면 ASDoc View에 아래처럼 보입니다. 강력하군요.

     

     

    Getter/Setter 생성기능 / ASDoc Commnet 기능

     

    엄청난 기능(?)이 추가되었군요. Eclipse에서는 당연히 되던건데 왜 Flex Builder에서는 안되나 궁금했던 기능이 이제야 추가되었군요.

     

    properties를 만들고 해당 속성의 Getter/Setter 기능을 아래처럼 추가할 수 있습니다. 단축키는 없네요. ㅡㅡ;

    또한 Add ASDoc Commnent 기능도 추가 되었습니다. @author, @since 등을 자동으로 붙여줄 수 있으면 좋으련만… 아마 설정이 가능할겁니다. ^^

     

     

    이벤트 핸들러 및 Service Call 등록 기능

     

    코딩작업 없이 Event 핸들러 및 Service Call 기능을 추가할 수 있게 되었습니다.

     

     

    위 그림에서 처럼 버튼을 선택하고 Properties에서 On click에 Generate Event Handler 를 선택하면 아래처럼 이벤트 핸들러가 생성됩니다. 넘 좋군요. ^^

     

    버튼을 click하면 바로 아래 코드가 실행되는겁니다.

     

    그리고 Generate Service Call을 누르면 Data/Services를 생성해서 연결할 수 있습니다. 와우 RIA 개발툴 다운 면모가 보이는군요.

     

     

    File Templates 기능

    메뉴의 Windows의 Perferences에 들어가면 아래와 같은 창이 뜹니다.

    여기에서 Flash Builder > File Template 가 있습니다. 이를 선택하면 자신의 코딩방식을 설정할 수 있도록 되어 있습니다. 좋은 기능이네요.

     

     

    3. 정리하며

    이외에도 아직 제가 발견하지 못한 기능이 상당합니다.

     

    이제 FDT를 사용하지 않아도 Flash Builder로 충분히 예전에 지원되지 않았던 기능들을 사용할 수 있게 되었습니다. 몇가지 버그가 있는 것 같지만 그 버그만 잘 잡아준다면 훌륭합니다.

     

    제가 적지 않은 기능이 있다면 소개해주세요. 그리고 제 블로그에 트랙백(엮인글) 적극 환영합니다. ^^

    Flex, Flash, ActionScript, AIR....

    Adobe RIA 기술을 처음 접해본 이들에게 이 용어들의 구분은 매우 생소하다. 앞에 3개는 모두 Flash Player에서 돌아가는 SWF파일을 만들어주는 툴 및 언어이다. AIR는 이러한 것을 확장해서 데스크탑 영역까지 애플리케이션을 제작할 수 있는 기술이라고 할 수 있다.

     

    많이 헷갈리는 것중에 하나가 바로 Flex, Flash, ActionScript 의 구분이다. ActionScript는 Flex, Flash 애플리케이션을 개발하는 가장 핵심이면서 기반이 되는 언어이다. Flex는 ActionScript 3.0을 확장해 RIA를 지원하기 위한 일종의 프레임워크이다. Flash는 ActionScript 초기 시절부터 있는 일종의 툴로서 이펙트 및 다양한 효과를 제작하는데 적절하도록 구성된다. 결국 Flex, Flash의 태생은 ActionScript 이고 어떤 목적을 가지고 제작하느냐에 따라 Flex, Flash로 구분해서 개발한다. 물론 어떤 것을 선택하든지 결과물은 SWF이다.

     

    재미있는 사실은 Flash는 뭔가 디자인 중심적으로 느껴지는 반면, Flex는 개발적이고 기술적으로 여겨는 풍토가 있다. Flash 개발자라고 말하는 것보다 Flex 개발자라고 하면 연봉협상에도 유리할지 모른다. 하지만 Flash 개발이든 Flex 개발이든 어떤 애플리케이션을 만드냐에 따라 선택이 달라지는 것이지 개발의 질이 달라지는 것은 절대 아니다. 여기서 선택이라는 것은 가령 이렇다. 기업솔루션을 구축해야하는 상황이면 서버 구성 및 데이타 통신, 데이터 관리, 각종 컴포넌트를 아낌없이 지원해주는 Flex로 개발하는 것이 좋다. 하지만 Google Map과 같이 Flex 컴포넌트를 전혀 사용하지 않는다면 Flash 기반이나 순수 ActionScript 기반으로 개발하는 것이 맞다.

     

    Adobe에서 Flex Builder 3의 다음 버전을 Flex가 아닌 Flash Builder 4로 지정하기로 했다. Flash Builder 4는 현재 Flash CS4와 같은 툴이 아니라 지금의 Flex Builder와 같이 Eclipse기반으로 만들어진 툴이다. 또한 Flex 4 SDK(현 Flex Gumbo)를 기반으로 Flex 개발환경을 지원한다. 결국 그런거다. Adobe RIA기술의 핵심은 Flash다. 그리고 Flex도 결국 Flash다. 다만 Flex SDK를 기반으로 제작하면 Flex SDK로 만들어진 Flash 애플리케이션인 것이다.

     

    차기 버전이 Flex Builder 4 대신 Flash Builder 4로 지정한 것은 여러모로 바람직해 보인다. 일단 같은 SWF 결과물을 만들어 준다는 암시를 지니기 때문에 의미전달이 쉬워진다. 겉모습은 전부 Flash이지만 개발방법은 선택하기 나름인 것이다. Flex SDK를 사용하면 그 사람은 여전히 Flex 개발자인 것이다. 앞으로 디자이너와 개발자간에 협력 도구인 Flash Catalyst는 Flash Builder와 매우 자연스럽게 연동이 된다. 그런데 어떤것은 Flex, 어떤 것은 Flash, 이렇게 되면 뭔가 섞일 수 없는 느낌이 든다.

     

    2009년 6월 쯤에 1차 베타버전이 나오고 4분기면 정식 버전이 출시될 것이다. 아무튼 기존 보다 개발의 편의성을 극대화 시킬 수 있는 Flash Builder 4가 나오길 기대한다.

     

    이것만은 기억하자.

    이제 더 이상 Flex는 Flex Builder를 지칭하지 않는다. Flex는 Flex SDK를 지칭하며 그것을 이용해서 개발하는 툴은 Flash Builder 4인 것이다.

    Flash Builder 4는 다음 링크를 통해 다운받으세요.
    http://www.adoberia.co.kr/pds/down.html?src=text&kw=000026 

    대부분의 Adobe RIA관련 개발자들은 AIR, Flex, Flash 애플리케이션을 개발하기 위해 Flash IDE또는 Flex Builder를 많이 사용할 것 입니다. 또는 FDT(Flash Development Tools)라는 것도 쓰고요. 그런데 이들 툴의 단점은 유료라는 겁니다.

     

    이런 툴이 없어도 Flex, AIR의 경우 개발이 가능하다만 개발툴없이 개발하는 것은 그만큼 생산력이 떨어지지요.

     

    지금 소개하는 FlashDevelop은 Flash 기반 개발툴입니다. 중요한 것은 무료인데다가 개발도 큰 불편함이 없다는 장점이 있습니다. 또한 수시로 업데이트되어 관리가 되는 툴입니다. FlashDevelop은 일단 Flex Builder나 FDT에 비해 가볍고, AS2, AS3 환경에서도 모두 개발이 가능하다는 장점이 있습니다. 몇가지 기능적 제한(?)이 있을지 모르겠지만 개발하는데 크게 무리가 없다는 생각이 듭니다. 제게 필요한 ANT 개발 및 SVN 소스 관리가 되는지는 잘 모르겠군요.

     

    우리나라에서도 FlashDevelop을 이용해 개발하시는 분들이 꽤 있나봅니다. Naver 카페에 "FlashDevelop을 쓰는 사람들"이 만들어졌더군요. 올해 4월 30일에 만들어졌으니 1개월도 안된 신생 카페입니다. 그래도 벌써 회원수가 100명이 넘었습니다. FlashDevelop에 대한 정보를 공유하고자 하는 사람에게 매우 유용할 것 같습니다. 필자도 FlashDevelop를 많이 써본적 없고 관련 정보에 매말라 있었는데 이렇게 좋은 카페가 생겨서 흐뭇하네요. 기회가 닿으면 FlashDevelop으로도 개발해보고 싶네요.

     

    좋은 카페를 만들어 주신 재규어님께 감사합니다. ^^

     

     

     

    아래 링크는 각 OS별 ANT로 Web Browser를 구동하는 방법이 소개하고 있다.

     

    Launching Firefox from ANT on OSX

     

     

    관련글

    Flex Builder 3에서 ANT 사용하기

    Flex Builder 3에서 ANT로 FTP를 사용하는 방법 소개

     

     

     

    Flex Builder 3에서 ANT로 원하는 파일을 FTP로 전송하는 방법에 대해서 소개한다.

     

    참고로 Flex Builder에서 ANT 환경을 구성하는 방법은 필자가 이전에 작성한 “Flex Builder 3에서 ANT 사용하기”를 읽어보면 되겠다.

     

    ANT 환경에서 FTP를 이용하는 경우는 필자의 경우 asdoc등으로 만들어진 문서를 웹에 배포할 때였다. FTP는 ANT에서 기본적으로 제공하는 명령이 아니기 때문에 추가적으로 라이브러리를 설치해야 한다. 이 라이브러리는 Apache Jakarta프로젝트에서 개발한 Commons Net를 사용하면 된다.

     

    FTP작업을 위한 환경 만들기

    다음과 같은 순서로 환경을 만든다.

    1. Commons Net 2.0 Binary버전을 다운받아 압축을 푼다. 그리고 해당 폴더를 관리하기 편한 위치에 옮겨둔다.
    2. Flex Builder의 메뉴에서 Windows > Perferences를 선택하면 아래와 같은 창이 나온다. 왼쪽 메뉴에 Ant > Runtime을 선택한다. 그리고 Classpath 탭을 누르고 Ant Home Entries를 선택한다. 오른쪽에 Add External JARs… 버튼을 눌러 Commons Net안에 commons-net-2.0.jar와 commons-net-ftp-2.0.jar을 추가하도록 한다.

     

     

    FTP 전송을 위한 ANT Script 작성

    ANT 스크립트를 아래와 같이 작성한다.

     

    <ftp server="${ftp.server}"
    port="${ftp.port}"
    remotedir="${ftp.dir}"
    userid="${ftp.userid}"
    password="${ftp.password}"
    depends="yes"
    binary="no"
    >
    <fileset dir="{dir.docs}">
    <include name="**/*.html"/>
    </fileset>
    </ftp>

     

    위 스크립트를 실행하면 아래처럼 비슷하게 Flex Builder 3의 Console창에 출력하며 전송이 될 것이다.

    Buildfile: D:\STARPL_DEV_02\Map\mapdev3\20090421\as3utils\build\as3utils.build.xml
    asdoc.ftp:
    [ftp] sending files
    [ftp] transferring D:\STARPL_DEV_02\Map\mapdev3\20090421\as3utils\docs\all-classes.html
    [ftp] transferring D:\STARPL_DEV_02\Map\mapdev3\20090421\as3utils\docs\all-index-A.html
    [ftp] transferring D:\STARPL_DEV_02\Map\mapdev3\20090421\as3utils\docs\all-index-B.html
    [ftp] transferring D:\STARPL_DEV_02\Map\mapdev3\20090421\as3utils\docs\all-index-C.html

    [ftp] transferring D:\STARPL_DEV_02\Map\mapdev3\20090421\as3utils\docs\style.css
    [ftp] transferring D:\STARPL_DEV_02\Map\mapdev3\20090421\as3utils\docs\title-bar.html
    [ftp] 75 files sent
    BUILD SUCCESSFUL
    Total time: 15 seconds

     

    FTP 사용시 각종 옵션은 http://ant.apache.org/manual/OptionalTasks/ftp.html 를 참고한다.

     

     

    이 글은 Flex Builder 3환경에서 ANT를 사용하여 개발의 효율성을 높이는 방법을 이해하는데 목적이 있다. 처음 ANT를 접하는 사람을 위해서 ANT가 무엇이고 사용해야하는 필요성도 언급한다.

     

    ANT란?

     

    ANT(http://ant.apache.org/)는 자바기반의 빌드 자동화 툴이다. 자바개발자라면 한번쯤은 사용해봤을 것이다. ANT는 일반 개발툴의 개발한계를 극복하는데 유용하다. ANT를 이용하면 여러가지로 분산된 일을 단 한번에 처리할 수 있고 또한 처리 순서를 쉽게 배치할 수 있어 매우 유용하다. 가령 어떤 작업을 처리를 위한 프로세스를 아래와 같이 한다고 하자.

     

    • build 폴더 생성
    • build 폴더 안에 classes 폴더 생성
    • src폴더 안에 있는 소스를 컴파일한 뒤 결과를 classes 폴더로 전송
    • 결과물을 테스트 공용 FTP 서버로 전송
    • 문서제작

     

    위와 과정을 손수 하나씩 처리하려고 하면 귀찮기 짝이 없을 것이다. ANT는 이러한 처리를 단 한번에 처리할 수 있도록 해서 작업의 능률을 높여준다.

     

    ANT는 ANT자체로도 충분히 사용할 수 있으나  Eclipse나 Flex Builder등에 플러그인으로 설치하여 사용할 수도 있다. ANT는 기존 개발툴에서 개발시 극복하지 못하는 상황을 해결해주는 좋은 도구이다.

     

    ANT는 XML형태로 작성된 문서를 이용하며 기본적인 문법만 익히면 쉽게 활용이 가능하다. 여기서는 ANT에 대한 전반적인 지식을 다루기에는 무리가 있으므로 해당 문서를 검색하거나 관련서적을 구입해서 학습하면 좋겠다.

     

     

    Flex Builder 3의 개발환경 이해하기

    ANT를 사용하기에 앞서 Flex Builder 3의 개발 환경에 대해 어느 정도 이해가 필요하다. Flex Builder 3는 별다른 어려운 설정이 없이 Flex/AIR 프로젝트, 라이브러리 프로젝트, ActionScript 3.0프로젝트 등의 개발 환경을 구성해준다. Eclipse Flex Builder 3 Plugin을 설치해도 이와 동일하게 개발이 가능하다.

     

    Flex Builder를 사용하지 않는다면 여러분은 다음과 같은 방법으로 콘솔 환경에서 컴파일을 해야한다. (이는 한가지 예시일 뿐이다.)

     

    compc -namespace http://www.adobe.com/2006/foo manifest.xml -source-path .
    	-include-namespaces http://www.adobe.com/2006/foo -include-classes mx.containers.MyWindow
    	-include-file MyWindow.png mx/containers/MyWindow.png
    	-output='MyWindow.swc'

     

    아래는 위 컴파일시 사용되는 manifest.xml이다.

    <?xml version="1.0"?>
    <componentPackage>
    	<component id="MyWindow" class="mx.containers.MyWindow"/>
    </componentPackage>

     

    위에서 compc 명령어는 Flex SDK의 bin폴더에 있는 컴파일러로 AS3 라이브러리의 결과물인 SWC를 만들 때 사용하는 명령어이다. Flex Builder는 개발자가 이런 명령에 대한 자세한 내용을 모르더라도 아주 간단하게 SWC를 만들 수 있도록 한다. Flex Builder를 사용하지 않으면 해당 명령어를 알아야 한다고 하니 Flex Builder가 고마워진다. ^^;

     

    위처럼 SWC를 만들때 사용하는 라이브러리 프로젝트 외에 애플리케이션을 만드는 Flex 프로젝트나 ActionScript 3.0 프로젝트의 경우에는 mxmlc 명령어를 사용한다. mxmlc 명령어는 일반 애플리케이션 이외에도 CSS, 리소스 모듈, 모듈 등을 컴파일할 때도 사용한다. 또한 Class별 문서제작은 asdoc 명령어를 사용한다. Flex Builder를 이용하면 compc, mxmlc 등을 몰라도 최소한의 개발이 가능하다는 것을 아는 것이 중요하다.

     

    compc, mxmlc, asdoc과 같은 명령어는 Flex Builder가 설치해 있는 MS Window 환경이라면 C:/Program Files/Adobe/Flex Builder 3/sdks/{Flex SDK 버전}/bin 폴더 내에 있다. 여기서 {Flex SDK 버전} 부분은 언제든지 Flex SDK의 다른 버전을 설치해 사용할 수 있다는 것을 의미한다. Flex SDK 다운로드 페이지에서 다운받아 여기에 복사한 뒤 사용하면 되겠다.

     

    아래는 Flex Builder 3에 있는 Flex SDK들이다. 개발자는 필요에 따라 여기에 최신 SDK를 복사해서 사용한다.

     

     

    아래는 각각 SDK폴더의 bin 폴더 내에 있는 명령어들을 보여준다. 여기에 위에서 언급한 mxmlc, compc등이 있다는 것을 확인하자. Flex Builder는 이들 명령어를 이용해 개발자가 구체적으로 알 필요 없이 내부적으로 SWF, SWC등과 같은 결과물을 만들어 낸다.

     

    위 경로는 MS Window XP일 때이다. 다른 운영체제(Mac OS, Linux)의 경우는 다르다.

     

    ANT를 언제 사용해야하는가?

    Flex Builder 3가 개발의 편의성을 제공함에도 불구하고 Builder에서 제공하는 컴파일 방법만 이용하면 개발 규모 및 방향에 따라 개발의 한계에 도달할 수 있다. 예를 들어, 잦은 라이브러리 변경은 라이브러리가 수정될 때마다 그 라이브러리를 이용하는 프로젝트도 재컴파일하게 되어 결과물을 보여주므로 그만큼 결과를 보는데 오랜 시간이 걸리는 문제가 발생할 수 있다. 또는 Flex Builder 3에서 제공하는 컴파일 방식으로는 능동적으로 다른 프로젝트간에 결과물을 공유할 수 없다. 가령, 다른 프로젝트의 bin폴더의 swc를 참조해서 컴파일해야하는 경우나 만든 프로젝트 결과물을 FTP로 바로 올려야하는 경우, 또는 여러개의 SWF를 복사해서 다른 폴더에서 사용할 수 있도록 배치하는 경우는 Flex Builder 3에서 제공하는 기능만으로는 불가능하다.

     

    몇가지 예만 들었지만 Flex Builder만으로 할 수 없는 일들이 종종 생긴다는 것을 이해하는 것이 중요하다. 이러한 이유로 개발 규모 및 방향에 따라 ANT를 도입하여 Flex Builder로만 개발할 때의 단점을 극복하여 능동적이고 가벼운 컴파일링 및 프로젝트간 컨텐츠 공유등을 할 수 있도록 한다.

     

    ANT를 도입하게되면 Flex Builder가 하지 못하는 것을 극복하는 것은 사실이지만 개발 자체를 쉽게 해주는 것은 아니다. 왜냐하면 앞서 설명한 mxml, compc와 같은 명령어를 사용하는 방법을 익혀야하며 또한 ANT자체 문법도 익혀야하기 때문이다. 대신 앞서 설명한 한계를 극복하는데 ANT의 선택은 좋은 방법이 될 수 있다.  ANT를 분별없이 무조건 도입하면 오히려 개발 능률을 떨어뜨리게 된다. 그러므로 Flex Builder로 개발 한계에 도달했을 때만 도입하도록 한다.

     

    Flex Builder에서 ANT 개발환경 구축하기

    Flex Builder 3부터 ANT를 지원하고 있다. 이 말은 Flex Builder 3를 설치하면 ANT관련 Plugin이 설치가 되어 있다는 것을 의미한다. 아래는 Flex Builder 3의 plugins에 ANT가 설치되어 있는 것을 보여주고 있다. 

     

    1. JDT(Eclipse Java Development Tools) 설치

     

    Flex Builder 3부터는 ANT를 지원한다. 하지만 ANT를 사용하려면 Flex Builder에 JDT를 설치해야한다.  다음 문서에서 설명하는 것처럼 JDT를 설치하도록 한다.

     

    Adding the ANT support in Flex Builder 3

     

    또는

    http://www.flex-tutorial.fr/2009/09/04/installer-ant-dans-flex-builder-3/

     

    2. 설치된 ANT 확인

     

    JDT를 설치한 후 Flex Builder를 재실행하면 Window->Other View에서 아래와 같이 Ant를 선택할 수 있다.

     

     

    선택하면 Flex Builder에 아래와 같은 Ant View 창을 볼 수 있다. 이 창에 필요한 ANT XML문서를 놓아 사용하면 되겠다.

     

     

    ANT에 관련된 설정은 Flex Builder 메뉴에서 Window->Preferences를 선택하면 아래와 같은 창이 나오고 좌측 메뉴에서 Ant를 선택하면 각종 설정을 할 수 있다. 대부분의 경우 기본설정으로 두면 되겠다.

     

     

     

    Flex SDK 환경에서 ANT 개발 환경 구축하기

    참고로 Flex Builder와 상관없이 Flex SDK로만 개발하거나 Flex Builder가 아닌 다른 개발툴을 사용하고자 한다면 아래와 같은 방법으로 환경을 조성하면 된다. (Window XP 기준)

     

    1. Ant를 다운로드 받아 설치한다.

     

    http://ant.apache.org/bindownload.cgi

     

    현재 최신 버전은 1.7.1이다. C에 압축푼다.  그리고 C:/ant1.7.1에 설치한다. 다음으로 환경변수를 등록하는데 시스템 변수로 Path에 C:/ant1.7.1/bin;을 넣어주면 되겠다. 다른 운영체제의 경우는 환경변수 등록하는 방법이 다를 것이다.

     

     

    환경변수 추가 후 다음과 같이 콘솔창 띄우고 ant 명령을 줘본다. build.xml이 없으므로 오류메시지 발생하며 정상적으로 실행된 것이다.

     

     

    2. Flex SDK의 ant/lib 폴더에  flexTasks.jar를 Ant설치 폴더(C:/ant1.7.1)의 lib폴더에 복사한다.

     

    3. build.xml를 구성하여 Flex,ActionScript 3.0로 개발된 것을 콘솔창에서 ant 명령을 이용해 컴파일 및 실행등을 하면 되겠다.

     

    이에 대한 자세한 내용은 ANT관련 서적 및 Using Flex Ant Tasks(Flex 3) 문서를 참고한다.

     

    Flex Builder 3 환경에서 ANT로 개발해보기

    ANT를 이용해 mxmlc, compc, html-wrapper등을 이용하는 방법은 Flex Live docs의 Using Flex Ant Tasks 에 대부분 소개되어 있다. 그리고 Flex 컴파일러인 mxmlc, compc을 사용할 때 옵션은 Using the Flex Compliers문서에 대부분 나와 있다. 이 두 가지만 습득하면 ANT를 이용한 개발 방법은 대략 익히게 된다.

     

    영어가 부족하다면 현 ACC(Adobe Community Champion)인 이만영님이 쓰신 Flex Ant Task를 이용한 자동화 빌드 구축하기 문서를 읽어보자. Flex Builder 2기준으로 만든 문서이긴 하지만 지금도 매우 유용하다.

    Flex Builder에서 ANT를 이용한 개발은 소개한 문서만 익히면 어느 정도 알 수 있다. 중요한 것은 직접 따라 해보는 것이 중요하다.

     

    여기서는 간단하게 Flex Builder 3에서 ANT를 활용하는 방법을 익혀본다.

    개발목표는 여러 개의 위젯을 만들고 그 위젯을 로드하는 테스터 프로그램을 만드는 것이다. ActionScript 3.0 프로젝트로 개발할 것이다. 만들어진 결과물은 왼쪽 그림에서 보여주는 것과 같이 bin폴더에 들어가며 위젯의 경우 bin/widgets에 들어간다. 이러한 조건을 만족하도록 개발하려면 Flex Builder 3의 컴파일 기능만 가지고는 안 된다. 왜냐하면 Flex Builder 3에서 기본적으로 제공하는 컴파일 방식으로는 widgets폴더와 같이 다른 폴더에 들어가도록 만들 수 없기 때문이다. 이 조건 하나만으로도 수동작업을 해야 하는 개발의 어려움이 발생한다. 하지만 ANT를 사용하면 이 문제를 깔끔하게 해결할 수 있게 된다.

     

    아래 예제 소스 다운로드 :  MyWidgets.zip

     

     

    1. ActionScript 3 프로젝트를 만든다.

    프로젝트 명은 MyWidgets 라고 하자.

     

    2. src 폴더에 IWidget, AbstractWidget을 만들자.

    IWidget는 init()함수만 선언한다.

    package
    {
    	/**
    	 * 위젯 인터페이스
    	 */
    	public interface IWidget
    	{
    		/**
    		 * 초기화 함수
    		 */
    		function init():void;
    	}
    }

    그리고 AbstractWidget는 IWidget을 구현하고 Sprite를 확장해서 만든다.

    package
    {
    	import flash.display.Sprite;
    	import flash.display.StageScaleMode;
    	import flash.events.Event;
    
    	/**
    	 * 위젯 추상 클래스
    	 */
    	public class AbstractWidget extends Sprite implements IWidget
    	{
    		/**
    		 * 추상클래스 생성자
    		 */
    		public function AbstractWidget()
    		{
    			super();
    			this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler );
    		}
    
    		/**
    		 * @private
    		 */
    		private function addedToStageHandler( event:Event ):void
    		{
    			this.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler );
    			init();
    		}
    
    		/**
    		 * @inheritDoc
    		 */
    		public function init():void
    		{
    			throw new Error("Override 정의해서 사용가능합니다.");
    		}
    
    	}
    }

     

    3. Widget 3개를 만들자.

    이것은 네모, , 세모의 모양을 가지는 위젯이다. 위젯 이름은 각각 Widget1, Widget2, Widget3로 만든다. 이들 위젯은 모두 AbstractWidget을 확장해서 구현한다. 그리고 IWidget init()함수를 override한 뒤 해당 모양을 그려준다.

     

    package
    {
    	import flash.display.Shape;
    	import flash.events.Event;
    
    	[SWF(width='100', height='100',backgroundColor='#000000')]
    	/**
    	 * Widget1
    	 */
    	public class Widget1 extends AbstractWidget
    	{
    		/**
    		 * 생성자
    		 */
    		public function Widget1()
    		{
    			super();
    		}
    
    		/**
    		 * @inheritDoc
    		 */
    		override public function init():void
    		{
    			var shape:Shape = new Shape;
    			shape.graphics.clear();
    			shape.graphics.lineStyle( 2, 0xff0000, 1 );
    			shape.graphics.beginFill( 0xffffff, 1 );
    			shape.graphics.drawRect( 0, 0, 100, 100 );
    			shape.graphics.endFill();
    			addChild( shape );
    		}
    
    	}
    }

     

    4. MyWidgets에 만든 3개의 위젯을 로드하는 프로그램을 만든다.

    MyWidgets는 일종의 위젯 테스트용이다. IWidget을 구현한 어떤 위젯이든 올릴 수 있다. 인터페이스 IWidget은 다형성을 고려하기 위한 것이다. 동작방식은 단순하다. 숫자 1부터 3까지 키를 누르면 해당 위젯이 Loader를 통해 로드되어 렌더링된다.

     

    package {
    	import flash.display.Loader;
    	import flash.display.Sprite;
    	import flash.display.StageScaleMode;
    	import flash.events.KeyboardEvent;
    	import flash.net.URLRequest;
    	import flash.system.ApplicationDomain;
    	import flash.system.LoaderContext;
    
    	/**
    	 * 위젯 테스터
    	 */
    	public class MyWidgets extends Sprite
    	{
    		private var loader:Loader;
    		private var loadedWidget:IWidget;
    
    		private var widgetList:Array = [ 'Widget1', 'Widget2', 'Widget3' ];
    
    		/**
    		 * 생성자
    		 */
    		public function MyWidgets()
    		{
    			super();
    			stage.scaleMode = StageScaleMode.NO_SCALE;
    			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardEventHandler );
    		}
    
    		/**
    		 * @private
    		 * 키보드로부터 숫자를 받아 해당 위젯을 로드한다.
    		 */
    		private function keyboardEventHandler( event:KeyboardEvent ):void
    		{
    			var widgetNumber:int = event.charCode-48;
    			if( widgetNumber < 0 || widgetNumber > widgetList.length ) return;
    
    			var widgetURL:String = "widgets/" + widgetList[widgetNumber-1] + ".swf";
    			if( loader == null )
    			{
    				loader = new Loader();
    				addChild( loader );
    			}
    
    			var request:URLRequest = new URLRequest( widgetURL );
    			var context:LoaderContext = new LoaderContext( false, new ApplicationDomain( ApplicationDomain.currentDomain ) );
    			loader.load( request, context );
    		}
    	}
    }

     

    5. ANT를 구성한다.

    프로젝트 폴더에 build폴더를 만들고 거기에 build.xml과 build.properties 파일을 만들고 다음과 같이 스크립트를 코딩한다.

     

    아래는 build.properties이다.

    # -----------------------------------------------------------------
    # User-Defined Paths
    #
    # Modify these path values to reflect paths on your system
    # -----------------------------------------------------------------
    
    # The location of the Flex 2 SDK on your sytem.
    flex3sdk.home.dir = C:/Program Files/Adobe/Flex Builder 3/sdks/3.3.0
    flex3sdk.bin.dir = C:/Program Files/Adobe/Flex Builder 3/sdks/3.3.0/bin
    flex3sdk.lib.dir = C:/Program Files/Adobe/Flex Builder 3/sdks/3.3.0/frameworks/libs
    
    # Note that the locale dir uses the {locale} token at the end to specify the directory
    # of language-specific files.  This is replaced by the compiler with the locale defined
    # by the locale property below.
    flex3sdk.locale = en_US
    flex3sdk.locale.dir = C:/Program Files/Adobe/Flex Builder 3/sdks/3.3.0/frameworks/locale/{locale}
    
    asdoc.exe = ${flex3sdk.bin.dir}/asdoc.exe
    compc.exe = ${flex3sdk.bin.dir}/compc.exe
    mxmlc.exe = ${flex3sdk.bin.dir}/mxmlc.exe
    
    # The debug player is necessary here because it writes trace statements to a flashlog.txt
    # file.  This allows us to examine the .txt file and determine the status of unit tests
    # in an automated fashion.
    flashDebugPlayer.exe = C:/Program Files/Adobe/Flex Builder 3/Player/10/win/FlashPlayer.exe
    
    # -----------------------------------------------------------------
    # Project Paths - DO NOT MODIFY
    # -----------------------------------------------------------------
    build.dir = ${basedir}/build
    src.dir = ${basedir}/src
    bin.dir = ${basedir}/bin
    docs.dir = ${basedir}/docs

     

    아래는 build.xml이다.

     

    <?xml version="1.0" encoding="utf-8"?>
    <project name="MyWidgets" basedir="../">
    
    	<!-- 이 build 스크립트에서 사용할 variable 및 path 정의  -->
    	<property file="./build/build.properties" />
    
    	<!-- 해당 properties가 설정 되어 있는가 확인 -->
    	<target name="properties">
    		<fail unless="asdoc.exe">The "asdoc.exe" property must be set in ${build.dir}/build.properties.</fail>
    		<fail unless="compc.exe">The "compc.exe" property must be set in ${build.dir}/build.properties.</fail>
    		<fail unless="mxmlc.exe">The "mxmlc.exe" property must be set in ${build.dir}/build.properties.</fail>
    	</target>	
    
    	<!-- bin 폴더 생성 -->
    	<target name="mkdir bin">
    		<mkdir dir="${bin.dir}"/>
    		<mkdir dir="${bin.dir}/widgets"/>
    	</target>
    
    	<!-- bin 폴더 삭제 -->
        <target name="clean">
            <delete includeEmptyDirs="true">
                <fileset dir="${bin.dir}"/>
            </delete>
        </target>	
    
    	<!-- 모두 컴파일 -->
    	<target name="complie all" depends="complie MyWidgets, complie widget1, complie widget2, complie widget3"/> 
    
    	<!-- 위젯 테스터 컴파일 -->
        <target name="complie MyWidgets" depends="properties,mkdir bin">
    		<exec executable="${mxmlc.exe}" dir="${basedir}">
    			<arg line="'${src.dir}/MyWidgets.as'" />
    			<arg line="-o '${bin.dir}/MyWidgets.swf'" />
    		</exec>
        </target>	
    
    	<!-- 위젯 테스터 실행 -->
    	<target name="run MyWidgets" depends="complie MyWidgets">
    		<exec executable="${flashDebugPlayer.exe}" spawn="yes">
    			<arg line="${bin.dir}/MyWidgets.swf" />
    		</exec>
    	</target>
    
    	<!-- 위젯 1 컴파일 	-->
        <target name="complie widget1" depends="properties,mkdir bin">
    		<exec executable="${mxmlc.exe}" dir="${basedir}">
    			<arg line="'${src.dir}/Widget1.as'" />
    			<arg line="-o '${bin.dir}/widgets/Widget1.swf'" />
    		</exec>
        </target>
    
    	<!-- 위젯 2 컴파일 	-->
        <target name="complie widget2" depends="properties,mkdir bin">
    		<exec executable="${mxmlc.exe}" dir="${basedir}">
    			<arg line="'${src.dir}/Widget2.as'" />
    			<arg line="-o '${bin.dir}/widgets/Widget2.swf'" />
    		</exec>
        </target>
    
    	<!-- 위젯 3 컴파일	-->
        <target name="complie widget3" depends="properties,mkdir bin">
    		<exec executable="${mxmlc.exe}" dir="${basedir}">
    			<arg line="'${src.dir}/Widget3.as'" />
    			<arg line="-o '${bin.dir}/widgets/Widget3.swf'" />
    		</exec>
        </target>
    
    </project>

     

    만들어진 build.xml은 우측 화면과 같이 Ant View에 드래그해서 붙여 넣는다. 이로써 ANT를 이용해 만들어진 ANT 스크립트를 실행할 수 있게 된다.

     

    build.xml은 ANT에서 구동되는 스크립트이다. <project>로 감싸져 있고 <property>와 <target>이 존재한다. <property file="./build/build.properties" />는 build.properties를 로드해서 build.xml에서 사용할 property를 참고하는 역할을 한다. <target>은 하나의 실행단위라고 생각하면 되겠다. <target>은 고유한 name을 가진다. 이 name이 Ant View에 표시되며 표시된 name을 더블클릭하면 <target>에 정의된 코드가 실행되는 것이다.

     

    <target> name이 mkdir bin은 bin 폴더와 bin/widgets 폴더를 생성한다. 여기서 ${bin.dir}은 변수로서 build.properties에 정의했다.

     

    <target> name이 clean인 것은 만들어진 bin폴더와 widgets폴더를 지운다.

     

    <target> name이 complie widget1인 것은 src폴더내에 Widget1.as를 컴파일하여 bin/widgets에 Widget1.swf라는 이름으로 출력하도록 한다. 여기서 Flex SDK에서 제공하는 mxmlc를 사용하게 된다. 어떤 mxmlc를 사용할지는 build.properties에 정의했다.

     

    <target> name이 complie MyWidgets는 src폴더내에 MyWidgets.as를 컴파일해서 bin에 MyWidgets.swf라는 이름으로 출력한다.

     

    <target> name이 complie all은 <target> name이 complie MyWidgets, complie widget1, complie widget2, complie widget3 로된 <target>을 전부 실행한다. 이처럼 target은 depends 옵션을 이용해 다른 target과 묶어서 실행이 가능하다.

     

    <target> name이 run MyWidget은 MyWidget.as를 컴파일한 뒤에 bin/MyWidget.swf를 실행하도록 한다.

     

    이것만 보더라도 ANT를 이용해서 프로젝트를 어떻게 관리할 수 있을지 대략적으로 느껴질 것이다. 이처럼 하나의 프로젝트에서 다양한 애플리케이션을 원하는 경로에 컴파일하여 출력할 수 있고 활용해볼 수 있다. ANT에서는 copy, delete등과 같은 명령어를 지원하므로 이들을 적극 활용하면 프로젝트 관리가 더욱간편해질 수 있다. 게다가 결과물을 FTP 전송, SVN 공유, 다른 프로젝트간에 연동도 아주 쉽게 적용할 수 있다. 지금 예제는 debug 용이 아니지만 원한다면 debug도 할 수 있게 꾸밀 수 있다. 또한 위젯들 간에 중복되는 클래스에 대한 최적화(Optimization) 과정이 들어간다면 더욱 깔끔하지 되지 않을까 생각한다. html-template에 대한 것도 모두 ANT로 개발이 가능하므로 자세한 내용은 Flex Live Docs를 참고하길 바란다.

     

    Flex ANT Task 활용해보기

    지금까지 mxmlc 명령을 구동하기 위해 build.xml에서 <exec>를 이용했다. 이것은 매우 범용적인  방법으로 mxmlc뿐 아니라 어떤 것이든 구동하는데 쓸 수 있다. 그러나 Flex 환경에서 개발할 때 <exec>를 이용해 mxmlc를 구동 하는 것은 복잡한 설정이 들어가는 경우 관리가 힘들어지는 경우가 발생할 수 있다. 다행히 Flex SDK에서는 더욱 간편하게 mxmlc를 사용할 수 있는 기능 제공하고 있다. Flex SDK에 보면 아래 그림과 같이 ant폴더가 존재하는 것을 확인할 수 있다. ant폴더에는 Flex전용 ANT 환경을 구성해주는 Flex ANT Task가 존재한다. 소스가 공개되어 있어서 ant/src에는 Java로 만들어진 소스가 있고 ant/lib에는 flexTasks.jar가 있어 ANT구성시 이 JAR를 활용하여 Flex 전용 ANT 환경을 구성할 수 있다.

     

     

    기존 build.xml에서 <properties file=./build/build/properties/> 아래에 다음 코드와 같이 <taskdef>을 추가한다. 이 부분은 Flex SDK에 있는 flexTasks.jar를 활용해 <exec> 대신 <mxmlc>, <compc> 형태로 사용할 수 있도록 한다. <target> name compile MyWidgets인 부분을 찾아 <exec>부분을 주석처리하고 대신 <mxmlc>을 삽입한다.

     

    <?xml version="1.0" encoding="utf-8"?>
    <project name="MyWidgets" basedir="../">
    
    	<!-- 이 build 스크립트에서 사용할 variable 및 path 정의  -->
    	<property file="./build/build.properties" />
    
    	<!-- Flex ANT Task 사용 -->
    	<taskdef resource="flexTasks.tasks" classpath="${flex3sdk.home.dir}/ant/lib/flexTasks.jar"/>
    	<property name="FLEX_HOME" value="${flex3sdk.home.dir}"/>
    
    	..... (생략) ....
    
    	<!-- 위젯 테스터 컴파일 -->
        <target name="complie MyWidgets" depends="properties,mkdir bin">
            <mxmlc
                file="${src.dir}/MyWidgets.as"
                output="${bin.dir}/MyWidgets.swf"
            >
            	<!-- Get default compiler options. -->
            	<load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
    
            	<!-- List of path elements that form the roots of ActionScript
            	class hierarchies. -->
    			<source-path path-element="${FLEX_HOME}/frameworks"/>        
    
                <!-- List of SWC files or directories that contain SWC files. -->
                <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
                    <include name="libs" />
                    <include name="../bundles/{locale}" />
                </compiler.library-path>
    
                <!-- Set size of output SWF file. -->
                <default-size width="500" height="600" />
            </mxmlc>
        	<!--
    		<exec executable="${mxmlc.exe}" dir="${basedir}">
    			<arg line="'${src.dir}/MyWidgets.as'" />
    			<arg line="-o '${bin.dir}/MyWidgets.swf'" />
    		</exec>
    		-->
        </target>	
    
    	..... (생략) ....
    
    </project>

     

    위 코드에서<taskdef> 아래에 <property>로 FLEX_NAME을 정의했는데 이것을 정의하지 않으면 <mxmlc>가 제대로 동작하지 않는다.

     

    <mxmlc> 내부에 들어간 <load-config>, <compiler.library-path>, <default-size>등은 <mxmlc>를 구동하기 위한 설정들이다. 사실 이 프로젝트에서는 이러한 설정이 필요없다. 왜냐하면 <mxmlc>가 이러한 기본 설정을 내부적으로 대신 해주기 때문이다. 만약 설정에 변동사항이 존재한다면 이 설정들을 추가해서 수정하면 된다. 이외에도 많은 설정 옵션들이 있는데 자세한 내용은 Using Flex Ant TaskUsing the Flex Complier를 참고한다.

     

    ANT를 이용해 ASDoc 만들어 보기

    build.xml에 아래 코드를 추가하고 실행해보자.

     

    <!-- ASDoc 만들기 -->
    <target name="asdoc">
    	<!-- Clean out the contents of the doc directory, without delete "docs" -->
    	<!--
    	<delete includeemptydirs="true">
    		<fileset dir="${docs.dir}" includes="**/*" />
    	</delete>
    	-->
    	<mkdir dir="${docs.dir}"/>
    
    	<exec executable="${asdoc.exe}" spawn="no">
    		<!-- Place the documentation in the "docs" directory -->
    		<arg line="-o ${docs.dir}" />
    
    		<!-- Specify the main source path as "src" -->
    		<arg line="-sp ${src.dir}" />
    
    		<!-- Document all of the classes in the "src" tree -->
    		<arg line="-ds ${src.dir} " />
    
    		<!-- Include the library name in the window title -->
    		<arg line="-window-title 'ANT Widget Test' "/>
    	</exec>
    </target>

     

    프로젝트내에 doc폴더가 생기고 그 안에 아래와 같이 Asdoc를 만들어진 문서를 볼 수 있을 것이다.

     

     

    ANT를 이용하면 build.xml 문서 하나만 가지고 얼마나 많은 일을 한번에 처리할 수 있는가 알 수 있다.

     

     

    Ant Contrib Task를 이용하여 반복 작업 줄이기

    지금까지 만들어본 build.xml을 자세히 살펴보면 반복되는 작업이 있다는 것을 발견할 수 있다.  <target>의 name이 compile MyWidgets, compile widget1, compile widget2, compile widget3가 그것이다. 이들 <target>은 동일하게 mxmlc를 구동하면서 설정값도 동일하다. 이런 경우에는 하나의 <target name="compile">로 묶어주고 컴파일 대상을 번갈아가면서 <target name="compile">를 구동하게 하면 build.xml이 훨씬 간단해질 것이다. 하지만 기본 ANT와 Flex ANT Task만으로는 이런 작업이 불가능하다.

    반복되는 <target>코드를 단순화 시키기 위해 주로 사용하는 것이 Ant Contrib Task이다. 이것도 Flex ANT Task와 마찬가지로 <taskdef>로 정의하여 사용할 수 있다. Ant Contrib Task는 http://ant-contrib.sourceforge.net/ 에서 제공하고 있다. 받아야하는 것은 ant-contrib-1.0b3.jar이다.

    편의를 위해 아래와 같이 build에 복사해 두었다.

     

     

    build.xml을 다음과 같이 수정한다.

     

    <?xml version="1.0" encoding="utf-8"?>
    <project name="MyWidgets" basedir="../">
    	<!-- 이 build 스크립트에서 사용할 variable 및 path 정의  -->
    	<property file="./build/build.properties" />
    
    	<!-- Ant contrib 1.0b3를 사용한다 -->
    	<taskdef resource="net/sf/antcontrib/antcontrib.properties">
    		<classpath>
    			<pathelement location="${build.dir}/ant-contrib/ant-contrib-1.0b3.jar"/>
    		</classpath>
    	</taskdef>		
    
    	<!-- 해당 properties가 설정 되어 있는가 확인 -->
    	<target name="properties">
    		<fail unless="asdoc.exe">The "asdoc.exe" property must be set in ${build.dir}/build.properties.</fail>
    		<fail unless="compc.exe">The "compc.exe" property must be set in ${build.dir}/build.properties.</fail>
    		<fail unless="mxmlc.exe">The "mxmlc.exe" property must be set in ${build.dir}/build.properties.</fail>
    	</target>	
    
    	<!-- bin 폴더 생성 -->
    	<target name="mkdir bin">
    		<mkdir dir="${bin.dir}"/>
    		<mkdir dir="${bin.dir}/widgets"/>
    	</target>
    
    	<!-- bin 폴더 삭제 -->
        <target name="clean">
            <delete includeEmptyDirs="true">
                <fileset dir="${bin.dir}"/>
            </delete>
        </target>	
    
    	<!-- 모두 컴파일 -->
    	<property name="compile_target_list" value="MyWidgets,Widget1,Widget2,Widget3" />
        <target name="compile all" depends="properties,mkdir bin">
            <foreach
                list="${compile_target_list}"
                param="compile_target"
                target="compile" />
        </target>
    
    	<!-- 컴파일(단독구동 불가) -->
        <target name="compile">
        	<echo message="${compile_target}" />
    		<exec executable="${mxmlc.exe}" dir="${basedir}">
    			<arg line="'${src.dir}/${compile_target}.as'" />
    			<arg line="-o '${bin.dir}/${compile_target}.swf'" />
    		</exec>
        </target>	
    
    	<!-- 위젯 테스터 실행 -->
    	<target name="run MyWidgets">
    		<exec executable="${flashDebugPlayer.exe}" spawn="yes">
    			<arg line="${bin.dir}/MyWidgets.swf" />
    		</exec>
    	</target>
    
    </project>

     

    위 코드에서 <taskdef resource="net/sf/antcontrib/antcontrib.properties">부분은 Ant Contrib Task를 정의하는 부분이다. 기존 <target name="complie ...">과 같은 형태의 <target>은 모두 삭제하고 <target name="compile all">과 <target name="compile">를 만들었다. <target name="compile all">에 <foreach>를 이용해 반복하면서 MyWidgets,Widget1,Widget2,Widget3를 <target name="compile">에 대입해 구동하도록 짜여져 있다. 여기서 <foreach>는 Ant Contrib Task에서 지원하는 속성이다. 나중에 Widget4, Widget5, Widget6… 을 제작하는 일이 생기더라도 <property name="compile_target_list">value에만 추가하면 되기 때문에 작업이 훨씬 깔끔해졌다.

     

    기존처럼 한개씩 컴파일하고 싶다면 build.xml에 다음 코드를 추가하면 되겠다.

     

    <!-- MyWidgets 컴파일 -->
    <target name="compile MyWidgets">
    	<foreach list="MyWidgets" param="compile_target" target="compile" />
    </target>	
    
    <!-- widget1 컴파일 -->
    <target name="compile widget1">
    	<foreach list="Widget1" param="compile_target" target="compile" />
    </target>	
    
    <!-- widget2 컴파일 -->
    <target name="compile widget2">
    	<foreach list="Widget2" param="compile_target" target="compile" />
    </target>	
    
    <!-- widget3 컴파일 -->
    <target name="compile widget3">
    	<foreach list="Widget3" param="compile_target" target="compile" />
    </target>

     

    <target name="compile">를 그대로 사용하면서 한개씩 컴파일할 수 있도록 <foreach>를 그대로 사용했다.

    Ant Contrib Task <foreach>외에도 <if>, <switch>등 유용한 것이 더 있다. 이에 대해서는 Ant Contrib Task 메뉴얼을 참고한다.

     

    이렇게 기존 ANT를 보완하는 Ant Contrib Task를 사용함으로써 build.xml을 더욱 깔끔하게 만들 수 있게 되었다.


    정리하기

    지금까지 Flex Builder 3에서 ANT를 활용하는 방법에 대해서 간단한 예제를 통해 살펴보았다.  AS3 프로젝트가 아닌 라이브러리 프로젝트나 Flex프로젝트등에도 ANT가 매우 유용하게 쓰여질 수 있다는 것을 충분히 이해했다면 이 글의 목표를 달성한 것이라 생각한다.

     

    Flex ANT를 최고의 학습 방법은 경험이다. 스스로 해당 자료를 찾아 직접해보는 것이 가장 중요하다.

    Google Code Open Source Flex 프로젝트들이 꽤 있는데 SVN으로 Flex Builder에 등록해서 사용하다 보면 때때로 ANT를 사용한 소스를 접해볼 수 있다.  Flex ANT가 아니라 일반 ANT긴 하지만 as3corelib as3flexunitlib등이 그 예가 아닐까 생각한다.

     

    실제로 실전 프로젝트에서 ANT는 매우 유용하다. 익혀두고 적절히 활용하면 몸과 마음이 편해지는 좋은 기술이겠다.

     

    관련글

     

     

    + Recent posts