'ActionScript 3.0'에 해당되는 글 22건
2009.10.30 10:52
오랫만에 블로그 유입경로를 보다가 코리아몽키라는 분의 블로그를 알게 되었습니다.  [Actionscript 3.0] 간단하게 만들어 본 XML to arrayColection 함수 라는 글에서 제 글을 인용하셨더라구요. ;) 위의 글 말미에 코리아몽키님이 가진 의문이 있으셔서 덧글을 달다가 덧글이 좀 길어질 듯 하여, 간만에 포스팅을 하려고 합니다. ;)

'왜 XML을 Object로 파싱하여 그 데이터를 처리하고 이용하는 방법에 대해서 정리된 자료가 없는 것인가?' 라는 의문은 다른 각도로 접근해봐야 할 것 같습니다. '왜 방법이 없는가'에서 'XML을 Object로 파싱하지 않고 사용할 방법이 있는가?' 라는 것으로 말이죠. 단도직입적으로 말씀드리자면, XML 을 받은 것을 Object 로 변환해야할 필요성이 크지 않다는 것입니다(꼭 필요한 경우도 있겠습니다만). 게다가 XML 그대로 사용하는 것도 가능하고 HTTPService를 이용하면 XML을 Object로 변환 한 결과를 바로 받을 수도 있기 때문입니다.

그럼 먼저 HTTPService 를 이용하여 다양한 형태로 결과를 받는 방법에 대해서 알아보겠습니다.

HTTPService 의 resultFormat
HTTPService에는 resultFormat 이라는 속성이 존재합니다. 이는 HTTP를 호출하여 받은 결과값을 어떤 식으로 파싱할 것인지에 대해서 설정하는 속성인데, 아래의 표와 같이 총 6가지로 설정 가능합니다.

  object   ActionScript의 Object 들의 트리형식으로 XML 을 파싱하여 반환합니다. (기본값)
  array   ActionScript의 Object 들의 트리형식으로 XML 을 파싱하여 반환되나, 최상위의 Object가 Array가 아니라 새로 생성된 Array의 첫 번째 아이템이 됩니다. 만약 makeObjectsBindable 속성이 true로 설정되어 있을 경우 최상위 Array는 ArrayCollection으로 반환됩니다.
  xml   ActionScript 의 XMLNode Object로 이루어진 XML로 XML을 파싱하여 반환합니다.
  flashvars   ActionScript Object로 name과 value가 쌍으로 되어 있는(page=1) 텍스트를 파싱하여 반환합니다.
  text   받은 그대로를 text로 반환합니다.
  e4x   ECMAScript for XML(E4X)를 이용할 수 있는 ActionScript 의 XMLNode Object로 이루어진 XML로 XML을 파싱하여 반환합니다.

resultFormat를 object나 array로 설정하면 Object로 변환된 XML 데이터(서버측이 전달해준)를 전달받게 됩니다. 따로 파싱할 필요가 없는 것이죠. 물론 e4x나 xml로 설정하여  XML로 받아와서 사용할 수도 있습니다. 또는 특정 프로토콜에 의해 생성된 데이터라면 text로 설정하여 String 으로 받은 다음 프로토콜에 맞게 파싱하여 사용할 수도 있을 것입니다. (마치 구분자를 이용하여 소켓통신시 데이터 전달하는 것과 같이)

Object로 파싱하여 사용
rss 구조

rss 구조 (이미지 클릭하여 보세요.)

object로 resultFormat을 설정하여 데이터를 받아오는 예제를 한번 보겠습니다.
본 블로그의 rss를 읽어서 DataGrid에 넣어주는 예제인데, 우선 RSS 정보를 읽기 위해 구조를 먼저 보면 (우측이미지 참조) channel이라는 노드의 하위에 블로그의 정보들(타이틀, 주소, 이미지정보 등)이 있고 포스트의 정보는 item 이라는 노드들에 들어있습니다.

예제에서는 이 item 노드들을 가져다가 DataGrid에 넣어줄 것입니다.




위의 예제에서 resultHandler 메소드를 잠시 보시면 위에서 말한 item 노드들을 찾아서 DataGrid 에 넣어주는 구문을 보실 수 있으십니다. 위의 rss의 트리구조와 같이 Object 로 파싱되어 있기 때문에 동일하게 rss.channel.item 이런 식으로 item 을 읽어오고 있습니다. (하단 이미지 참조)

Object로 받아온 데이터

Object로 받아온 데이터



XML 그대로 사용하기
Flex의 DataGrid, Tree 와 같이 자주 사용하는 컴포넌트의 설계적 특성상 Object 혹은 XML 중 어떤 하나가 더 빠르다는 이야기는 둘째 치고라도 위의 예제같은 경우는 XML을 그대로 사용하시는 것이 오히려 개발 시에는 편할 수도 있습니다. 왜냐하면 resultHandler에 구현된 로직때문인데, resultFormat 속성을 e4x로 설정하여 결과로 받은 XML은 E4X를 사용할 수 있기 때문입니다. E4X에 대한 설명은 생략하도록 하겠습니다. 간단한 E4X에 대한 예제는 여기를 참고하세요.




resultFormat 속성을 e4x로 설정하고, resultHandler 메소드에서 e4x를 사용하여 간단하게 item을 DataGrid에 넣도록 구현하였습니다. 위의 예제와 비교하여 보셔도 크게 다른 것은 느끼지 못하실 것입니다. 오히려 위의 예제에서는 item 노드를 찾기가 훨씬 쉽게 되어있죠.

XML로 받아온 데이터

XML로 받아온 데이터



개발자 마다 스타일에 따라 차이는 있겠습니다만, 저의 경우는 HTTPService를 이용하는 어플의 경우 XML을 기반으로 데이터를 운용하고 있고, RemoteObject의 경우에는 VO를 기준으로 데이터를 운용하고 있습니다. 아무래도 HTTPService를 사용하는 경우는 서버와 주고받는 데이터를 XML기반으로 움직이는 것이 E4X 때문에 무지 편한 느낌이라.. ;^)

다른 분들은 어떻게 데이터를 운용하시는지 저도 궁금하네요. ;^) 트랙백 부탁드립니다.

신고
Creative Commons License
Creative Commons License
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.10.30 16:22 신고 | PERMALINK | EDIT/DEL | REPLY
난 이 의견 반댈세
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.10.30 17:07 신고 | PERMALINK | EDIT/DEL | REPLY
외부 서버로부터 받은 데이터를 가공하지 않고 그대로 쓰는 건, 결합도를 높이는 지름길..
(이 주제는 예전에 구글톡에서도 한 번 의견을 나누었던것 같은데.. -_-;)

물론, 테스트용 어플리케이션, 프로토타입 등에선 나도 저런식으로 그냥 E4X로 긁어다 쓰긴 하는데, 딱 그 범위만 넘어서도, 기능이 한두가지만 엮여도, 별도의 객체 구조를 가져가는게 사용하기 편함..

결합도 vs 간편성은 항상 논란의 여지가 많은 부분이긴 한데,
최근 몇 년간의 추세는, 간편성도 매우 중요하지만, 결합도가 우선시되어야, 또는 선행되어야 한다는 쪽 우세하니까..

또 내 경험으로도, XML을 가공하는데 드는 비용은 그리 크지 않은 편이고, 반면에 깨끗한 코드를 유지할 수 있다는 이점은 참 버리기 아까운 부분..
Favicon of http://blog.handkstory.net BlogIcon 제주소년 | 2009.10.31 14:35 신고 | PERMALINK | EDIT/DEL
아.. DB와의 종속성을 없애기 위해 ORM을 사용하는 원리와 비슷한건가요?ㅎ
하긴 외부 서버의 데이터를 바로 사용한다면 결합도가 크게 상승하겠네요..
Flex용 ORM이 나와도 좋을듯.. =ㅅ=ㅋ
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.08 06:26 신고 | PERMALINK | EDIT/DEL
예, 비슷한 맥락입니다. :')
내용을 조금 더 보태자면, 결합도 문제는, 일반적으로 일정 기간이 지난 후에야 불거지는 성향이 있어, 개발 시에는 잘 고려하지 않는 부분이기도 합니다.
또한, 개발이 된 후 한참 뒤에야 발견되는 문제이기에, 오히려 심각성이 더 크기도 하지요. 이슈가 될 시점 즈음에는 코드를 잘 알고 있는 사람이 아무도 남아있지 않기 때문에.. ㅎㅎ
Favicon of http://minsangk.com BlogIcon 민상k | 2009.11.01 10:25 신고 | PERMALINK | EDIT/DEL | REPLY
저도 찬익님 의견처럼 결합도 때문에 Object-XML / XML-Object 간 변환 루틴을 힘겹게 만들었던 기억이 납니다.
그러나 결국 만들어보니 xml feeder 가 제 자신이라면 저런 결합도를 위한 노력이 아무 짝에도 쓸모 없음을 깨달았습니다 ㅋ
resultFormat 을 object 로 하는건 생각못했네요. resultFormat="e4x" 에 너무 익숙해져 있었나 봅니다.

좋은 글 잘 읽고 가요.
ps: 얼마전까지도 RSS 에서 찾아 들어오면 올블릿이 바로 떠서 주소를 찍어와야 했는데 오늘은 제대로 글이 뜨네요ㅋ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.11.08 10:48 신고 | PERMALINK | EDIT/DEL
제 블로그 rss 주소는 http://blog.flashplatform.kr/rss 입니다. 아마 올블릿쪽 rss 을 참조하고 계신듯 하네요 ;)
방문 감사합니다.
최재영 | 2009.11.03 10:04 신고 | PERMALINK | EDIT/DEL | REPLY
결합도가 높아진다는건 이해하기 힘든 부분인데...
어차피 화면 구성은 해당 Application 에 의존적인 부분이고,
재사용 가능한 컴포넌트에서는 ICollectionView 의 사용으로
결합도하곤 상관없는듯...
결론: 그냥 e4x 를 사용한다
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.09 03:36 신고 | PERMALINK | EDIT/DEL
재영형 하이 ㅎㅎ
위에 언급한 결합도는 Service Architecture와의 coupling을 얘기한 것임.
예를 들면, RSS 리더라면 ATOM 등의 다른 포맷들도 지원해야하는데, 위 구조로는 추후에 포맷을 추가할 때마다 다소 진통이 있을 듯.
물론 국내의 기업용 어플리케이션들의 경우엔, '클라이언트를 위한 서버'를 개발하는 방식으로 클라이언트/서버 개발을 묶어서 진행되는 경우가 대부분이라 거부감이 없겠지만서도.. 이는 애초에 클라이언트/서버의 결합도를 100%로 놓고 시작하는거니까..

결론 : (아키텍처 상의) 컴포넌트 간 결합도에 대한 얘기였음.
Favicon of http://me2day.pe.kr BlogIcon 이태호 | 2009.11.03 21:06 신고 | PERMALINK | EDIT/DEL | REPLY
우선 뭐.. 저는. 위 최재영님 스타일과 같구요. 단, XML데이터를 별도의 class가 raw한 데이터(xml)를 머금고 있도록 하고, 밖에서는 일종의 factoring을 해다 쓰는 편입니다. 어찌보면 절충안이라고 할 수 있죠. 한마디로 1 xml에 대한 명세를 1 data container class 만 가지고 있게 합니다. 그냥 갠적인 스타일~
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.08 10:41 신고 | PERMALINK | EDIT/DEL | REPLY
추가적으로, 코드의 가독성도 문제가 될 수 있다는 생각..
물론 문서화로도 해결 가능하나, 모든 가독성 문제는 문서화로 해결이 가능한 반면, 아무도 문서를 읽으려하지 않으므로..

추후 서비스의 운영/유지/보수 시, 위 RSS 리더의 경우, BlogPost 라는 Class를 두고 파싱하는 경우, 클래스명만으로도 대략의 로직을 이해할 수 있으나, rssData..item과 같은 경우, 해당 로직을 이해하기 위해서는 RSS의 Specification에 대해서도 추가적인 지식이 있어야 함. 물론, RSS는 널리 알려진 포맷이라 많은 개발자들이 내용을 숙지하고 있겠지만, FOAF이나 DOAC이라면 또 다를 것이고, XMPP나 또는 기업 내부에서만 사용하는 데이터 포맷이라면 더욱 그 차이가 심해짐.

단, 유지 비용과는 관계 없이 저럼한 개발 비용을 추구하는 국내 소프트웨어 개발 업계의 실정에는 본 답글 내용이 맞지 않을 수는 있다는 의견..
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.11.08 10:46 신고 | PERMALINK | EDIT/DEL
코드의 가독성의 문제에 대해서는 동의.
위의 RSS spec 을 숙지한 경우에는 상관 없겠으나 spec 을 모르는 상태에서의 저 코드는 대략난감이겠군.
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.09 04:15 신고 | PERMALINK | EDIT/DEL
흠.. 난 결합도 문제가 더 큰 문제라고 생각하는데..
최재영 | 2009.11.09 08:58 신고 | PERMALINK | EDIT/DEL | REPLY
음.. 방금도 대화했지만
이미 사용데이터는 Collection류로 추상화되어 있는데다,
서버(혹은 데이터)와의 coupling point 는
소스 데이터의 변화가 있는 경우 어차피 다시 작성되어야 함.
VO 가 있는 경우 소스데이터가 변하면 VO 도 수정해야하고..
(가독성 차원에서는 잘 생각해봐야 함. 어느 쪽이 비용이 더 적은지)
coupling point 에서의 추상화 레벨이 높아질수록,
코드 복잡도가 증가할 수록 쓸데없는 버그발생률만 높이게 되는 듯...
차라리 다른 곳에서의 재사용성을 높이는게
훨씬 더 이득이라는 생각...
(결합도 낮추기는 재사용성을 위해서 생각한거 맞지?)
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.15 17:01 신고 | PERMALINK | EDIT/DEL | REPLY
음.. 역시 방금 다시 대화했지만.. (메신저가 편리하긴 편리한 듯.. 로그 정리가 안되는게 흠이지만)

재사용성하고 일부 겹치는 부분이긴 한데, 일단 결합도는 Flexibility를 염두에 두고 이야기 한 것..
아직은 실력이 부족으로.. 재사용성의 이점을 누리진 못하고 있어서..

개발 단계, 또는 운영 단계에서 기능의 추가/수정이 빈번히 일어나는 경우,
코드의 깨끗함을 유지한 채 지속적으로 기능을 추가할 수 있는 구조..라면
아무래도 VO 쪽에 조금 더 점수를 줄 수 있을 것 같다는 생각.

또, 역시 메신저에서 이야기 했듯이, 하나의 예로,
외부에서 가져온 한 가지 데이터를 다수의 Visual Component에서 사용하는 경우,
만약 특정 데이터의 노드명이 변했다면 (ex. pubDate->publishDate)
데이터를 그대로 가져와서 쓰는 경우, 모든 Visual Component에서 해당 값을 바꿔줘야 하지만,
VO는 파서에서 단 한 번만 수정해주면 되니..

코드 복잡도 문제는 나중에 다시 토론..
Favicon of http://vulcan9.tistory.com BlogIcon vulcan | 2009.12.05 17:15 신고 | PERMALINK | EDIT/DEL | REPLY
저두 걘적으로다가 [외부데이터-VO 클래스] 이렇게 항상 짝으로 사용합니다. 외부데이터를 파싱해서 적절하게 변형시켜주눈 Adapter 역할을 VO 클래스에 맡기는거죠. 아직까지는 데이터가 변하더라도 Vo클래스 밖으로 변경사항이 전파되는 일은 없었던거 같네요. 홍수났을때 물길 막아주는 칸막이 역할 - VO에 한표!
카시우스 | 2010.02.03 17:49 신고 | PERMALINK | EDIT/DEL | REPLY
글잘보고있습니다 ㅋㅋㅋ 근데너무어려움... ㅠㅠ 회사괜히와써.....나에게너무많은걸바래 ㅠㅠ
marie | 2011.11.23 11:24 신고 | PERMALINK | EDIT/DEL | REPLY
flex로 .. 검색해서 블로그들왔는데 잘봤습니당~ 10%정도 알아 들었나?ㅠ _ㅠ 어려워요 엉엉 ㅠㅠ
gottdanken | 2014.11.18 18:00 | PERMALINK | EDIT/DEL | REPLY
관리자의 승인을 기다리고 있는 댓글입니다
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2009.07.01 10:16
Flex3 in Action 이미지 출처 : 강컴

Flex3 in Action 이미지 출처 : 강컴

ActionScript에서 배열은 Array 를 사용하게 됩니다.
Java 와 달리 동적배열이어서 크기를 정하지 않고 임의대로 push, pop 등의 메소드를 통해 편리하게 사용할 수 있습니다. (Java에서는 ArrayList를 사용하시면 편리하죠!)

얼마전에 읽었던 Flex3 in Action 에 보면 'Working with ActionScript' chapter에 Array에 대해서 설명하고 있는데요, 여기에 다름과 같이 배열에 대해서 정의를 하고 있습니다.

1. Indexed arrays
2. Associative arrays

1번 Indexed arrays 는 우리가 흔히 사용하는 Array를 말합니다. 숫자 인덱스를 가지고 다음과 같이 값에 접근을 하게됩니다.

그리고 2번 Associative arrays는 흔히 연관배열 또는 해시(Hash)라고 부르는 배열로 key 값을 가지고 접근하게 됩니다. 책의 예제는 다음과 같습니다.


위의 예제는 이상없이 잘 동작합니다만, ActionScript 에서 연관배열(해시)를 위와 같이 사용하면 안됩니다.
그 이유는 Livedocs 에 잘 나와있습니다.

Array 클래스를 사용하여 번호가 매겨진 요소 대신 명명된 요소가 들어 있는 데이터 구조인 연결 배열(해시) 을 만들지 마십시오. 연결 배열을 만들려면 Object 클래스를 사용해야 합니다. ActionScript에서 Array 클래스를 사용하여 연결 배열을 만들 수는 있지만 이렇게 하면 연결 배열에 Array 클래스 메서드나 속성을 사용할 수 없습니다.
Livedocs 에서 발췌

ActionScript 에서는 Object 클래스를 이용하여 해시를 구현하라고 설명하고 있습니다. 물론 Object가 모든 클래스의 기본이 되기때문에, Array를 이용하여 연관배열(해시)를 만들 수는 있습니다. 하지만 해당 클래스를 만든 의미가 없어지죠. Array는 index를 이용한 배열로 설계된 것이기 때문입니다. 예를 들어 임의로 인스턴스화 시킬 수 있는 Sprite 객체를 연관배열로 사용한다는 것은 정말 황당한 일이라고 할 수 있겠습니다. 해당 목적에 맞게 사용해야 된다는 것이죠 ;)
아래에 Object로 연관배열을 사용하는 방법에 대해서 발췌했습니다.
Object 클래스를 사용하여 연결 배열을 만들 수 있습니다. 기본적으로 연결 배열은 Object 클래스의 인스턴스이며 키-값 쌍은 각각 속성과 속성 값으로 표현됩니다. 결합적 배열을 Object 데이터 유형을 사용하여 선언해야 하는 또 다른 이유는 이 경우 객체 리터럴을 사용하여 결합적 배열을 채울 수 있기 때문입니다. 단, Object 데이터 유형으로 선언하는 경우에만 가능합니다. 다음 예제에서는 객체 리터럴을 사용하여 연결 배열을 만들고 도트 연산자와 배열 액세스 연산자를 사용하여 항목에 액세스한 다음 새 속성을 만들어 키-값 쌍을 새로 추가합니다.

Livedocs 에서 발췌

위와 같이 Object를 이용하여 연결배열(해시)를 만들수 있습니다.
그리고 추가적으로 해당 값의 키(Key)값을 다른 객체로 하기 위해서 ActionScript 3.0에서는 Dictionary 클래스를 제공합니다.

Dictionary 클래스를 사용하면 키 비교에 완전 항등 연산자(===)를 사용하는 동적 속성 컬렉션을 만들 수 있습니다. 객체를 키로 사용하는 경우 객체에 toString()을 호출하여 반환되는 값이 아니라 객체의 ID가 객체를 찾는 데 사용됩니다.

다음 명령문은 Dictionary 객체와 키 객체 사이의 관계를 보여 줍니다.

Livedocs 에서 발췌


실제 해당 클래스의 구현 목적대로 사용하여야 오동작을 막을 수 있습니다.  게다가 협업시에 큰 걸림돌이 될 수 도 있습니다.
이 글을 읽으시는 분들은 사용하시는 클래스가 구현된 목적대로 사용하고 계신가요?

좋은 하루 되세요 :-)

ps. 책이 한글판으로 발간된다는 소식은 없는데, 만약 된다면 위의 오류에 대해서는 수정해서 나왔으면 좋겠네요.
ps2. AS 한글문서에는 연관배열이 아닌 연결배열로 번역이 되어있더군요. 정확하게 무엇이 맞는지는 저도 잘 모르겠네요 :)

신고
Creative Commons License
Creative Commons License
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.07.13 12:01 신고 | PERMALINK | EDIT/DEL | REPLY
난 개인적으로 Dictionary 선호..
그나저나.. key.toString = function() { ... }
AS 3.0 이후로, 다른 사람이 쓰는 건 정말 간만에 보는 듯..
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.07.13 23:11 신고 | PERMALINK | EDIT/DEL
난 AS 3.0 부터 해서 어색한 사용법 ㅎㅎ
Favicon of http://as3.kr BlogIcon 우야꼬 | 2009.07.13 18:17 신고 | PERMALINK | EDIT/DEL | REPLY
맞아 연관배열을 배열의 기능으로 아는 사람 정말 많더라.
굿 포스팅~
마지막에 "클래스의 구현 목적대로 사용하여야"에 공감 100표 >.<)b
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.07.13 23:11 신고 | PERMALINK | EDIT/DEL
엉뚱하게 쓰면 곤란하단말야 :)
Favicon of http://hangunsworld.com BlogIcon Han Sanghun | 2009.07.13 21:15 신고 | PERMALINK | EDIT/DEL | REPLY
처음부터 배열을 연관배열로 사용하지 못하도록 막아 놓았으면 되는 것을,
정작 뒷문은 만들어 놓고 정문으로만 다니라는 것은 좀 프로답지 않은데요 ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.07.13 23:13 신고 | PERMALINK | EDIT/DEL
제가 보기에는 dynamic 클래스라서 맘대로 속성을 넣을 수 있었는데, 그게 어쩌다보니 연관배열처럼 쓸 수 있게 된건지도.;;
그래서 Array를 연관배열로 쓰지말아라.. 라고 LiveDocs에 넣은 것 같기도 ㅎㅎ
Favicon of http://blog.jidolstar.com BlogIcon 지돌스타 | 2009.07.13 22:28 신고 | PERMALINK | EDIT/DEL | REPLY
난 Dictionary를 커스터마이징한 HashMap을 만들어 사용하고 있음~~ ^^
정말 필요할때 Dictionary의 부족한 점을 말끔히 해결해준다는 ~~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.07.13 23:14 신고 | PERMALINK | EDIT/DEL
형님 그런건 공개하셔야죠! ㅋㅋㅋ
차차 | 2009.07.14 20:55 신고 | PERMALINK | EDIT/DEL | REPLY
ㅋㅋ오빠 메인사진 바꼈네요..깜놀-,.-
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.07.22 18:31 신고 | PERMALINK | EDIT/DEL
뭘 또 깜놀까지야 ㅋ
Favicon of http://jjaeko.tistory.com BlogIcon 째코 | 2009.07.15 00:02 신고 | PERMALINK | EDIT/DEL | REPLY
유익한 내용이네요.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.07.22 18:31 신고 | PERMALINK | EDIT/DEL
감사감사 :)
Favicon of http://douglas9.pe.kr BlogIcon douglas9 | 2009.07.20 12:16 신고 | PERMALINK | EDIT/DEL | REPLY
그런데 한가지 좋은 점은 아주 미묘하지만 Array가 조금 빠르 더군요.
다들 그래서 쓰는 건 아닌지... 하지만 그 정도의 미묘한 차이 보다는
안정성이 더 중요하겠죠^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2010.03.27 22:34 신고 | PERMALINK | EDIT/DEL
맹기완님이 좋은 글 적어주셨어요 ;)
http://www.diebuster.com/?p=690
치우비 | 2009.07.25 01:47 신고 | PERMALINK | EDIT/DEL | REPLY
음...... 잘보고 갑니다..
Favicon of http://7zelkova.tistory.com BlogIcon 성주 | 2009.08.02 00:20 신고 | PERMALINK | EDIT/DEL | REPLY
아아.. 내공 부족을 뼈저리게 느끼고 갑니다.
| 2010.04.25 06:35 신고 | PERMALINK | EDIT/DEL | REPLY
그렇다면... Object로 했을때 특정 KEY에 VALUE를 추가로 넣고싶을땐 어떤 명령을 써야하나요? Array라면 push를 쓰면 되는데.
저도 저 문구때문에 Object로 할려고 했는데...아 괴롭네요 벌써 5시간째 씨름하다가 걍 Array로 완성하긴했습니디만...음... 굽신굽신 조언좀부탁드립니다.
참고로
obj[x].key = value; 또는 obj.key[x] = value; 등등 뭐 이런것들은 안됩니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2010.04.25 17:24 신고 | PERMALINK | EDIT/DEL
obj[x].key = value; 라는 코드가 있을 때, x가 String 이 아니라면 일종의 객체키가 될 것입니다.
이럴 경우 Dictionary 를 사용하시면 될 것 같네요.

저는 본문에서 다루었던 것 처럼 연관배열로 사용할 경우가 아닌 경우에는 Object를 직접 사용하는 것을 꺼립니다. 예를 들어 obj[x].key 라고 정의하셨다면, x라는 키를 통해 받은 객체가 key라는 키를 이용해 값을 가지고 있게 될텐데, 이런 코드는 컴파일러 수준에서는 값이 존재하지 않다거나 하는 문제를 잡을 수 없게되죠. 런타임시에 문제가 발생하게 되므로 곤란해집니다. 특정 속성들을 사용하시는 경우에는 따로 클래스를 만드셔서 사용하시기를 권해드립니다.
울랄라 | 2010.07.30 16:16 신고 | PERMALINK | EDIT/DEL | REPLY
그럼 Object를 연관배열(해쉬처럼)처럼 사용할때,, 전체를 비우거나 일부만 비우려고 할때 어떤식으로 해야 하나여?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2010.08.02 15:10 신고 | PERMALINK | EDIT/DEL
'Object가 연관배열로 사용하기 위해서 작성되었다기 보다는 연관배열로 사용이 가능하다.' 라고 생각하시면 쉽겠습니다.
말씀하신 기능은 추가로 구현하여야할 것 같네요.
Favicon of http://storyjava.tistory.com/ BlogIcon KevinKim | 2013.01.18 15:11 신고 | PERMALINK | EDIT/DEL | REPLY
검쉰님 좋을 글 너무 감사합니다. 생초보에 사수없이 혼자 개발하다보니 항상 어려운 점이 많은데, 좋은 글 너무 큰 도움이 되고있습니다.
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2009.04.01 21:45
안녕하세요? 검쉰입니다.

제가 Flex를 처음 접하고, '이거 정말 멋지다!' 라고 생각을 했습니다. 그 뒤로 이어지는 생각은 '이거 한글 입력은 왜 이리 느려?'. 몇 년이 지난 아직도 한글 입력은 느리기만 한데, 언제 수정될지는 아무도 모른다죠. 비 영어권의 설움이라고 할까요? 과학적이고 독창적인 자랑스런 한글을 쓰는게 죄(?)가 되는 이상한 상황.

이런 상황을 헤쳐나가고자 지난 1월 이희덕님의 제안으로 'Flash Platform 한글문제 공동대응팀'이 생겼습니다. (짝짝짝)
그간 오프모임을 진행하면서 팀원간 의견도 나누고, 최근 Flex SDK 3.2 + FP 10 에서의 한글 입력문제가 해결되는 기쁨을 맛보기도 하였습니다.

사용자 삽입 이미지

이제 다른 많은 Flash Platform 개발자 분들과 만나, 한글문제와 개발 노하우를 이야기해보고자 합니다.

 *행사 개요

     날짜 : 2009년 4월 11일 (토)
     장소 : 숭실대학교 벤처관 3층 대강의실
     시간 : 오후 2시 ~ 6시
     주최 : Flash Platform 한글문제 공동대응팀
     주관 : 숭실대학교 글로벌미디어학부
     후원
Agenda

     14:00 ~ 14:10 : 학교 시설 사용과 관련된 안내 (이희덕)
     14:10 ~ 14:30 : 한글 대응팀 소개 및 기조연설 (이희덕)
     14:30 ~ 15:00 : Flash Platform 게임개발 노하우 (이정웅)
     15:00 ~ 15:30 : FlarToolKit으로 구현하는 증강 현실 (옥상훈)
     15:30 ~ 16:00 : Flash Platform 한글문제 (이희덕)
     16:00 ~ 16:40 : 토론의 장 (대응팀 전원)
     16:40 ~ 17:20 : 잡부 Flex 개발자를 위한 Flex 스킨 (김학영)
     17:20 ~ 17:50 : Creating Visual Experiences with Flex (이준하)
     17:50 ~ 18:00 : 정리 및 폐회




행사 참석 신청 및 자세한 소개는 온오프믹스 를 통해 신청해주시면 감사하겠습니다. ;)
많은 참석 부탁드립니다 !!!
함께해요~ ㅎㅎ


저작자 표시 비영리
신고
Creative Commons License
Creative Commons License
차차 | 2009.04.02 10:17 신고 | PERMALINK | EDIT/DEL | REPLY
ㅋㅋ이번달은 행사가 많아서..
담주에 스케쥴비면 참석할께요~ 기대되네여^ㅁ^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.02 18:08 신고 | PERMALINK | EDIT/DEL
꼭 와~ ;)
Favicon of http://okgosu.tistory.com BlogIcon okgosu | 2009.04.02 14:10 신고 | PERMALINK | EDIT/DEL | REPLY
오늘 okgosu.net 전체 메일 날렸어요~

11일날 뵈요~

okgosu (-..-)a
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.02 18:08 신고 | PERMALINK | EDIT/DEL
메일 잘 봤습니다 ;)
11일날 뵙겠습니다. ㅎㅎ
Favicon of http://hhjae84.tistory.com BlogIcon 모지씨 | 2009.04.02 23:20 신고 | PERMALINK | EDIT/DEL | REPLY
저도 11일에 뵈요~ 헤헤
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.03 10:31 신고 | PERMALINK | EDIT/DEL
11일에 봐~ ;)
Favicon of http://inthewhite.net BlogIcon july.fool | 2009.04.05 01:38 신고 | PERMALINK | EDIT/DEL | REPLY
기대 기대 중입니다 :)
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.05 18:40 신고 | PERMALINK | EDIT/DEL
제 발표는 기대하지 마세요 ㅎㅎㅎ
Favicon of http://rainlethe.tistory.com BlogIcon 레인레테 | 2009.04.06 10:49 신고 | PERMALINK | EDIT/DEL | REPLY
저도 구경갑니다요 ^^

잘부탁드려용
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.06 12:44 신고 | PERMALINK | EDIT/DEL
네~ 11일날 뵙겠습니다. ;)
아는 척 해주세요 :)
Favicon of http://wooyaggo.tistory.com BlogIcon 우야꼬  | 2009.04.06 18:46 신고 | PERMALINK | EDIT/DEL | REPLY
토요일날 뵈요~~
뒤풀이는 한시간정도 있다 일어나야되지만 이번에 뵐 수 잇겠네용^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.06 23:15 신고 | PERMALINK | EDIT/DEL
드디어 얼굴 뵙겠네요~ ;)
BlogIcon actionshin | 2009.04.07 23:16 신고 | PERMALINK | EDIT/DEL | REPLY
검쉰님 안녕하세요. 모임 신청을 하려고 하는데 온오프가 신청이 되지 않네요. 거기 신청이 되지 않아도 방청가능한가요?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.08 00:04 신고 | PERMALINK | EDIT/DEL
행사진행을 맡고 있는 희덕군에게 문의하니
성함 / 소속 / 뒷풀이 참석여부를 알려주시면 추가하겠다고 하네요 ^^

희덕군 블로그 http://adnaru.com/ 에 비밀글로 적어주시면 될꺼 같습니다. ;)
11일날 뵐께요!
Favicon of http://egg.pe.kr BlogIcon egg | 2009.04.07 23:26 신고 | PERMALINK | EDIT/DEL | REPLY
꼭 비영어권의 설움을 해결해주시고
한글의 독창성을 널리 알려주세요. ㅎㅎㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.08 00:04 신고 | PERMALINK | EDIT/DEL
독창성까지 널리 알릴 실력은 없어서... ㅎㄷㄷ
Favicon of http://cafe.naver.com/codestudy BlogIcon 이정칠 | 2009.04.08 09:57 신고 | PERMALINK | EDIT/DEL | REPLY
그날 가서 봅시다 .. 간만에 얼굴 보겠구만 ㅋㅋ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.08 15:15 신고 | PERMALINK | EDIT/DEL
네~ ㅎㅎ 오랫만에 얼굴 뵙겠네요 형님 ㅎ
Favicon of http://7zelkova.tistory.com BlogIcon 성주 | 2009.04.08 10:13 신고 | PERMALINK | EDIT/DEL | REPLY
3시쯤에 연습이있어서 중간에 나가야하기땜시 신청하기가 거시기해요
이건 희덕님에게 말해야하나... ㅡㅡ;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.08 15:15 신고 | PERMALINK | EDIT/DEL
신청하고 중간에 나가면 되지 뭐 ㅋㅋ
| 2009.04.08 17:06 | PERMALINK | EDIT/DEL | REPLY
비밀댓글입니다
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.08 18:25 신고 | PERMALINK | EDIT/DEL
네~ 안녕하세요. 란도르노님 ㅎ
모임때 인사 나누어요~ ;)
Favicon of http://inthewhite.net BlogIcon july.fool | 2009.04.11 17:10 신고 | PERMALINK | EDIT/DEL | REPLY
발표 잘 들었습니다~~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.12 16:38 신고 | PERMALINK | EDIT/DEL
감사합니다. ;)
변상윤 | 2009.04.11 21:19 신고 | PERMALINK | EDIT/DEL | REPLY
안녕하십니까? 오늘 마지막에 Flex에서 Textarea 내용을 카피해서 메모장에 붙여 넣을 경우 엔터가 전부 없어지는 것 질문했던 사람입니다. 오자마자 검쉰님의 블로그를 찾아보니 내용이 있네요^^ 정말 감사드립니다. 한달간의 고민을 해결해 주신셔^^ 앞으로 자주 들리겠습니다
변상윤 | 2009.04.11 22:26 신고 | PERMALINK | EDIT/DEL | REPLY
추가로 질문 하나 있습니다. 저희 회사에서 글입력을 나모 엑티브스퀘어를 사용하는데 ActiveX라서 IFrame을 사용해서 띠우다 보니 문제가 있습니다. 혹시 Flex로 그림도 바로 첨부하는 웹에디터 같은 것을 만들어 본적이나 본 것이 있나요?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.12 16:40 신고 | PERMALINK | EDIT/DEL
기존에 에디터는 한계가 있었습니다. 그래서 FTE 라는 녀석이 나왔는데, 기존 Flex SDK 3.2 + FP10 에서의 한글입력 버그때문에 개발을 전혀 못했네요. =ㅁ=;;
이제 한번 해보려는 중입니다.

FTE 예제를 찾아보시면 딱 하고 감이 올 것이라 생각합니다. ;)
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2009.03.27 15:36
안녕하세요? 검쉰입니다. 오랫만에 블로그 포스트로 인사드립니다.
그동안 티스토리에서 문제가 되었던 Flash Player 10에서 swf 로드가 안되던 문제가 해결이 되었네요. ;) 기존의 제 포스트들도 정상으로 보이고요. 이사하려다가 그 것또한 귀차니즘에 의해 좌절. ^ㅂ^; 아무튼 다시 오랫만에 글로 인사드려요. ;^)

흔히 자주 쓰시는 Flash로 만든 네비케이터 바 에서 메뉴정보를 외부의 XML 로 받아오는 경우와 같이 외부의 데이터를 읽어오는 과정에서 한글이 깨지는 경험을 한번쯤은 하셨을 겁니다. 이런 경우 커뮤니티에서 검색해보시면 System.useCodePage = true; 를 넣어라. 라는  답변을 많이 볼 수 있습니다. 심지여 이 것을 "한글 깨짐 방지 코드"라고 부르는 경우도 있더군요. 옛 속담에 '선무당이 사람잡는다'라는 이야기가 있습니다. 정확하게 이해하지 못하고 쓰게 되면 뒷일 감당하기 힘들게 되는 법!!. 왜 System.useCodePage = true; 를 넣으면 한글이 안꺠지는지 알아보도록 하겠습니다.

'EUC-KR' 이라고 많이 보셨을 겁니다. 한글을 정의한 캐릭터 셋(charset)입니다. 보통 한글 윈도우에서 제작한 파일은 'EUC-KR' 캐릭터 셋으로 저장되는 경우가 많습니다. 이 때 캐릭터 셋이란 글자들의 집합을 정의한 것이라고 생각하시면 됩니다. (보다 자세한 건 위키백과의 설명을 참조하시길 바랍니다.)
이러한 캐릭터 셋이 다르게 되어 있는 데이터를 읽어오게 되면 한글이 깨지게 되는데요, Flash 내부에서는 유니코드(UTF-8)를 기본으로 사용하기 때문입니다. 'EUC-KR'로 제작된 파일을 'UTF-8'로 읽었으니 당연히 서로 다른 캐릭터 셋을 사용하게 되므로 한글이 깨지게 되는 겁니다. 이러한 경우에 바로 System.useCodePage = true; 를 사용하면 한글이 깨어지지 않는데, 그 이유는 LiveDocs 에도 잘 나와있습니다.

useCodePage 속성  
useCodePage:Boolean  [읽기/쓰기]
언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0, Flash Player 9

Flash Player에서 외부 텍스트 파일을 해석하는 데 사용할 코드 페이지를 지정하는 부울 값입니다. 이 속성을 false로 설정하면 외부 텍스트 파일이 유니코드로 해석됩니다. 이러한 파일은 저장할 때 유니코드로 인코딩되어야 합니다. 이 속성을 true로 설정하면 외부 텍스트 파일이 Flash Player가 실행되는 운영 체제의 일반 코드 페이지로 해석됩니다. useCodePage의 기본값은 false입니다.

flash.display.Loader.load(), flash.net.URLLoader, flash.net.URLStream 또는 XML 클래스를 사용하여 외부 파일로 로드하는 텍스트를 Flash Player에서 유니코드로 인식하려면 이러한 파일을 유니코드로 저장해야 합니다. 외부 파일을 유니코드로 인코딩하려면 Windows 2000의 메모장과 같이 유니코드를 지원하는 응용 프로그램에서 파일을 저장해야 합니다.

유니코드로 인코딩되지 않은 외부 텍스트 파일을 로드하려면 useCodePagetrue로 설정합니다. 이렇게 하려면 데이터를 로드하는 SWF 파일의 첫 번째 프레임에 다음 코드를 첫 코드 행으로 추가합니다.

System.useCodePage = true;

이 코드를 추가하면 외부 텍스트가 Flash Player가 실행되고 있는 운영 체제의 일반 코드 페이지로 해석됩니다. 영문 Windows 운영 체제의 경우 대개 CP1252이고 한국어 운영 체제의 경우 EUC-KR입니다. 만약 useCodePagetrue로 설정하면 Flash Player 6 이상 버전은 Flash Player 5와 같은 방법으로 텍스트를 처리합니다. Flash Player 5에서는 모든 텍스트를 Flash Player 실행 운영 체제의 일반 코드 페이지를 사용하는 것으로 간주하고 처리했습니다.

useCodePagetrue로 설정하는 경우 플레이어가 실행되는 운영 체제의 일반 코드 페이지에 외부 텍스트 파일에 사용되는 문자가 포함되어 있어야 텍스트가 표시됩니다. 예를 들어 중국어 문자가 포함된 외부 텍스트 파일을 로드하는 경우 CP1252 코드 페이지에는 중국어 문자가 없으므로 이 코드 페이지를 사용하는 시스템에서 중국어 문자가 표시되지 않습니다.

모든 플랫폼에서 SWF 파일에 사용된 외부 텍스트 파일을 볼 수 있게 하려면 모든 외부 텍스트 파일을 유니코드로 인코딩하고 useCodePagefalse로 설정된 상태로 두어야 합니다. 이렇게 하면 Flash Player 6 이상에서 텍스트가 유니코드로 해석됩니다.


LiveDocs 에도 나와 있는 것 처럼 useCodePage 를 true로 설정하면 유니코드가 아닌 운영체제의 codepage로 해석이 되는 것이죠. 한글 윈도우의 기본 codePage는 'EUC-KR(51949)' 입니다. 그래서 외부의 'EUC-KR'로 되어있는 문서가 깨지지 않고 읽히게 되는 것입니다.

더 이상의 문제가 없어보입니다만,  실제 그렇지 않습니다. 해당 swf 를 로드하는 사용자가 외국어 OS를 사용하고 있다면 어떨까요? 열심히 만든 어플을 정식으로 런칭했는데, 그걸 외국의 한국인이 본다면???

이론적으로 보면 'EUC-KR'로 되어 있는 문서를 해당 OS의 codePage로 읽게 될텐데, 다른 언어의 OS는 codePage가 설마 'EUC-KR(51949)'일까요?? 위의 livedocs의 설명에도 나와 있듯, 다른 나라의 OS는 한국어 OS와 codePage가 다르다는 군요. (다른 나라 언어의 캐릭터 셋에 대해서 궁금하시다면 여기에서 확인해보시면 되겠습니다.)

실제로 그런지 확인을 위해서 아래와 같은 간단한 swf 파일을 만들어 봤습니다. 소스코드는 다음과 같습니다.
Flex 로 만든 App.

로드한 XML 파일



동일한 XML 파일을 'UTF-8', 'EUC-KR'로 각각 저장해서 useCodePage를 각각 false, true 로 설정해 영어, 일어 Windows 에서 IE로 읽어봤습니다.
클릭하셔서 확인해보세요.
Windows XP 영문판에서 swf 로드

Windows XP 영문판에서 swf 로드

Windows XP 일어판에서 swf 로드

Windows XP 일어판에서 swf 로드



UTF-8로 되어있는 파일은 어떤 OS든지 간에 잘 로드가 되고 있고, 'EUC-KR'로 되어있는 것을 System.useCodePage = true; 로 설정한 것은 한글이 여지없이 깨져보이는 것을 확인 할 수 있습니다. 외국에 서비스 할 생각이 없는 어플이라 하더라도, 기본적으로 'UTF-8'로 파일들을 저장해 놓으시면 한글문제를 잘 피해가실 수 있다고 생각합니다. 단순이 파일만이 아니라, HTTPService로 load 하는 데이터 또한 'UTF-8' 로 제작되어야 하겠죠?

하지만 할 수 없이 'EUC-KR'을 사용해야 할 때가 있습니다.네이버 카페의 경우 'EUC-KR'로 되어 있는데요, 이 것 때문에 useCodePage를 true로 설정할 수 는 없는 것 아니겠습니까? 이런 고민을 제가 존경하는 원강민님께서 블로그에 이미 포스팅 하신 적이 있습니다.
System.useCodePage 대신 이렇게.. 이 포스트를 참고 하시면 좋겠습니다.

간만에 글을 썼더니 꽤나 길어졌네요 :-) 다들 좋은 주말 되시길!
저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License
Favicon of http://okgosu.tistory.com BlogIcon okgosu | 2009.03.27 17:59 신고 | PERMALINK | EDIT/DEL | REPLY
컴백 하셨네요...
잘 보고 갑니다~

with okgosu (-..-)a 저도 굽신 굽신~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.29 22:19 신고 | PERMALINK | EDIT/DEL
방문 감사합니다 ;)
Favicon of http://jidolstar.com/blog BlogIcon 지돌스타 | 2009.03.28 13:03 신고 | PERMALINK | EDIT/DEL | REPLY
좋아요~~~ 블로그의 세계로 돌아오신것을 환영합니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.29 22:20 신고 | PERMALINK | EDIT/DEL
다음 포스팅은 언제일 줄 모른다는... ㅎㅎ
박스농사 | 2009.03.30 09:39 신고 | PERMALINK | EDIT/DEL | REPLY
영어는 왜 다 잘나올까요?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.30 09:43 신고 | PERMALINK | EDIT/DEL
비 영어권의 슬픔. =ㅁ=
Favicon of http://zommoc.tistory.com BlogIcon 좀모씨 | 2009.03.30 11:52 신고 | PERMALINK | EDIT/DEL | REPLY
많은 도움이 되었습니다^^

.....지식인 질문자 채택글 같은;;;;;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.31 09:46 신고 | PERMALINK | EDIT/DEL
채택해주셔서 감사합니다?! ;)
Favicon of http://7zelkova.tistory.com BlogIcon 성주 | 2009.03.31 10:05 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 글 잘 보고 갑니다.
저도 System.useCodePage = true; 로 해 놓은게 있는데 수정해야겠네요
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.31 22:06 신고 | PERMALINK | EDIT/DEL
방문 감사감사 ;)
Favicon of http://lovedev.tistory.com BlogIcon lovedev | 2009.03.31 20:47 신고 | PERMALINK | EDIT/DEL | REPLY
^^ 다시 돌아 오셨군요 ^^)/ 화이팅
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.31 22:06 신고 | PERMALINK | EDIT/DEL
열심히 달려 보겠습니다 ;)
모지씨 | 2009.04.01 09:34 신고 | PERMALINK | EDIT/DEL | REPLY
좋은글 잘보고 갑니다 : )
이름 입력하라는곳 없어서 한참 찾았는데... 새로고침하니까 나오는군요 :-(
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.01 16:03 신고 | PERMALINK | EDIT/DEL
로그인 하면 좀 편함 ㅋ
Favicon of http://zommoc.tistory.com BlogIcon 좀모씨 | 2009.04.03 17:49 신고 | PERMALINK | EDIT/DEL
그럴 때 Q 를 눌러보시면 새로운 세계가~
Favicon of http://hangunsworld.com BlogIcon Han Sanghun | 2009.04.02 18:02 신고 | PERMALINK | EDIT/DEL | REPLY
명쾌하게 정리해 주셨네요 ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.02 18:10 신고 | PERMALINK | EDIT/DEL
방문 감사드려요~ ;)
데스티 좀 잘 부탁드립니다? ㅋ
퍼플린 | 2009.04.10 11:02 신고 | PERMALINK | EDIT/DEL | REPLY
굿잡~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.10 18:47 신고 | PERMALINK | EDIT/DEL
오예~ ㅋ
Favicon of http://me2day.pe.kr BlogIcon 이태호 | 2009.05.27 13:49 신고 | PERMALINK | EDIT/DEL | REPLY
검쉰님 오랫만에 들어와봤는데
이런 피같은 정보가. ^^
저도 이런 문제가 있어 어찌어찌 그 원인이란거 알고 해결은 했는데 내막이 이러하군요.
잘봤습니다.^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.06.02 10:13 신고 | PERMALINK | EDIT/DEL
언제 얼굴 한번 봐야죠~ ㅎㅎ
Favicon of http://www.ddongkang.com BlogIcon 동강 | 2009.06.02 13:16 신고 | PERMALINK | EDIT/DEL | REPLY
딱 찾는 정보 였어요.ㅋㅋ 잘 보았습니다.ㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.06.15 18:31 신고 | PERMALINK | EDIT/DEL
감사합니다 ;) ㅎㅎ
Favicon of http://stemp.tistory.com BlogIcon 문정환 | 2010.02.17 17:06 신고 | PERMALINK | EDIT/DEL | REPLY
System.useCodePage = true;에 대해서 찾아보다가 좋은글 읽고 갑니다 ~
유익한글 감사드립니다.
태우 | 2010.03.20 07:48 신고 | PERMALINK | EDIT/DEL | REPLY
감사합니다.
Favicon of http://blog.naver.com/yell301 BlogIcon 기절이 | 2010.09.11 13:02 신고 | PERMALINK | EDIT/DEL | REPLY
명쾌한 좋은 정보 감사합니다~도움 많이 되었습니다~링크 담아가겠습니다~감사합니다~^^
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2009.01.15 11:18
드디어 강의 종료!!

드디어 강의 종료!!


지난번 근황글에서 ActionScript 3.0 강의를 하고 있다고 말씀드렸는데, 드디어 이번주 화요일(2009. 1. 13)을 마지막으로 강의가 종료되었습니다. 작년부터 시작한 것이니 햇수로 2년간(?) 강의를 했네요. 같이 강의하시느냐 고생많으셨던 원강민님도 고생하셨습니다. ;)

강사 뿐만이 아니라 땜빵해준다고 고생해주신 공룡님,
강의장소 제공 및 동영상 녹화에 고생해주신 그날님 및 밥사마, 차차님
그리고 가장 중요한 강의프로그램 wow-Cast 만들어주신 류님 등등~

이렇게 많은 분들이 고생해주시지 않았다면 강의는 커녕 시작도 못했겠지요. 물론 늦은 밤 같이 밤 지새워가며 강의들어주신 많은 수강자분들께도 감사의 인사를 전합니다. (마지막 강의때 들어와주신 분들은 더욱 Thanks!!! )

저와 원강민님의 ActionScript 3.0 강의는 Flex4U 카페에 동영상 오픈자료실에서 카페 회원가입 후 보실 수 있으니 참고하시면 좋겠네요. (끝나고 나서 이야기지만 하다가 예제가 잘 안돌아서 얼버무린 것도 있고 말이 꼬여서 어버버하던 것도 있어서 좀 부끄럽긴 합니다.; )

제 2008년 목표가 이런 강의를 하는 것이었는데, 잘 마무리 된 듯 합니다. ;)
이제 당분간 좀 주말에 가벼운 마음으로 놀러다닐 수 있겠네요~!!! 화요일 강의라 주말은 강의준비를 해야되서 심적으로 부담이 좀 되더라구요. :)
얼마전 에이콘출판사에서 트랙백 이벤트로 드리밍 인 코드 를 한권 받았는데(황대산님의 사인과 함께) 그 것도 빨리 읽어서 리뷰를 써야겠습니다.

요즘 통 블로그에 기술적인 글을 못 올렸는데, 이번 주말에는 꼭 하나 올리도록 하겠습니다. ;)
막상 글 쓰려니 다 아시는 것인가 싶기도 하고요.... ㅎ

신고
Creative Commons License
Creative Commons License
Favicon of http://egg.pe.kr BlogIcon egg | 2009.01.15 19:48 신고 | PERMALINK | EDIT/DEL | REPLY
고생 많으셨습니다~ ^^*
그나저나 요즘 같이 추운 날씨에 감기 조심하세요~~ ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.16 10:15 신고 | PERMALINK | EDIT/DEL
감사합니다~ ;)
감기는 이미 걸려있..;;
Favicon of http://www.7zelkova.pe.kr BlogIcon 이성주 | 2009.01.17 15:08 신고 | PERMALINK | EDIT/DEL | REPLY
형님!! 수고하셨습니다!! 기술적 포스트 기다릴께요
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.19 15:06 신고 | PERMALINK | EDIT/DEL
생유~ +_+
탕슉 | 2009.01.19 15:58 신고 | PERMALINK | EDIT/DEL | REPLY
노래와 함께하는 곰쉰님의 강의.
그동안 수고많으셨습니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.20 17:00 신고 | PERMALINK | EDIT/DEL
저 검쉰이라니깐요.. ^^;;
Favicon of http://adnaru.tistory.com BlogIcon 희희덕 | 2009.01.22 21:25 신고 | PERMALINK | EDIT/DEL | REPLY
곰쉰님의 멋진강의 감사했습니다 : )
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.25 20:33 신고 | PERMALINK | EDIT/DEL
희덕님도 강의 좀.. ㅎㅎ
저도 좀 배우게요 ㅎ
Favicon of http://jidolstar.com/blog BlogIcon 지돌스타 | 2009.01.29 12:05 신고 | PERMALINK | EDIT/DEL | REPLY
정말 고생 많으셨어요~ ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.02.02 11:14 신고 | PERMALINK | EDIT/DEL
감사합니다~ ;)
Favicon of http://www.i-rince.com BlogIcon rince | 2009.01.30 14:15 신고 | PERMALINK | EDIT/DEL | REPLY
수고 많으셨습니다. 강의를 할 정도의 능력자셨네요 ^^;
저도 무언가 강의를 할 수 있을정도로 잘 하는게 있었으면 하는 작은 소망이 생기네요~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.02.02 11:15 신고 | PERMALINK | EDIT/DEL
능력은 보잘것 없는데, 2008년 목표여서 ㅎㅎㅎ
모험가 | 2009.02.02 17:30 신고 | PERMALINK | EDIT/DEL | REPLY
수고하셨습니다~~ 카페 가입해야겠습니다 ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.02.03 11:37 신고 | PERMALINK | EDIT/DEL
ActionScript 에 관심이 있으시면 가입추천드립니다. ;)
Favicon of http://okgosu.tistory.com BlogIcon okgosu | 2009.02.12 14:37 신고 | PERMALINK | EDIT/DEL | REPLY
블로그界로 컴백했습니다.
고생 많으셨습니다...
제가 현재 집필중인 책과도 관련이 많네요..ㅋㅋ
책 나오면 제일 먼저 드려야 겠네요.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.02.15 11:19 신고 | PERMALINK | EDIT/DEL
오~ :)
책 집필중이시군요! 기대하겠습니다 ;)
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.12.03 15:14
TextInput 으로 사용자에게 어떤 입력을 받게 되는 경우가 있습니다. 이때에 보다 많은 내용(예를 들어 사용자의 자기소개 같은 값)을 입력 받아야 하는 경우가 생기는데, 이때 사용하면 좋은 컴포넌트가 TextArea 입니다. TextArea 컴포넌트로 여러줄로 입력을 받게되면 사용자는 필연적으로 엔터키를 눌러 개행(줄바꿈)을 하게 되는데 오늘 이야기해보고자 하는 것은 이 개행에 대한 처리입니다.

문자열에 엔터를 처리하기 위해서 이스케이프 문자인 백슬래시(\)를 사용하여 처리를 하게 되는데, 보통 흔히 알고 있기로는 엔터를 처리하기 위해 \r\n 을 문자열에 포함시키면 된다고 아실 겁니다. 저도 학교에서 C수업을 들을때 그렇게 배웠습니다.

\r   : 캐리지리턴(carriage return) -  커서를 해당 줄의 처음으로 옮김
\n   : 라인피드(linefeed) - 커서를 해당 줄의 다음줄로 옮김

커서를 해당줄의 왼쪽으로 옮겨 다음줄로 내리면 엔터키를 친 것과 동일한 효과가 나오게 됩니다.
하지만 TextArea 에서는 \r 만으로 엔터키 처리를 하고 있습니다.




위와 같이 엔터키를 넣게 되면 실제로 TextArea의 text 속성에서 받는 문자열에는 "텍스트\r입력" 이라고 들어있게 되는 것이죠.

사용자에게 입력받은 해당 데이터를 서버에 저장하고 불러와 다시 TextArea 에 넣어줄때에 아무런 처리를 하지 않아도 상관없습니다. 어짜피 넣어진대로 다시 넣는 것이니까요. 하지만 서로 다른 언어에서 같은 데이터를 사용시에는 문제가 됩니다. 언어들마다 엔터의 처리가 다르기 때문이죠.

위에서 처럼 \r\n 으로 엔터키를 처리하는 경우도 있고, \r 만으로도, \n 만으로도 처리하는 경우가 있습니다. 만약 \r\n으로 엔터를 처리하는 시스템에서 만들어 놓은 문자열을 TextArea 에 대입하면 어떻게 될까요? "텍스트\r\n입력" 이라고 TextArea의 text 속성에 넣으면 아래와 같은 현상이 발생합니다.


위에서 보시는 것 처럼 \r\n 둘다 엔터키로 인식되네요.

참고로 말씀드리자면 MXML 상에서 위의 이스케이스 문자를 인식시키실때는 아래와 같이 하시면 됩니다.


아무튼, 저는 이와 같은 문제를 자바로 구성된 서버를 이용하면서 겪게 되었습니다. 해당 서버를 이용하는 또다른 쪽이 델파이로 구성되어 있는데, 델파이에서는 \r\n 으로 엔터키를 표현하는데, 플렉스에서 받아오니 엔터가 2번 입력되는 것 처럼 보이는 것은 물론 Flex 쪽에서 생성한 문자열은 델파이에서 엔터키가 없는 상태로 출력되는 것이었습니다.
물론 더 좋은 방법들이 있을꺼라 생각되지만, 저는 플렉스쪽에서 변환해서 쓰고 저장시에도 변환해서 보내기로 결정을 했습니다.
그래서 아래와 같은 코드를 구현하였습니다.



네이밍이 좀 별로네요.. ;;
엔터키의 처리가 다르다는 것을 알아두시면 좋겠네요. ;)


ps. Flash Player 10 이 공개된 이후 FP10 이 설치된 브라우저에서 이전 포스트의 swf 파일을 로드하지 못하는 경우가 생기네요.
정확하게 이유는 모르겠습니다. 티스토리 포럼에 같은 내용의 버그신고가 이어지고 있는데, 자세히 알아봐야겠습니다.

신고
Creative Commons License
Creative Commons License
Favicon of http://minsangk.com BlogIcon 민상k | 2008.12.08 02:11 신고 | PERMALINK | EDIT/DEL | REPLY
예전에 asp.net 과 연동하면서 저거 때문에 골치가 좀 아팠는데, \r 을 그냥 리턴으로 인식하는 것이었군요. 당시의 저도 안 되는 정규식 실력으로 힘겹게 깨작이던 기억이 나네요. 저런 함수 하나 만들어 놓으면 편하게 쓸 걸 그랬군요; 연동하는 언어가 동일하다면 change 이벤트 핸들러에 같이 물려 놔도 좋을 것 같습니다.

좋은 정보 감사합니다.

ps: 이제 RSS 로 들어와도 바로 글이 걸리네요? 예전엔 올블 배너 같은 것이 떴었거든요 -.-.-
ps 하나더: 코드 컬러 마스킹 해주는 녀석은 플러그인인가요?;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.08 11:37 신고 | PERMALINK | EDIT/DEL
올블 배너가 떴던가요? ^^;; 왜 떴지. .ㅎㅎ
코드 출력해주는 것은 구글에 있는 syntaxhightlighter 를 사용했습니다.
열이아빠님의 http://koko8829.tistory.com/305 글 참고하시면 좋겠네요 ^^
Favicon of http://adnaru.tistory.com BlogIcon 희희덕 | 2008.12.11 01:49 신고 | PERMALINK | EDIT/DEL | REPLY
이야.. ㅎㅎ 멋진 정보 감사합니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.14 18:00 신고 | PERMALINK | EDIT/DEL
방문 감사합니다 ;)
Favicon of http://cafe.naver.com/codestudy BlogIcon 이정칠 | 2008.12.11 08:26 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 정보 감사합니다. ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.14 18:00 신고 | PERMALINK | EDIT/DEL
오우~ 형님 여기까지 방문해주시고 감사합니다.;)
서비짱 | 2008.12.12 13:10 신고 | PERMALINK | EDIT/DEL | REPLY
검쉰님 블로그에 첨온건가....^^
몰랐네요.. 좋은정보들이 많네요...
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.14 18:00 신고 | PERMALINK | EDIT/DEL
^^ 자주 방문해주세요 ㅎ
Favicon of http://egg.pe.kr BlogIcon egg | 2008.12.14 20:00 신고 | PERMALINK | EDIT/DEL | REPLY
아이팟 터치 2세대...
그것도 여친님이...
ㅡㅠ 부럽습니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.15 10:34 신고 | PERMALINK | EDIT/DEL
저는 카메라를 사줬... ㅋ
Favicon of http://orochi77.egloos.com BlogIcon 꼬출든남자 | 2008.12.25 02:19 신고 | PERMALINK | EDIT/DEL | REPLY
첨부파일로 첨부한 플래시 파일을 FP10에서 로드를 못하게 되는 경우가 있죠..
네이버의 게시판들도 유사한 문제가 있는데 그게 HTTPHeader에서 attach 머시기 하는 값과 관련이 있다고 합니다.
헤더 정보에 그 값이 있으면 FP10에서는 SWF를 다운로드 할 파일로 인식을 하여 플레이어에서 반사시킨다는..
어도비 테크노트에 있는것 같던데요.. (자세한건 저도 회사 가서 찾아봐야 할 듯 합니다)

ps. 게릴라군이랑 지금 같이 근무하시나요?? ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.25 15:21 신고 | PERMALINK | EDIT/DEL
아하 그렇군요 ;) 찾아보겠습니다. ;)
티스토리 사용중이라 원인을 안다해도 제가 할 수 있는 건 없겠군요 ^^;;;

게릴라님이랑 같이 근무는 아니고요.
온라인에서 쭉 알다가 얼마전에 오프라인에서 실제로 만나뵈었어요 ㅎㅎ
담에 꼬출든남자님도 함께 뵈었으면 좋겠네요~ ^^;
Favicon of http://orochi77.egloos.com BlogIcon 꼬출든남자 | 2009.01.16 00:33 신고 | PERMALINK | EDIT/DEL
http://www.adobeflex.co.kr/iwt/board/board.php?tn=pds_tech&id=213&mode=view
여기에서

어떤 HTTP 서버들은 다음과 같은 응답 헤더를 보내기도 한다:



Content-Disposition: attachment


이 내용이 관련있을것 같아요
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.16 10:16 신고 | PERMALINK | EDIT/DEL
저도 살펴봤는데 이거 뭐 제가 어떻게 할 수 있는 문제가 아니더군요..;;
티스토리 언제 고쳐줄래나.;;
미유 | 2009.01.07 15:50 신고 | PERMALINK | EDIT/DEL | REPLY
리눅스에 쓰는과정에서 한참 고생했는데 정말 감사합니다~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.08 23:41 신고 | PERMALINK | EDIT/DEL
도움이 되셨다니 정말 다행입니다. ;)
좋은 하루되세요~
Favicon of http://blog.naver.com/gohappy81 BlogIcon Douglas9 | 2009.01.16 11:39 신고 | PERMALINK | EDIT/DEL | REPLY
오 좋은 정보 감사드려요^^
그리고 꼬출든남자 형님 회사에서 조용하시더니 여기 계셨군요 -0-
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.16 11:51 신고 | PERMALINK | EDIT/DEL
방문 감사드립니다. ;)
트랙백은 더더욱 감사드립니다. ;)
장문영 | 2009.01.20 11:21 신고 | PERMALINK | EDIT/DEL | REPLY
Air에서는 파일을 읽어서 "\r\n"으로 열심히 파싱하는데도 불구하고 안되었는데 "\n"으로 해결함 -_-; Air에서는 enter값이 \n인가요?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.20 17:04 신고 | PERMALINK | EDIT/DEL
FlashPlayer이건 AIR 위에서 이건 간에 TextArea에서 사용자가 입력한 문자열의 개행은 \r로 처리합니다.
본문에서 있다싶이 \n도 개행으로 처리하기도 합니다.

질문으로 유추해보건데 파일을 읽으셨다니 파일에 있는 문자열에 \r\n이 동시에 사용되었을 경우에는 \r 하나만 사용하도록 변경해서 TextArea에 올려주는 것이 필요합니다.
아마도 거꾸로 작업하신듯 싶네요. ^^
퍼플린 | 2009.06.15 17:09 신고 | PERMALINK | EDIT/DEL | REPLY
움.. 나도 똑같은 내용을 블로그에 썼었는데 여기도 있넹 ㅎㅎ

플레시쪽 작업하면서 똑같은 문제가 나와서 고민했던적이 -ㅅ-;;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.06.15 18:31 신고 | PERMALINK | EDIT/DEL
다들 비슷한 문제를 겪는데 공유가 안되니 계속 삽질만... ㅋ
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.11.07 17:38
안녕하세요! 검쉰입니다.

요즘 전혀 블로그에 글을 못쓰고 있습니다. 반성중이예요. ㅜㅜ
회사에서 하고 있는 프로젝트가 이제 막바지에 들어서면서 요구사항도 수정되고 정신이 없네요 ;-( 아마도 12월까지는 쭈욱~ 바쁠듯 합니다. 그래도 이제 좀 한숨 돌렸습니다. 게다가 덕분에 여러분께 알려드릴만한 것들을 또 알게되었네요.  좋은 글꺼리가 생겼습니다.

요즘은
Flex4U 라는 카페에서 ActionScript 3.0 강좌를 진행하고 있습니다.
지난달 10월 28일부터 매주 화,목 밤 11시에 저와 영구기님이 각자 화, 목에 강좌를 진행하고 있답니다.
교재는 ActionScript 3.0 Programming 을 사용하고, 영구기님은 Display,  저는 Non-Display 강의를 맡고 있어요. 
가끔 대타로 공룡님께서 해주시기로 했고요. ;)
이제 2주째 강의가 진행되었는데, 생각보다 준비해야 될 것이 많네요.
몸이 피곤한 날은 무슨 말한건지도 잘 모르겠고 ^^
강의 들어주시는 분들이 이쁘게 봐주셔서 재미있게 강의 중입니다.

관심있는 모든 분들이 다 들으셨으면 좋겠습니다만, 서버 최대 접속자 문제로 모든 분이 참여하실 수는 없고, 대신 아프리카로 동일시간에 중계중이니 관심있으신 분은 카페에 가입하셔서 접속 관련 정보 얻으셔서 같이 들으시면 좋겠습니다. ;) 이전 강의와 마찬가지로 현재 강의도 동영상으로 녹화하고 있으니 참고해보시는 것도 좋겠어요. (물론 일정 시간 후에 공개됩니다. ㅎ)

강좌때문에 고생해주시는 많은 분들이 계십니다.
  • 우선 이런 강좌를 계획하시고 진행해주시며 고생하시는 공룡(유성용)
  • 항상 뒤에서 버팀목이 되시며 매번 늦은 시간까지 강좌 동영상 편집하여 주시는 그날(이정칠)
  • 강의 프로그램을 짜주신 류(류종택)
  • 같이 강의하신다고 고생 많으신 영구기(원영국)(결혼축하드려요!! - 내일 부산에서 결혼하신답니다-)
  • 신입이라 바쁘실텐데, 매번 늦은 시간까지 동영상 녹화 백업해주시는 밥사마(박영관)
  • 여타 다른 많은 수강생 여러분 들~
좋은 분들 많이 알게되어 정말 영광입니다. ;) 앞으로도 잘 부탁드려요!


이건 잡담입니다만,
제 노트북 문제로 집에서 강의진행이 불가하여, 이정칠님 회사에서 강의를 매주 하고 있답니다.
매주 나가는 택시비가 아까워 자전거를 한대 사려고 하는데, 옆에 있는 스트라이다(Strida)라는 녀석이 맘에 들더군요. 그런데 가격이 가격인지라...;

접이식이 꼭 필요(골목많은 동네에 사는 처지라, 집안에 들여놓지 않으면 잃어버리기 쉽상)해서 찾던 도중에 찾은건데, 너무 비싸요.. ㄷㄷ 누구 저한테 중고라도 파실 분~~ ㅋ
아니면 유사한 것들이라도 사야되나... (가격이 절반쯤 하더군요 ㅋ)
다른 자전거도 봤는데, 눈에 들어오는 것들은 엄청 비싸더군요.....
브롬튼(brompton) 이라는 것은  더 비싸더란....;

아무튼 이런 것에도 고민중입니다. ㅎㅎ



회사 프로젝트와 강좌, 기타 제가 스스로 계획한 일들 떄문에 몸도 마음도 힘듭니다만, 그래도 열심히 해야겠죠?
다들 좋은 주말 보내시고(저는 좀 쉬고), 곧 좋은 포스트으로 찾아뵙겠습니다. ;) 
신고
Creative Commons License
Creative Commons License
눈송이 | 2008.11.08 07:26 신고 | PERMALINK | EDIT/DEL | REPLY
와~ 비쌀만 하네요~^^
무게 10kg.. 체인이 아닌 강화 고무벤드 같은... 기름칠 할 필요없고..
무지 끌리네요~ㅎㅎ
오도바이 타는데 팔구 전기 자전거 살까 생각중이었는데^^
갑자기 더 고민된다는..ㅎㅎ

강좌 감사히 잘 듣고 있습니다~ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.10 23:41 신고 | PERMALINK | EDIT/DEL
날씨도 추워지는데 샀다가 타지않을 듯 하여 더더욱 고민중입니다.. ;;
Favicon of http://egg.pe.kr BlogIcon egg | 2008.11.08 09:13 신고 | PERMALINK | EDIT/DEL | REPLY
앗. 검쉰님 잘 지내고 계셨나요. ^^
정말 요즘 포스팅이 없으셔서 무척 바쁘시구나 하고 있었는데.
강좌도 하시고. ^^
여튼 주말 즐겁게 보내시고 감기 조심하세요. ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.10 23:41 신고 | PERMALINK | EDIT/DEL
egg님도 감기조심하세요! ^^
언제 한번 신촌 놀러가야되는데 말이죠 ㅎ
Favicon of http://notepad.tistory.com BlogIcon 메모장 | 2008.11.10 10:08 신고 | PERMALINK | EDIT/DEL | REPLY
헉~ 검쉰님
검쉰님과 잘 안 어울리는 사이즈 같다는 생각이;;
너무 노여워는 마세요 ㅋㄷㅋㄷ;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.10 23:42 신고 | PERMALINK | EDIT/DEL
시끄러워요.. ㅋㅋㅋ
Favicon of http://www.jinhokim.com BlogIcon 찌노 | 2008.11.10 10:49 신고 | PERMALINK | EDIT/DEL | REPLY
스트라이다 와방 비싸죵..;
저도 사려다가 3천리에서 비슷한거 이지바이크라고 그넘타는데..; 단, 기어가 없어서 오르막은 초인의 다리힘이 필요하다는거 ;;;;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.10 23:42 신고 | PERMALINK | EDIT/DEL
이지스트라는 넘을 살려다가 아직도 고민중;
Favicon of http://adnaru.tistory.com BlogIcon 희희덕 | 2008.11.11 00:37 신고 | PERMALINK | EDIT/DEL | REPLY
흐악~ 이게 얼마만에 보는 검쉰님의 새 포스트에요 ㅋㅋㅋ
언제 한번 밥같이 먹어요 ㅜㅜ! 저 배많이 고픕니다 ㅋㅋ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.11 19:30 신고 | PERMALINK | EDIT/DEL
네~ 많이 배고프시다니 양많은 곳으로 가야겠군요 :)
언제가 좋을까나.. ㅎㅎ
Favicon of http://7zelkova.tistory.com BlogIcon 성주 | 2008.11.11 11:31 신고 | PERMALINK | EDIT/DEL | REPLY
형님. 스트라이다는 180이상 장신들에게는 금기시되는 자전거에요.
오래타면 허리와 무릎에 무리가 옵니다.
무엇보다 뒤에서 보면 웃겨요
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.11 19:31 신고 | PERMALINK | EDIT/DEL
ㅜㅜ
웃길라나요?
Favicon of http://shinlucky.tistory.com BlogIcon shinlucky | 2008.11.27 17:53 신고 | PERMALINK | EDIT/DEL | REPLY
글들 잘 보고 갑니다^^~!
전문적 자료들이 많아 볼게 많네요.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.02 01:16 신고 | PERMALINK | EDIT/DEL
방문 감사드립니다 ;)
종종 놀러와주세요 ㅎ
Favicon of http://chanik.com BlogIcon 찬익 | 2008.12.03 14:44 신고 | PERMALINK | EDIT/DEL | REPLY
ㅎㅎ 고생하는구나
언능 렙업해서 같이 파티하자 ㅋㅋ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.06 23:12 신고 | PERMALINK | EDIT/DEL
파티 맺으면 계속 계속 나한테 힐줘야될듯. ㅋㅋ
서비짱 | 2008.12.12 13:14 신고 | PERMALINK | EDIT/DEL | REPLY
강의하시느라 늘 고생이 많아요~~^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.14 18:00 신고 | PERMALINK | EDIT/DEL
서비짱님도 곧.... ㅎㅎ
Favicon of http://thismoments.tistory.com BlogIcon isili | 2008.12.22 08:55 신고 | PERMALINK | EDIT/DEL | REPLY
안녕하세요. 좋은 글 잘 보고 있습니다 ^^
많은 참고가 되고 있습니다.ㅋ

아 그리고 ㅋ 저도 스트라이다에 관심이 많거든요 -0-;;ㅋ
친구들이 타고 다녀서 저도 살까했는데.. 가격이.. -_-;;

중국제 스트라이다도 있긴한데(엄청 싸더라구요) 근데 좀 위험하다고 하더라구요...

그래서 =_= 중고로 알아보고 있습니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.23 00:15 신고 | PERMALINK | EDIT/DEL
실타래쪽 분이신듯 ;)
스트라이다 결국 안샀습니다. 날씨가 추워져서 못타고 다니겠더라고요 ㅋㅋ
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.09.28 22:30
단도직입적으로 말씀드리자면, new 키워드는 비용이 비쌉니다. 많은 리소스를 사용하게 된다는 말이죠. 물론 안쓸 수야 없죠. 새로운 객체를 생성하려면, 당연히 써야됩니다. 하지만, 사용하게 되면 그만큼의 연산과 메모리의 차지는 어쩔 수가 없습니다. 이런 문제들로 인해 좀 더 효율적인 객체의 사용을 위해 객체 풀(Object Pool) 을 구성하여 사용한다던가 하는 방법을 고민하게 되죠.
본 포스트에서는 객체 풀에 대해서 설명하지는 않겠습니다. 위에 링크로 걸어놓은 영구기님의 포스트를 참고하시도록 하시고요, 이번 포스트에서 제가 설명하고자 하는 것은 new 키워드를 사용하지 않고서도 사용할 수 있는 타입들에 대한 사용방법입니다.

데이터형태는 아래와 같이 2가지의 데이터형이 존재합니다.

Primitive Data Type : Boolean, int, uint, Null, Number, String, void
Complex Data Type : Object, Array, Date, Error, Function, RegExp, XML, XMLList


기본적인 데이터 형태(Primitive Date Type)의 변수선언시에는 물론 new 키워드는 사용하지 않습니다. 하지만 사용하지 못한다는 것은 아닙니다.
문자열을 저장할 때에 String 를 사용하게 됩니다. 이 String 형 변수는 다음과 같이 선언하게 됩니다.

하지만 아래와 같이 new String() 이라고 할 수도 있습니다.

int, uint, Number, Boolean 도 마찬가지로 new 키워드를 이용하여 변수에 할당해줄 수 있습니다. 허나 그렇게 사용하지는 마십시오. 기본적인 데이터 형태의 변수는 new 키워드를 사용하지 않아도 메모리가 할당되게 됩니다. 게다가 더 빠르고 간편합니다.

그래도 확인하고 넘어가는 차원에서 Number 형태의 변수의 할당에 대해 살짝 실험해보도록 하겠습니다. 아래의 코드를 보시면 Number 변수를 할당시에 new Number()를 사용하는 것과 직접 값을 입력하는 것에 대해서 속도를 비교해보고 있습니다. new 키워드를 사용하지 않는 것이 더 간편합니다. 그 아래에는 실제 결과물입니다. 테스트 버튼을 클릭하셔서 테스트 해보시기 바랍니다.







그렇다면 보다 복잡한 데이터 형태(Complex Data Type)의 변수를 선언시에는 new 키워드를 어떻게 쓰지 말라는 말일까요?
가장 먼저 많이 사용하는 Array에 대해서 말씀드려보겠습니다. 우선 Array를 선언시에 아래와 같이 선언할 수 있습니다.

이전 포스트에 살짝 언급하였습니다만, Array의 경우는 [] 를 이용하여 새로운 Array를 할당할 수 있습니다.

이와 비슷하게 Object를 할당할 때에도 new Object()  대신에 {} 를 이용하여 새로운 Object 할당이 가능합니다.
아래와 같은 선언을 다른 예제 소스코드에서 흔히 보셨을겁니다.

위에서 설명드린 것과 같이 Array 를 할당시에 [] 를 이용하고 Array 내부의 값을 {}를 이용하여 Object 형태로 정의하였습니다.
만약 [], {} 없이 선언하려고 한다면 아래와 같이 하여야할 것입니다. (물론 이렇게 사용할 일은 거의 없죠. 매우 극단적인 예랄까요? )


RegExp 같은 경우도 new 키워드를 사용하지 않고 선언 가능합니다.


XML 도 마찬가지입니다. 아래와 같이 흔히 사용하시고 있죠?
2번째 라인에 있는 것처럼 사용하실 일은 없을 듯합니다. 물론 String 형태의 XML 데이터라면 XML 로 변환하려면 2번째 라인처럼 해야겠죠.


마지막으로 위에서 말씀드린 Array와 Object 의 new 키워드 사용 유무에 대한 속도차 테스트를 해보고 마무리 짓겠습니다.
(RegExp 는 속도차가 거의 없어서 생략하였고,  XML은 쓸일이 없을 것 같아 생략하였습니다. ㅎ)

아래는 Array를 테스트한 코드입니다.

아래는 Object를 테스트한 코드입니다.




뭐 결론은 new Array() 대신에 [], new Object() 대신에 {} 를 사용하자는 것입니다. ;)
긴 글 읽어주셔서 감사합니다. ;) 다 읽으신 후에는 덧글 하나 써주시는 센스!!

참고자료 :
객체 풀[Object pool]을 이용해 보자.  - 영구기님 블로그
ActionScript3.0 너는 누구냐? - 엄진영님 Flex 챔피언 블로그

신고
Creative Commons License
Creative Commons License
Favicon of http://wooyaggo.tistory.com BlogIcon 우야꼬  | 2008.09.29 09:45 신고 | PERMALINK | EDIT/DEL | REPLY
Best Practice에서도 new 보다는 [] 나 {} 를 쓰라고 나와있더라구요.
좋은 내용 ㄳ~
(인액션 책에 추천사 넣으셨더라구요~ ㅋㅋ 서점가서 보고 왔는데 많이 듣던 이름이여서 내심 반가웠다능~)
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 13:12 신고 | PERMALINK | EDIT/DEL
제가 쓴 서평은 짤렸.. .ㅋ
매번 방문해주셔서 감사합니다. ;)
신준섭 | 2008.09.29 10:01 신고 | PERMALINK | EDIT/DEL | REPLY
항상 좋은 자료 잘보고갑니당.^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 13:12 신고 | PERMALINK | EDIT/DEL
네~ 좋은 하루 되세요~ ;)
Favicon of http://lovedev.tistory.com BlogIcon lovedev | 2008.09.29 11:01 신고 | PERMALINK | EDIT/DEL | REPLY
ObjectPool을 잘 사용하면 필시 좋은 건 사실입니다.
다만 GC에 대한 고민이 있어야 겠죠. GC관리를 풀관리자가 잘 해주면 관계는 없겠지만..
Java에서도 ObjectPool은 신중하게 사용되어야 한다고 논의 되고 있습니다.
때론 메모리에서 인스턴스화를 하지 않은 상태로 객체를 가지고 있는 자체가 문제가 될 때가 있습니다..그 상태야 말로 GC를 할 수도 없는
메모리 할당만 받고 있는 누수의 원인이 되기 때문입니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 13:13 신고 | PERMALINK | EDIT/DEL
매번 좋은 말씀 감사합니다. ;)
저도 ObjectPool 은 실제로 개발시에는 사용해본 적은 없네요 ^^;
보다 좋은 방법들이 고려되고 나타나기를 기대합니다 ;)
Favicon of http://bnufactory.com/ BlogIcon BNU | 2008.09.29 16:35 신고 | PERMALINK | EDIT/DEL | REPLY
자바스크립트에서도 Flex에서처럼 큰 폭은 아니지만 [], {}가 좀 더 빠르네요.
좋은 정보 감사합니다. :)
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 19:20 신고 | PERMALINK | EDIT/DEL
아무래도 리터럴이니까요 ;)
좋은 정보 되셨다니 기분 좋습니다 ㅎ
Favicon of http://www.jinhokim.com BlogIcon 찌노 | 2008.09.29 16:59 신고 | PERMALINK | EDIT/DEL | REPLY
무의식적으로 Array 선언시 [] 를 사용하고 있었는데 더 좋은방법이라니.. 왠지 모를 뿌듯함이.. ㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 19:21 신고 | PERMALINK | EDIT/DEL
좋은 습관!! ㅎㅎ
Favicon of http://2rang.tistory.com BlogIcon 꽃녀 | 2008.09.30 00:09 신고 | PERMALINK | EDIT/DEL | REPLY
항상 연구하시는 쉰님..
자알~ 배우고 갑니당 ^^
new가 뽀대가 나긴 한데 ㅎㅎ
내일 보면 쌩까지 마셈~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.30 09:40 신고 | PERMALINK | EDIT/DEL
오늘이군요!! ;)
좀 있다 뵙겠습니다 ㅎㅎ
Favicon of http://okgosu.tistory.com BlogIcon okgosu | 2008.09.30 01:19 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 정보 잘 보고 갑니다...
담에 세미나 있으면 발표 의뢰해야겠습니다...^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.30 09:40 신고 | PERMALINK | EDIT/DEL
영광이죠! ;)
찾아주셔서 감사합니다 ㅎ
Favicon of http://blog.jidolstar.com BlogIcon 지돌스타 | 2008.09.30 10:19 신고 | PERMALINK | EDIT/DEL | REPLY
멋진 글입니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.10.01 12:52 신고 | PERMALINK | EDIT/DEL
지돌스타님이 더 멋지시면서! ㅋ
차차 | 2008.10.09 09:58 신고 | PERMALINK | EDIT/DEL | REPLY
좋은내용 감사해요.
센스있어 보이려고 덧글 남겨요ㅋㅋ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.10.09 13:32 신고 | PERMALINK | EDIT/DEL
센스 만점이신데요! ^-^
연월태생 | 2008.10.09 16:57 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 글이에요~
코딩 습관을 바꾸던지 해야 할듯하네요 ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.10.13 10:00 신고 | PERMALINK | EDIT/DEL
좋은 쪽으로 바꾸는 것이니 즐거운 마음으로 ㅎㅎ
수채화 | 2008.11.05 11:02 신고 | PERMALINK | EDIT/DEL | REPLY
좋은글 잘보고갑니다~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.07 16:58 신고 | PERMALINK | EDIT/DEL
방문 감사드려요~ :)
덧글은 더 감사드립니다 ㅎ
Favicon of http://orochi77.egloos.com BlogIcon 꼬출든남자 | 2008.11.12 00:47 신고 | PERMALINK | EDIT/DEL | REPLY
아.. 정말 주옥같은 내용들이에요..
검쉰님 포스트 주욱 보고 공부해야게써요~ ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.13 18:27 신고 | PERMALINK | EDIT/DEL
칭찬 감사합니다. ;)
Favicon of http://shinlucky.tistory.com BlogIcon shinlucky | 2008.11.27 17:54 신고 | PERMALINK | EDIT/DEL | REPLY
이거 플래쉬 viewer 10으로 바뀌면서 티스토리내에 올린 파일들은 안보이는거죠?
(다른 계정에서 링크한건 보이던데...)

안보임 ㅠ.ㅜ;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.02 01:17 신고 | PERMALINK | EDIT/DEL
제 회사 컴에 10이 설치되어 있는데 제대로 나옵니다 ^^;
뭔가 다른 문제인듯 싶네요;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.06 23:13 신고 | PERMALINK | EDIT/DEL
다시 확인해보니 10 설치후에 나타나는 문제인듯 싶군요;
한동안 바빠서 정신없다가 이제서야 문제점을 인식했습니다;
김병건 | 2008.12.03 13:02 신고 | PERMALINK | EDIT/DEL | REPLY
좋은정보 감사합니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.03 14:28 신고 | PERMALINK | EDIT/DEL
방문 감사드려요~ :)
도움이 되셨으면 좋겠네요 ㅎ
모험가 | 2008.12.23 18:37 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 글 잘 보고 갑니다~~ ㅋㅋㅋ 감사합니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.25 15:18 신고 | PERMALINK | EDIT/DEL
덧글감사합니다~ :)
Favicon of http://shallaazm.tistory.com BlogIcon shallaa | 2009.01.27 02:16 신고 | PERMALINK | EDIT/DEL | REPLY
저도 이제 기왕이면 싼거 애용해야 겠네요- ㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.28 10:34 신고 | PERMALINK | EDIT/DEL
방문 감사드려요~ :)
어쩔수 없이 비싼거 써야될때도 있겠죠? ㅎ
Favicon of http://7zelkova.tistory.com BlogIcon 성주 | 2009.04.29 10:51 신고 | PERMALINK | EDIT/DEL | REPLY
역시 형님 블로그랑 강민형님 블로그에 제가 원하는 자료들이 많아요
Favicon of http://www.iruis.net BlogIcon ☆~ | 2009.08.17 14:39 신고 | PERMALINK | EDIT/DEL | REPLY
Nunber나 String, RegExp같은 불변 객체는 new를 생략시엔 미리 생성 된 객체 또는 풀링을 이용하여 컴파일러 차원에서 값이 대입(결과적으로 new는 되지만 한번만)만 되도록 변형 되지만 Array라든지 Object, XML객체와 같은 값이 변하는 객체마저도 new를 않쓰는 경우 빨라진다는 것이 신기하네요. 값이 변하는 객체마저 속도가 빨라지는 근본적인 이유는 연구할만한 내용이네요.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.08.19 10:42 신고 | PERMALINK | EDIT/DEL
연구하셔서 내용을 공유해주시면 많은 분들께 도움이 될 것이라 믿습니다 ;)
OneLove | 2009.09.03 16:18 신고 | PERMALINK | EDIT/DEL
전역메서드를 사용함으로..빠르겠죠
array = new Array() Array 클래스를 이용
array = [] 전역메서드를 이용
자세한 내용은 여기를 참조해보세요
http://help.adobe.com/ko_KR/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f3f.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7f1b
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.09.01 01:07
사용자 삽입 이미지
일전에 소개해드렸던 'Adobe FLEX 3 실전 트레이닝 북' 의 뒤늦은 리뷰입니다. 예약판매 중이었던 것을 발견하고 예약을 하려고 했으니 여차저차한 사정에 의해서 예약을 하지 못해, 마냥 궁금해 하고만 있었습니다.
이 책의 원서인 'Adobe Flex 3 Training from the Source'의 flex 2 시절 책인 'Adobe Flex 2 Training from the Source'를 PDF로 사다가 Flex 공부를 시작했던게 제 첫 Flex 입문이었죠. 그 후로 옥상훈님의 '예제로 배우는 Adobe 플렉스'가 나와서 '한글이라서 좋구나~' 신나하며 읽었던 기억이 나네요. 한글로 된 서적이 없어서 안되는 영어로 구글님께 비나이다~ 비나이다~ 하며 찾아보곤 했었는데 말이죠.
그래서 이번 'Adobe FLEX 3 실전 트레이닝 북'에 대해서 상당히 기대가 컸습니다. (예약안한건 뭥미..-_-)  월급받으면 10% 넘는 돈이 책값으로 지불되는 상황이어서 그 당시 돈이 없었습니다; 사야지~ 하고 생각만 하고 있다가 한 몇주 까먹고 지내는 상황이...

하지만 또 지성이면 감천(그게 무슨 상관)이라고 책을 퍼낸 위키북스에서 선물로 책을 보내주셨습니다. ;) 정말 감사드립니다. (덕분에 돈을 아꼈습니다. ㅜㅜ 개발서 너무 비싸요.. 먹고 살기 힘들 지경-_-)

제가 책을 받기 전에 강컴에 강력한 서평이 올라왔었습니다. 한마디로 '번역이 형편없다' 라는 거죠. 저도 ㅎㄷㄷ 하고 있던 참에 책을 받았는데 '-keep-generated-액션스크립트'는 스티커로 수정되어 있더군요. 아마도 'ActionScript' 라고 적힌 것을 기계적으로 일괄 수정하다가 나타난 문제였던 것 같습니다.
실제 악플에 가까운 서평이 올라왔던 것과는 달리 제가 읽기에는 번역 자체의 퀄리티는 대부분 무리없이 읽을 수 있는 평이한 수준이었습니다. 책의 앞과 뒤쪽의 용어들의 번역들이 좀 일치하지 않는 느낌이더군요. 역자가 한분이 아니여서 그런 듯. (조금은 아쉬운 생각이 들긴 합니다만, 번역서 출간에 대해서 제가 알고 있는 바로는 번역에 대한 비난에 씁쓸한 웃음만 나오더군요. 번역비가 많이 나와서 부자가 되는 것도 아니고, 그렇다고 번역의 질이 어떻니 하며 신경만 곤두서고 말이죠. 참... 안타까웠습니다. 거의 자원봉사의 수준이라고 하던데 말이죠.번역하실 분들이면 원서 읽기도 무리가 없으실 분들이 자원봉사정신이 없으시다면 번역서가 나올리가..아쉬울 것 없으실 분들일텐데. 영어 한줄도 더듬거리며 해석 겨우 해내는 제가 이런말 하는게 좀 우습네요 ^^)
부분적으로 애매한 설명 같은 것은 수정을 좀 하셔서 차후에 다시 책을 찍을 때 반영이 되었으면 좋겠네요. 베타리더도 적극 도입하시면 좋겠습니다.

아무튼, 책 내용은 많은 분들이 말씀하신대로 참 좋습니다. Flex의 전체적인 것(레이아웃부터 FDS까지)을 설명하고 있기 때문에, 입문자에게 개념정리로써 상당히 도움이 될 듯합니다. 예전 Flex2 버전은 영어버전으로 공부했더니 이해를 잘못하고 있던 부분이 많았는데, 한글서적이라 참 좋네요 ㅎ Flex 3용으로 나오면서 추가된 여러가지 내용들도 참 쉽게 이해할 수 있었습니다.
좀 더 이미지가 많았으면 하는 생각도 했습니다. 텍스트로 서술되어 있는 경우가 많아 열심히 읽어야됩니다. ;)  조금 답답하다 할까요. 크게 문제될 부분은 아닙니다.
각각 실습시간이 나와있어서 또한 재미있습니다. 추후에 사내 Flex 관련 스터디가 진행된다면 이 책으로 하면 참 좋을듯.

제가 일전에 Flex ACE를 취득했는데, 이때도 참 달게 잘 보았습니다. 예를 들면 시험에 CSS부분에서 Type selector와 Class selector 에 대해서 나오는데, 처음보고는 이게 뭐지.. 하는 생각만 들더라고요. 용어가 너무 생소한 느낌이랄까요. 분명 개발할때 쓰고 있는데 말이죠. 그래서 저처럼 ACE를 취득하려고 준비하시는 분들께도 추천해드립니다. 꼭 한번 정독하시면 좋습니다. ;)

&lt;b&gt;Type selector와 Class selector가 뭔지 모르신다면 클릭.&lt;/b&gt;


AIR in Action번역서가 나올 예정이라고 합니다. 9월 안(아마도 추석 전후..)에 나온다고 하는데요. 기대 완전 하고 있습니다. ;)
사용자 삽입 이미지

표지가 나왔네요 ;)


저도 책 한권 써볼까 싶은 생각이 절로 납니다 ;)
신고
Creative Commons License
Creative Commons License
Favicon of http://blog.empas.com/chaniks BlogIcon 찬익 | 2008.09.01 02:05 신고 | PERMALINK | EDIT/DEL | REPLY
다 봤으면 이리로 토스.. ㅎㅎ
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.09.01 09:43 신고 | PERMALINK | EDIT/DEL
안봐도 다 알면서 ㅋㅋ
Favicon of http://koko8829.tistory.com BlogIcon 열이아빠 | 2008.09.01 10:14 신고 | PERMALINK | EDIT/DEL | REPLY
텍스트 서술은 실제 따라하면서 하게 되면
쉽게 이해할 수 있는데 그냥 읽기만 할때에는 무척 답답하죠.
아무래도 책의 용도가 따라하기니깐..
여기서 그림이 더 늘어났다면 아마 무기가 되지 않았을까 싶네요..ㅎㅎ
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.09.01 11:27 신고 | PERMALINK | EDIT/DEL
하긴 안그래도 무거운데 흉기가 될뻔 했네요.
Favicon of http://jpkim56.tistory.com BlogIcon 좀생이별 | 2008.09.01 11:13 신고 | PERMALINK | EDIT/DEL | REPLY
이것 참.. 저를 겨냥하신거 같으니 한마디 안 할 수가 없네요.

책으로 출판을 한다는건 이유가 어찌됐든 그만큼 큰 책임이 따라한다고 봅니다.

역자의 내부 사정을 알아야 할 필요도 없구요...
자원봉사 수준으로 했다고 하시면서 두둔하시는거 같은데...

돈을 하나도 안받고 했더라도, 그건 타당한 이유가 될 수 없습니다.

엄진영님처럼 이 책의 강의 동영상을 올려 다른사람이 참고하게 하는 방법...
그냥 몰래 번역(?)해서 PDF 로 배포하는 방법..

자원봉사면 이런 여러 방법도 있었습니다.

만약에 이렇게 한 거라면,
번역을 가지고 뭐라 하면 그건 정말 적반하장이겠죠.

그러나, 이건 이야기가 전혀 다릅니다.
싼 가격도 아닌데.. 그만큼의 퀄리티를 요구하는건 당연한 권리입니다.
이 책은 보면 번역을 대충했다는걸 바로 느낄수가 있을 정도이니 어이가 없는거죠.

-keep-generated-actionscript 이걸 기계적으로 변환해서 생긴 오류라고 하는데..
오류야 그렇게 생겼겠지요.. 그렇지만 번역을 신경써서 했다면 이런건 번역할때 바로 발견 할 수 있는겁니다.
최소한, 번역할 때 문장 한번이상씩은 검토를 할 테니 말이죠.

용어를 번역을 해서 써야 할지 그냥 원문 그대로 써야 할지.. 과연 이런 고민을 했는지도 의심이 듭니다.
몇가지 예를 들어보죠..

"옅은 사이안..."
처음에 사이안이라길래 도대체 뭔가 했습니다. 오타일까 이런 생각으로 뭘 쓰려고 한건지 생각을 하게 되고...
결국 유추해보니 cyan 이더군요.. 첵에는 cyan 이라고 언급도 안되어 있죠. 검색해보시면 아시겠지만 청색입니다.. 415쪽입니다.

"이 이벤트를 위한 EComm.mxml 애플리케이션은 리슨(listen)을 가지고 있을 뿐..."
도대체 누가 리슨을 가지고 있다고 합니까? 이벤트 핸들러나 이벤트 리스너도 아니고 말이죠.. 247 쪽입니다.

"어플리케이션을 디버그 한다"
디버그 하라고 이렇게 써놓은게 아니라, 어플리케이션을 디버그 모드로 실행 하라는걸 이렇게 써놨습니다.
이건 의미 전달이 완전히 다르다는걸 알고 계실껍니다.

"베스트 프렉티스"
이건 이렇게까지 써서 번역할꺼리가 되질 않습니다. Flex 랑 전혀 관계없는 용어니깐요.
그냥 대충 문맥 상황에 맞춰서 의역하면 될 용어입니다.

일일히 예를 들기에도 워낙 많기 때문에.. 이쯤합니다.
이런데도 번역이 평이하다고 하시니... 참... 저는 나름대로 책 많이 보는편이라고 생각합니다만...;;

참고로 저는 악플러 아닙니다.
강컴에 서평올린것도 그게 처음입니다... 이건 그냥 두고볼일이 아니라고 생각해서 썼습니다.

역자가 책을 번역하면서 과연...
http://blog.insightbook.co.kr/84

이와 같은 생각을 했을까요? 어떻게 생각하십니까?
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.09.01 11:57 신고 | PERMALINK | EDIT/DEL
제가 쓸때없는 말을 적은 것 같군요.

적어주신 오기(?) 관련은 위키북스 측으로 전달하셔서 다음 쇄에서는 수정하도록 하는게 좋을 것 같습니다.
전 한글서적이 나오는 것만 해도 대단한 것이라 생각하였는데, 좀생이별님께서는 저보다 안목이 높으신 것 같습니다.

제가 읽기에 번역이 평이하다 라고 생각한건 순전히 제 생각입니다. 안좋은 번역만 쭉 적어주셨는데, 대부분은 읽을만 하더라고요. 제 생각을 가지고 뭐라하시면 안될 것 같고요(생각이 다른 것이지 틀린건 아니라고 봅니다), 예전에 개발자가 아닌 분들이 번역하셔서 이상한 번역용어가 남발되었던 책만 제가 봐서 그런거 같습니다. 제가 대충 읽었을지도, 아님 눈이 좀 이상한지도...

그리고 실제 번역작업이라는 것이 자원봉사하는 그런 일임은 사실입니다. 업계에 도움이 되고자 하는 마음이 아니고서야... (돈때문이었다면 차라리 그시간에 알바 몇 개 뛰는게 낫죠.) 그런 고귀(?)한 마음을 '최악' 이라는 말로 걷어차시니 그게 좀 마음이 아팠습니다.

이런 논쟁으로 인해서 위키북스 측에서는 보다 신경써서 책을 펴낼 수 있을꺼라 믿고 이만 줄이겠습니다.

ps. 혹시나 해서 적는 것입니다만, 저는 위키북스와 역자분들과 아무런 이해관계(일면식도...)가 없습니다.
Favicon of http://blog.naver.com/eirene78 BlogIcon 에이레네 | 2008.09.01 11:51 신고 | PERMALINK | EDIT/DEL | REPLY
AIR 인 액션 짤방 광고 감사드립니다 ㅋㅋㅋ
책 나오면 어떻게 싸인이라도 해서 드리던가 하께요 ㅋㅋㅋ
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.09.01 11:52 신고 | PERMALINK | EDIT/DEL
와우~ 사인회 꼭 하세요 ㅋㅋ
Favicon of http://ironcpa.tistory.com BlogIcon ironcpa | 2008.09.01 15:34 신고 | PERMALINK | EDIT/DEL | REPLY
번역서의 평가에서는 내용만큼이나 번역의 수준이 중요하다고 봅니다. 번역서의 구매자 중에는 원서를 읽다가 속독을 위해 구매하는 사람도 있기 때문에 더욱 그러합니다. 책을 읽어본 바로는 분명 번역의 오탈자가 지적될 수준이며 전체적인 번역체의 수준도 어색한 사실 입니다. 목적에 따라서는 지불한 돈값을 전혀 못하고 있음입니다. 전 역자보다는 출판사의 문제를 더 지적하고 싶습니다. 서둘러 출간하기 위해 검토를 하지 않은것이 명백해 보이니까요. 번역의 질에 대한 평가는 다를 수 있다고 하지만 이건 좀 아니지 싶었습니다.
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.09.01 15:51 신고 | PERMALINK | EDIT/DEL
저는 책의 내용에 관해서 좋은 책이다.. 라고 의견을 피력한 것인데, 많은 분들이 번역서이므로 번역에 대한 평가를 내리시려고 하시는 군요. 제가 번역에 대해서 왈가왈부할 정도의 능력이 되지 않으므로 제가 의도적으로 평가를 못내리는 것일 수도....
저와 다른 생각을 가진 다양한 분들이 많다는 것을 다시금 느끼면서, 다양한 시선들이 모여서 좋은 결과를 내어주리라 기대해봅니다.
찌노 | 2008.09.02 15:17 신고 | PERMALINK | EDIT/DEL | REPLY
에어 기대되는데요? 저 책은 구씨한테서 뺏어다가 볼까나요 ㅎㅎ
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.09.02 16:09 신고 | PERMALINK | EDIT/DEL
전반적인 개념잡기에 최적의 서적인듯 합니다.
꼭 한번 보세요 ㅎ
Favicon of http://2rsng.tistory.com BlogIcon 꽃녀 | 2008.09.05 10:45 신고 | PERMALINK | EDIT/DEL | REPLY
검쉰님 때문에 이 책을 보고 있는데..
저도 올렁증이 심한편이라서 그런지.. 번역에 대한 이모저모가 보이질 않더군요..ㅜㅜ
단지, 책을 빨리 봐야한다는 강박관념만이...ㅋ
오랜만에 들르네요..요즘 정신이 너무 없어요..
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.09.05 11:38 신고 | PERMALINK | EDIT/DEL
네~ 오랫만이네요 ;)
저도 요즘 바빠서 포스팅을 통 못하고 있어요 ㅎㅎ
감기 걸리기 딱 좋은 날씨네요, 감기 조심하세요 ㅎ
장창학 | 2008.09.07 15:09 신고 | PERMALINK | EDIT/DEL | REPLY
역시 원서는 원서로 봐야하나?? 이래서 제가 CF관련서 번역을 망설이고 있는데.. ㅠㅠ; 대빵 욕먹을까봐.. 100권 찍어놨는데 인터넷/오프라인 판매합계 3권.. 지인에게 돌리는 용으로 10여권.. 나머지 곧바로 소각장 신세를 면치못할 것도 걱정... ㅠㅠ;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.07 23:07 신고 | PERMALINK | EDIT/DEL
저처럼 영어 못하는 분이 아니시라면 원서 읽으시는게 정신건강에 도움이 되실지도 ㅎㅎ
그나저나 무슨 책을 번역하신거예요? ㅎㅎ
저도 한권 ㅎㅎㅎ
Favicon of http://blog.naver.com/lp7176 BlogIcon 이광우 | 2008.09.08 11:22 신고 | PERMALINK | EDIT/DEL | REPLY
검쉰님의 리뷰를 보고 번역 수준을 짐작 할 만 합니다. 참 번역이란게 어렵죠.... 같은 단어라도 뜻이 많은 동사들의 경우에는 정말 문맥이 완전히 엉뚱한 방향응로 번역이 될 수 있을 테니까요... 뭐 그래도 번역기 돌린거 보단 낫다고 하면 살만 한 가치는 있을 듯합니다. (가격만 낮춘다면요...ㅎ) 번역서는 어지간하면 원문이랑 비교하며 읽어보는게 좋다는...암튼 검쉰님 리뷰 잘 보고 큰 도움이 되었습니다~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.08 13:23 신고 | PERMALINK | EDIT/DEL
도움이 되셨다니 다행입니다. ;)
이 포스트때문에 참 많은 생각을 했답니다. ㅎㅎ
ㅇㅇ | 2008.09.08 20:32 신고 | PERMALINK | EDIT/DEL | REPLY
검쉰오빠 http://cafe.naver.com/flexcomponent/12207
이거좀...........
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.08 23:54 신고 | PERMALINK | EDIT/DEL
아.. 토나와.. ㅡㅡ
htm 에서 파라미터 가지고 못 다니니 htm 도 내부적으로 jsp 구분을 이용하던지 hidden 필드로 원하는 파라미터 가지고 있도록 처리하는 수밖에...
Favicon of http://okgosu.tistory.com BlogIcon okgosu | 2008.09.09 01:01 신고 | PERMALINK | EDIT/DEL | REPLY
ACE시험 한글 번역은 어떻던가요...? 제가 번역 감수했는데... 영어와 우리 나라 문장 구조 뿐만 아니라 문화도 달라서 번역이 쉽지가 않던데....헤헤헤 ^^;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.09 09:51 신고 | PERMALINK | EDIT/DEL
아하~ 최근에 수정이 되었던지, 열이아빠님이 지적하신 '보기스택'은 없었습니다 ㅎㅎ
번역 자체는 문제가 없었던거 같은데, 용어들이 한글화 되어있어서 아리송~ 했던거 같아요. ㅎㅎ
Favicon of http://egg.pe.kr BlogIcon egg | 2008.09.10 11:02 신고 | PERMALINK | EDIT/DEL | REPLY
플렉스의 길은 먹고도 험하군요.ㅡㅠ
매번 좋은 책 추천해주시는데 아직 소화를 못시키고 있네요;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.10 14:08 신고 | PERMALINK | EDIT/DEL
하면 할 수록 더 아리송~ 하네요 ㅎ
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.08.07 14:21
Flex에는 크게 MXML과 ActionScript 로 구현되고 있는데, 내부적으로 MXML이 ActionScript 로 변환되어 SWF로 빌드 됩니다. MXML이 ActionScript 로 변환되는 것을 볼 수도 있는데요, keep-generated-actionscript 속성을 바꿔주면 됩니다. 속성 지정 방법은 시난님의 블로그에서 잘 정리해놓으셨습니다. (SliverLight의 경우는 Flex와 다르게 CS 코드가 XAML을 변환시키는 구조라고 하더군요)

실제로 간단하게 속성을 지정하여 변환을 하여 보면 참 새로운(이해 잘 안되는) 코드들이 마구 쏟아져나옵니다. 특정 MXML Application을 생성하면 관련된 파일 4개가 생성이 됩니다. (다른 것들은 보통 특정 스타일 지정 ActionScript 클래스이거나 속성 관련)

예를 들어 test.mxml 파일이 있다면 아래와 같이 생성이 되게 됩니다.
  • test-generated.as
  • test-interface.as
  • _test_FlexInit-generated.as
  • _test_mx_managers_System.as
본 포스트에서 살펴볼 것은 처음에 있는 xxx-generated.as 입니다. 이해를 쉽게 돕기 위해서 간단하게 MXML Application을 만들어보겠습니다. MXML.mxml 이라고 이름 붙혀보았습니다. (조악한 네이밍. ㅜㅜ)


위와 같이 MXML이 생성이 되었다면 아래와 같이 MXML-generated.as 가 생성이 됩니다.
(설명할 부분만 수록하도록 하겠습니다. - 길이가 길어서...)



MXML Application 이기 때문에 클래스는 Application 을 상속받고 있습니다. 그 바로 밑에 보면 흔히 쓰이지 않는 UIComponentDescriptor 타입의 변수가 보입니다.

UIComponentDescriptor 인스턴스는, 비주얼 컴퍼넌트의 인스턴스의 MXML 태그로 지정된 정보를 캡슐화합니다.

MXML 파일내의 대부분의 태그는, UIComponent object의 트리를 설명하는 것입니다. 예를 들어,<mx:Application> 태그는 UIComponent object를 나타내, 그 child containers와 컨트롤도 모두 UIComponent object입니다.

MXML 컴파일러는, 각각의 MXML 태그를 UIComponentDescriptor 인스턴스에 컴파일 합니다. 엄밀하게는, MXML 컴파일러는 ActionScript 데이터 구조를 자동 생성합니다. 이것은, UIComponentDescriptor object의 트리가 됩니다.

실행시에, Container 클래스의 createComponentsFromDescriptors() Methods는, 컨테이너의 childDescriptors 배열의 UIComponentDescriptor object내의 정보를 사용해, 컨테이너의 아이인 실제의 UIComponent object, 및 한층 더 깊은 자손을 작성합니다. 컨테이너의 property creationPolicy 의 값에 따라서는, 어플리케이션의 기동시에 컴퍼넌트의 일부가 표시될 때, 또는 어플리케이션의 개발자가 수동으로 createComponentsFromDescriptors() Methods를 호출했을 때에, 자손이 작성되는 일이 있습니다.

통상, UIComponentDescriptor 인스턴스를 스스로 작성할 것은 없습니다. Container 클래스의 childDescriptors 배열을 경유해, MXML 컴파일러가 자동 생성한 인스턴스에 액세스 할 수 있습니다.

출처 : flexdocs.kr


설 명이 좀 어려운데요, 다시 말해서 MXML로 정의된 정보를 모두 가지고 있게 된다는 것입니다. 내부적으로 트리형태로 자식 컴포넌트들도 다 가지고 있게 되는데, 실제로 UIComponentDescriptor 타입의 _documentDescriptor_ 변수가 Application 이고, 그 자식으로 추가된 Button 컴포넌트는 childDescriptors로 추가되어 있습니다. 물론 Button 컴포넌트도 UIComponentDescriptor 타입이 되죠. 만약 버튼에 자식 컴포넌트가 존재했다면 childDescriptors 에 정의되어 있을겁니다.

여기서 잠시 Application에 childDescriptors로 정의된 Button 을 다시 한번 보겠습니다.

여기서 잠시 보실 것은 Button에 설정해놓은 click 이벤트입니다. 클릭시에 "___MXML_Button1_click" 를 호출하도록 되어 있는데요, 해당 메소드로 가보면 제가 정의한 clickEventHandler 를 호출하도록 하고 있습니다.


특정 이벤트에 대해서 이벤트 핸들러(event handler)를 설정하게 되면 1. 해당 이벤트에 대해서 호출된 메소드를 생성하고 2. 그 메소드가 이벤트 핸들러를 호출하게 하는 방식입니다.

저는 이 구조를 처음 봤을 때 전부터 궁금했던 의문점이 하나 풀렸습니다.

위와 같은 코드가 있다고 할때에 이 것을 ActionScript 로는 어떻게 할까 하는 것이었습니다. ActionScript 로는 addEventListener 메소드를 이용해야 되는데, 핸들러 메소드에게 따로 파라미터를 던질 방법이 없었던 거죠. 커뮤니티에도 이와 같은 질문들이 가끔씩 올라왔기도 했고, 저도 상당히 궁금했었습니다.

살짝 감이 잡히시나요?

각 버튼의 이벤트 핸들러가 생성되고 그 이벤트 핸들러에서 위에서 지정한 clickEventHandler를 호출하게 됩니다. 참 난감하더군요 ;)

아무튼 뭐 살짝 MXML이 ActionScript 로 변환되는 과정에 대해 살짝 알아보았습니다. ;)
PopupManager 관련 글은 아직 준비중입니다.. ㅜㅜ



2008-08-20 본문 복구 완료
신고
Creative Commons License
Creative Commons License
Favicon of http://lostsin.tistory.com/ BlogIcon 시난 | 2008.08.07 14:34 신고 | PERMALINK | EDIT/DEL | REPLY
헉헉 굿잡!
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.08.25 01:14 신고 | PERMALINK | EDIT/DEL
어려워어려워;;
Favicon of http://wooyaggo.tistory.com BlogIcon wooyaggo | 2008.08.25 01:07 신고 | PERMALINK | EDIT/DEL | REPLY
지금은 플렉스까막눈이지만 나중에 플렉스 할때 꼭 참고하겠습니다!
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.08.25 01:14 신고 | PERMALINK | EDIT/DEL
감사합니다. ;)
다른 분들이 달아주신 덧글은 복구가 불가능(구글이 저장을....)해서 덧글이 없네요 ㅎㅎ
덧글 감사합니다 ;)
Favicon of http://thlife.net BlogIcon THLIFE.net | 2008.10.22 18:11 신고 | PERMALINK | EDIT/DEL | REPLY
항상 좋은 글 감사합니다!
Favicon of http://vulcan9.tistory.com BlogIcon vulcan | 2009.12.04 16:03 신고 | PERMALINK | EDIT/DEL | REPLY
벌써 1년이나 지난 포스트네요..역시 대단하심. mxml 코드 생성기를 만들려다 보니 저도 이벤트쪽 코드가 어떻게 as로 바뀔까하고 궁금해서 나름 정리해 보았습니다. 비슷한 주제일것 같아 트랙백으로 남김니다. 프로젝트 진행용으로 작성된거라 좀 불필요한 내용이 많네요--:;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.12.04 09:15 신고 | PERMALINK | EDIT/DEL
트랙백 고맙습니다. ;)
프로젝트 잘 진행되기를 기원합니다.
Favicon of http://spyrogira256.textcube.com BlogIcon 윤재진 | 2010.11.05 11:59 신고 | PERMALINK | EDIT/DEL | REPLY
댓글 감사합니다.
Favicon of http://xoul.kr BlogIcon xoul | 2011.07.29 23:40 신고 | PERMALINK | EDIT/DEL | REPLY
와 정말 좋은글 잘 보고 갑니다 ^^
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
prev"" #1 #2 #3 next