admin write
blogblogblogbloglocation loglocation logtag listtag listguest bookguest book
rss feed

회사에서 이번 프로젝트 하나를 제목과 같은 환경으로 하여 개발을 하였는데

문제가 아주 상당수 나왔습니다.

기본적으로 Flex4.1 ~ 4.5대의 SDK에서의 Spark 는 디자인의 한계를 극복하는등의

장점도 다수 있으나 기존 mx 컴포넌트를 100%모두 커버할수 있을정도로 SDK자체가 개발되지 않았고

모든 컴포넌트또한 완벽히 대채가 되지 않더군요

프로젝트를 하면서 계속하여 이슈가 발생하였고 그때마다 특정한 규칙을 두고 문제를 회피하는

방법으로 하였는데 결과적으로는 썩 만족스럽지가 않네요

새로 개발될 Flex 5 에서도 이런식이면 빨리 Flex 는 접고 HTML5 로 넘어가는게

몇년후를 생각하면 좋을지도 모르겠습니다.

대충 생각나는데로 크게 Issue가 되었던 몇가지를 포스트 해볼까 합니다.


1. mx:RadioButtonGroup
RadoButtion 태그는 Spark에서 지원을 해주고 있습니다. 하지만 Spark의 RadioButton 을 사용시
그룹핑기능이 아예 빠져있기때문에 mx:RadioButtonGroup 이 하던일을 손수 코딩하여야 하는 번거로움이 있습니다. 실제로 제 경우 RadioButton 이 수십개에 달하는 페이지가 있었는데
Spark의 RadioButton을 이용 RadioButtonGroup 이 동작하지 않는것을 보고 일일이 Event를 걸어야 하나 하다가 결국 mx:RadioButton 으로 모두 변경하고 RadioButtonGroup 이벤트 몇개만으로 해결을 보았습니다. ㅠ

2. PopupManager
기존 Flex 3.5에서 개발했던 모듈과 컴포넌트를 그대로 약간에 수정을 거쳐 사용하고 있었는데
팝업되는부분들이 모두 깨져나오는 현상이 발생했습니다.
구글링을 해보니 createPopUp 시 parent의 moduleFactory 를 넘겨주어야 한다고 하네요
버그는 아니고 기존 Flex 3.x 에서 Spark로 넘어오면서 StyleManager의 형태변화로 인한것이라고 하는데요. 자세한것은 제가 머리가 좋지못해 구글링을 통해 참고를;;

3. Module - PopupManager
Module 을 이용하여 페이지를 구성시에 해당 모듈에서 Popup을 이용했을때
Popup의 create와 동시에 배경의 Style이 깨지는 문제가 있었는데요
이게 거의 모든 컴포넌트에서 동시다발적으로 발생하는 현상이더군요 ㅠ
이문제때문에 굉장히 괴로운나날을 보내야 했는데
구글링을 통한 레퍼런스조차도 너무 부족해서 해결다운 해결은 보지 못했습니다.
일단 배경의 깨짐이 발생할때의 문제는
AdvancedDataGrid 의 외각 테두리가 사라집니다. ㅠ
ColumeChart에서 LineSeries 를 혼용하여 사용시 ColumnChart의 DataProvider가 깨집니다.
(데이터는 존재하지만 화면의 그래프가 모두 바닥을 치더군요.. 아무리 디버깅해보아도 데이터는 분명히 있는데 ㅠ)
등등...
그냥 그때그때 깨졌을때의 모양을 어떻게든 복구하는 형태로 고치긴 하였습니다만 원천적인 해결방법은 아니구요 정말 사람 질리게 하더군요...

4. Chart의 LabelRenderer (AxisLabel) 메모리 누수
이것 역시 구글링을 해보면 굉장히 많은 Issue 제기가 되고있었는데 뚜렷한 해결방법이 보이질 않더군요... Chart를 지우고 차트의 child를 모두 찾아 널처리를 해보고 removeChild 도 하고
labelRenderer 지정역시 널처리를 해보고 별짓 다해보았습니다만
절대 사라지지 않는 인스턴스들... 
이런것들 보면 차라리 Flex SDK 3.x 대가 훨씬 코딩하기엔 안전성이 좋지않았나 생각해봅니다.
 
5. IE9에서의 Flash player 메모리 누수
IE9의 문제라고 보는게 더 맞을듯 합니다.
IE6, FF, IE7, IE9 에서 테스트와 개발을 하고있는데
IE9 에서만 발생하더군요.. 뭐 곧 업데이트나 픽스가 나오겠지만..


대충 생각나는것들만 이정도네요
Flex프로젝트를 할때 SDK 4~5 사이의 SDK에서 혼용방식은 절대 사용하지 마시길...

Flex4부터 SDK의 대부분의 컴포넌트들이 많이 소스형태로 나와있는데요
예전 포스팅했던 AsyncCollection 이라던가 많은 기능들은 기존 3.5 SDK버젼에 대채하여 사용하는것도 괜찮을듯합니다. 테스트해보고 문제만 없다면...