2009년 4월 27일 월요일

Enterprise Adobe Flex 집필 하고 있습니다.

Flex와 LCDS와 관련된 책을 집필하고 있습니다.

제목과 내용은 아직 확정적이진 않지만 아래와 같이 구성 할 예정입니다.


Adobe Flex & LiveCycle Data Service & Open Source Framework

Enterprise Adobe Flex 개발

Adobe Flex LiveCycle Data Service J2EE


목차



I. Adobe Flex

1. Adobe Flex란 무엇인가?

2. SI 개발자의 입장에서 바라본 Flex LCDS 그리고 J2EE

3. Getting Started with Flex

II. Enterprise Flex Architecture

1. 어플리케이션 개발 시 고려 사항

1.1 어플리케이션 설계

1.2 프로젝트 환경 설정

1.3 빌드 환경 설정

1.4 어플리케이션 배포

1.5 보안 환경 설정

1.6 Flex SDK를 통한 어플리케이션 개발

2. Flex 어플리케이션의 물리적 환경 설정

2.1 설치 디렉토리 구조 설정

2.2 개발 디렉토리 구조 설정

2.3 Flex 어플리케이션 컴파일

2.4 Flex 어플리케이션 배포 환경

3. 보안

3.1 Flex 보안 모델 소개

3.2 J2EE authentication을 이용한 보안 모델 적용

3.3 보안을 적용하는 Flex 어플리케이션 코드 짜기

3.3.1 보안을 강화한 MXML 태그 구성

3.3.2 viewSourceURL 사용금지

3.3.3 SWF 파일에서 민감한 정보의 제거

3.3.4 입력 데이터 검증

3.3.5 ActionScript 코드의 보안 강화

3.3.6 암호 사용

3.3.7 SharedObject 클래스를 활용한 데이터 저장

3.4 SSL의 사용

3.5 RPC 서비스의 보안

3.6 클라이언트 보안 설정

3.6.1 mm.cfg 파일

3.6.2 mms.cfg 파일

3.6.3 FlashPlayerTrust 파일

3.6.4 Setting Manager 사용

III. LiveCycle Data Service ES 소개

1. LCDS의 기능

2. LCDS 설치

3. LCDS를 이용한 Flex 어플리케이션 생성

4. 서버측 컴파일 프로세스 이행

5. LCDS의 구성요소

5.1 LCDS with J2EE

5.2 Remoting 서비스

5.3 Message 서비스

5.4 Data Management 서비스

6. 프록시 서비스

7. BlazeDS 사용

IV. LiveCycle Data Service와 서버 데이터 통합

1. Remoting 서비스를 이용해 Java 클래스 사용

1.1 Remoting 서비스에 대한 이해

1.2 RPC 이벤트 처리

1.3 다중 메소드 호출

1.4 ActionScriptJava의 데이터 교환

1.5 서버측 예외 처리

1.6 런타임 Remoting 서비스 설정

2. 클라이언트의 데이터 관리

2.1 ActionScript Collection 객체 이해

2.2 클라이언트의 데이터 필터링

2.3 클라이언트의 데이터 정렬

2.4 IViewCursor 인터페이스 사용

3. Data Management 서비스 사용

3.1 Flex Data Management 서비스 이해

3.2 Data Management 서비스 아키텍쳐

3.3 데이터의 변경

3.4 데이터의 지연 변경

3.5 Data Management 서비스 이벤트

3.6 Data Management 서비스의 부가 기능

4. E4X를 사용한 XML 데이터 처리

4.1 XML 구문 이해

4.2 ActionScript 3에서 XML 데이터 사용

4.3 E4X 구문 사용

4.4 Tree 컨트롤 사용

4.5 E4X 구문을 통한 검색

4.6 XML의 구성요소 제거

5. 파일 업로드

5.1 파일 전송 시스템 이해

5.2 파일 업로드 컴포넌트 구현

V. Flex & Java

1. Java 개발자를 위한 Flex 코딩

1.1 Java to Flex

1.2 Object-Oriented ActionScript

1.3 인터페이스와 다형성을 통한 프로그램 설계

1.4 인터페이스가 없는 상속

1.5 Flex JSP

1.6 JSP와 데이터 통신

2. 디자인 패턴의 적용과 활용

2.1 PureMVC 사용

2.2 Cairngorm 사용

2.3 프레임웍 사용의 장점과 단점

3. MVC 프레임워크를 사용한 CRUD 컴포넌트 제작

4. Flex Spring 프레임워크 통합

VI. 대규모 프로젝트를 위한 작업과 어플리케이션 성능 향상

1. 대규모 Flex 어플리케이션 개발 시 주의 사항

2. Modular 어플리케이션 개발

2.1 Modular 어플리케이션 정의

2.2 모듈 개발

2.3 모듈 컴파일

2.4 모듈의 로딩과 언로딩

2.5 ModuleLoader 이벤트 사용

2.6 데이터 전달

3. Sub 어플리케이션 개발

4. Flex 어플리케이션 최적화

4.1 클라이언트 어플리케이션 성능 증가

4.1.1 일반적인 성능 향상 방법

4.1.2 성능 검증

4.1.3 클라이언트 환경 설정

4.1.4 SWF 파일 사이즈 감소

4.1.5 여러 개의 SWF 파일 사용

4.1.6 어플리케이션 코딩

4.2 차트 컴포넌트의 성능 증가

4.2.1 Series 데이터의 필터링 방지

4.2.2 LinearAxis 객체 코딩

4.2.3 CategoryAxis 객체 코딩

4.2.4 AxisRenderer 객체 스타일 설정

4.2.5 Gutter 스타일 명시

4.2.6 Drop shadow 사용


5. 어플리케이션 실행 속도 향상

6.1 어플리케이션 성능과 실행 순서

6.2 지연된 객체 생성 및 사용

6.2.1 creationPolicy 속성 이행

6.2.2 createComponentsFromDescriptors 메소드 사용

6.2.3 childDescriptor 속성 사용

6.2.4 컴포넌트 제거

6.3 객체 생성 순서 정의

6.3.1 컨테이너 큐 생성

6.3.2 컨테이너 큐 우선순위 설정

6.3.3 컨테이너의 동적인 추가

6.3.4 다른 creationPolicy 설정에 컨테이너 통합

6.4 callLater() 메소드 사용

6. 런타임 공유 라이브러리 사용

6.1 RSLs 소개

6.2 일반 RSLs cross-domain RSLs

6.3 Framework RSLs의 사용

7. 효과적인 어플리케이션 설계 및 개발

7.1 효과적인 컨테이너 사용

7.2 Bindable 태그와 명시적인 바인딩

7.3 Array ArrayCollection

7.4 지연된 로딩 기법 사용

8. RPC 성능 향상(http://www.adobe.com/devnet/flex/articles/rpc_performance_05.html)

8.1 RIA 어플리케이션의 성능과 일반적인 웹 어플리케이션의 성능

8.2 클라이언트-서버 통신 성능 확인

8.3 대용량 request

8.4 대용량 response

8.5 빈번한 네트워크 호출

8.6 실패한 request 처리

VII. Flex 어플리케이션을 개발시 필요 구성 요소

1. Flex SDK 설정

1.1 SDK 설정 파일 속성

1.2 SDK 설정

1.3 Flash Player 설정

2. Flex 컴파일러

2.1 Flex Compiler의 종류

2.1.1 어플리케이션 컴파일러

2.1.2 컴포넌트 컴파일러

2.2 Command-line 컴파일러

2.2.1 command-line 컴파일러 옵션

2.2.2 옵션 이름을 통한 컴파일

2.2.3 Java command-line 컴파일러와의 통합

2.3 설정파일을 사용한 컴파일

2.3.1 설정 파일의 위치

2.3.2 설정 파일 속성 설정

2.4 컴파일러 설정 파일 우선순위

2.5 mxmlc를 이용해 어플리케이션 컴파일

2.6 compc를 이용해 컴포넌트 컴파일

2.7 에러와 경고 처리

2.8 SWC 파일 생성

2.8.1 SWC 파일 배포

2.8.2 SWC의 컴포넌트 사용

2.9 manifest 파일 설정

3. Flex Ant 사용

3.1 Ant 설치

3.2 Ant task 사용

3.3 mxmlc 작업

3.4 comp 작업

3.5 html-wrapper 작업

4. Log

4.1 Flex의 로그 정보

4.2 디버깅 Flash Player의 사용

4.3 클라이언트측 로그와 디버깅

4.4 컴파일러 로그

5. 버전 관리

5.1 여러 버전의 SDK 사용

5.2 하위 호환성 확보

5.3 Flash Player의 버전 관리

6. 메모리 사용과 확장성 검증

6.1 Flex 프로파일러

6.2 메모리 사용률 확인

6.3 부하 테스트

6.4 접근성 검증

VIII. Flex 어플리케이션의 배포

1. 어플리케이션의 배포와 설정

2. 배포를 위한 컴파일

2.1 Flex Builder에서 배포 버전을 위한 컴파일

2.2 accessible 속성 설정

2.3 소스 보기 방지

2.4 incremental 컴파일 설정

2.5 headless-server 속성 설정

3. 배포를 위한 확인 목록

3.1 어플리케이션 구성요소

3.2 네트워크 접속 종류

3.3 Step 1. 서버측 리소스 목록 생성

3.4 Step 2. 방화벽 내 서버간의 접근 검증

3.5 Step 3. 방화벽 밖에서 서버로의 접근 검증

3.6 Step 4. 프록시 서버 설정

3.7 Step 5. crossdomain 정책 파일 생성

IX. 실습 환경 설정

X. 인덱스

2009년 4월 26일 일요일

LCDS 강의 [1] Adobe LiveCycle Data Service ES 소개

이번 장에서는 Adobe LiveCycle Data Service ES를 통해 J2EE의 서비스를 사용하는 방법을 확인해 본다.

이번 장을 통해
  • LCDS가 제공하는 기능에 대한 이해
  • LCDS를 사용하는 Flex 어플리케이션 제작
  • LCDS의 구조 이해
  • LCDS의 오픈소스 버전인 BlazeDS 사용


1장 목차

1-1. LiveCycle Data Service ES 소개
1-2. LCDS 설치
1-3. LCDS를 이용하는 Flex 어플리케이션 개발
1-4. 컴파일 프로세스에 대한 이해
1-5. LCDS의 기능들
1-6. Proxy 서비스
1-7. BlazeDS에 대한 이해




1-1. LiveCycle Data Service ES 소개

Adobe의 LCDS는 Flex 프레임워크에서 사용되는 원격지(서버측)의 데이터 호출과 동기화 등의 데이터 관리 기능을 제공한다.


[그림1: Flex & LiveCycle Data Service Application Architecture]


LCDS의 기능 소개
  • Remoting 서비스 - 서버측에 있는 Java 클래스에 대한 호출을 하여 Flex 어플리케이션에서 사용
  • Message 서비스 - 실시간 채팅과 협업 어플리케이션을 만들 수 있는 기능을 제공
  • Data Management 서비스 - Flex 어플리케이션이나 다른 웹 어플리케이션과의 실시간 데이터 동기화 기능을 지원
  • Proxy 서비스 - Flash 플랫폼에서 원격지 데이터 호출을 할 때 사용하는 cross-domain 대신 서버 기반의 프록시 보안정책을 지원

LCDS와 J2EE 서버

  • LCDS는 J2EE 서버에서 동작한다.

  • LCDS가 동작가능한 서버는 아래와 같다.

    • JRrun 4
    • Apache Tomcat
    • BEA WebLogic
    • IBM WebSphere
    • JBoss
    • Oracle Containers for J2EE
    • SAP NetWeaver

1-2. LCDS 설치

LCDS의 설치시에 두 종류의 설치 옵션을 확인 할 수 있다.
  • LiveCycle Data Service with integrated JRun(or Tomcat)
  • LiveCycle Data Service J2EE web application
  • 개발이나 테스트 환경일 경우 어떤 옵션을 선택해도 상관없다.
  • 실제 운영 환경일 경우 J2EE web application 모드를 선택해, 운영환경에 있는 서버에 설치할 .war 파일을 생성한다.
  • 두 옵션 모드 flex.war 라고 되어있는 압축 파일을 생성한다.

flex.war 파일을 통한 LCDS 설치

  • 각 J2EE 서버마다 .war 파일을 배포하는 방식이 다르므로, 각 서버의 일반적인 .war 파일 배포 방식을 참고하여 flex.war를 배포한다.
  • LiveCycle Data Service with integrated JRun(or Tomcat) 모드로 설치 했을 경우 Jrun 서버나 Tomcat 서버가 함께 설치되고 flex.war 파일도 함께 배포 되어 있다. (context root 명이 flex로 되어있다.)

LCDS의 디렉토리 구조

  • LCDS의 기본 디렉토리 구조는 표준 J2EE 웹 어플리케이션의 구조와 동일하다.
  • Flex 어플리케이션의 기본 경로는 J2EE 환경에서 context root로 알려져 있는 곳과 동일하다
  • context root 디렉토리는 WEB-INF라는 하위 디렉토리를 포함하고, 이 디렉토리는 J2EE 웹 어플리케이션이 동작하는데 필요한 여러 디렉토리들과 설정 파일들을 포함한다.

파일/디렉토리
설명
web.xml Flex 클라이언트 어플리케이션의 요청 처리를 위한 명령문을 포함
/flex
LCDS가 제공하는 서비스를 처리하기 위한 라이브러리와 설정 파일을 포함
/classes LCDS가 런타임시에 사용할 Java 클래스들이 위치
/lib LCDS가 런타임시에 사용할 jar 파일들이 위치

[테이블 1: WEB-INF 디렉토리의 파일과 하위 디렉토리 설명]



오늘 부터 Live Cycle Data Service에 대한 글을 올립니다.

오늘부터 Adobe LiveCycle Data Service 완전 정복에 대한
강의를 올립니다.

LCDS를 사용할때 참고 하는 한글 문서로 활용되었으면 좋겠습니다.
초보들도 쉽게 따라 할 수 있도록, 가장 기본적인 설명 부터 진행합니다.
(전체적인 내용은 Adobe 공인 과정을 기준으로 진행합니다.)

전체적인 목차는 아래와 같습니다.


1. LiveCycle Data Service ES 소개
2. Remote Object를 이용한 Java Class 사용
3. WebService를 활용한 Data 관리
4. Client Data 관리
5. Message Service
6. Data Management Service
7. E4X를 통한 XML 사용
8. Uploading File


이틀에 한 챕터 정도 생각하고 있습니다.
저에게 Adobe Flex 공인 과정을 들으셨던 분들이라면
복습차원에서 리마인드 하실 수 있을것 같습니다.

2008년 8월 5일 화요일

Adobe FLEX 3 실전 트레이닝북


드디어 Adobe Flex 3 Training from the Source를 번역 완료했다. 기나긴 기간동안 정신적인 압박을 주던 녀석이 없어지니 허전하기도 하고 통괘하기도 하다...

마치 프로젝트를 끝낸것 처럼....

Flex 공부하는 학생이나 실무자들에게 실습 위주의 과정으로 수월하게 Flex 사이트를 만드는 방법을 알려준다.

요즘들어 Flex를 Flex 본연의 목적에 맞지 않게 사용하는 사이트가 너무 많아졌다. 업무형 어플리케이션 개발자라면 Flex를 Flex 본연의 취지에 맞게 써야한다고 늘 생각해왔는데, 이 책에서는 Adobe가 제공해주는 가이드라인에 충실하게 사이트를 만드는 방법을 제공한다. Flex는 컴포넌트로 RIA 개발을 도와주는 프레임워크지 Flash 와 같은 저작툴이 절대 아니다. 빠른 개발, 쉬운 유지보수, 성능, UI 퀄리티 등을 적절하게 조정해야 하는데 이 책에서 설명하는 방식만으로도 충분히 업무 어플리케이션에 RIA를 도입할 수 있게 해줄 것이다. 가장 아쉬운 부분은 원서에 비즈니스 데이터를 XML, Web Service, Remote Object를 사용했는데, Remote Object의 원시 데이터가 ColdFusion에서 만들어진다. 주어진 시간이 조금만 더 있었다면 모든 데이터를 Java 형식으로 바꾸고 싶었는데 이미 인터넷에 많은 사례가 나와있으니 참고하면 될 것이다.

그리고 이번 경험을 발판으로 Flex 3.2 버전이 나오면 Flex & Java 책을 준비할 예정이다. Flex UI를 잘 다루는 Flex 개발자는 이제 제법 많다. 하지만 서버측의 프레임웍과 Flex를 프로젝트 상황에 맞게 통합할 수 있는 Flex 개발자는 한국에 아직 별로 없다.
일단 미리 질러놓고 보는거지만....내년 초에 출간할 Flex & Java에는 대한민국 SI의 상황에 맞게 Flex를 사용하는 방법을 꼭 넣을테니 많은 분들이 관심을 가져주시면 좋겠다. 내 기준으로 봤을때, 부질없는 UI 컴포넌트를 이쁘게 확장하는 그런 내용이 아닌...어떻게 하면 생산성을 높일 수 있고, 자동화 할 수 있고, 데이터 관리를 잘하고, 퍼포먼스를 올릴 수 있을지..뭐 그런 내용을 구상 중이고 Java 개발자들이 책을 읽고 RIA 솔루션으로 Flex를 바로 도입할 수 있도록 도와주는 책을 만들고 싶다.

마지막으로 이 책은 강의용이나 스터디 용으로 사용하기에 너무나도 적절하다. Flex라는 프레임웍은 SI 개발시에 웹단의 UI 개발생산성과 아키텍처를 획기적으로 유연하게 만들 수 있는 유일한 도구이다. 이 책을 학습한 후 그러한 훌륭한 도구를 변형해서 사용하는 우를 범하지 말고, 최고의 생산성과 편리성을 제공해주는 RIA 도구로 활용했으면 좋겠다.

2008년 8월 4일 월요일

The Lighter Side of Code » Blog Archive » Four Firefox plugins that you must have

자바스크립트를 다루는 웹 개발을 하면
디버깅 때문에 짜증나는 일이 정말 많다.
httpwatch를 이용해 데이타 확인을 할 수 있지만
firefox 플러그인을 이용해 브라우저 기반의 디버깅 환경을 구축하면
더 편리하다.
개발자의 능력은...알고리즘/자료구조 + 디버깅 능력이다라고 생각하기 때문에
디버거를 얼마나 잘 다루느냐 따라 어플리케이션을 더 확실하게 이해할 수 있다고 생각한다.



The Lighter Side of Code » Blog Archive » Four Firefox plugins that you must have

AdvancED Flex Application Development offers a unique perspective - Zeus Labs

Flex 과련 서적이 많지만...
제대로 만들어진 책은 별로 없다...
AdvanceED의 Flex 서적은 하나의 프레임웍을 만들어가는 과정을 설명한다.

AdvancED Flex Application Development offers a unique perspective - Zeus Labs

Newtriks Flex + Flash Development » Blog Archive » Garbage Collection in a MultiCore Modular Pipes Application

PureMVC의 환경에서 멀티코어 모듈러 기능을 이용한 Garbage Collection에 대한 분석

Newtriks Flex + Flash Development » Blog Archive » Garbage Collection in a MultiCore Modular Pipes Application


결론은 100% 잘 동작하지는 않는다....
그리고 Flash Player 10에서 잘 알려진 메모리 문제를 해결하겠다는...내용이 언급...
제기랄...메모리 문제는 언제 해결되는걸까?..