플래시에서 외부 파일과 통신할 때 쓰이는 방법 중 GET 방식에 이은 POST 방식.

애초 설계부터 GET 방식과 달리 데이터 전송에 더 목적이 있었기 때문에 여러가지 정보를 파라미터로 보낼 수 있다.

단, 이럴 때 LoadVars 객체를 두번 써야하는 번거로움이 생겨난다.

var data_1:LoadVars = new LoadVars(); // 객체 생성
var post_data:LoadVars = new LoadVars(); // 객체 생성

post_data.onLoad = function(success:Boolean) {
if (success) {
if (post_data.result == 1) {
// 돌아온 데이터의 result 값이 1일 때 처리
} else if (post_data.result == 2) {
// 돌아온 데이터의 result 값이 2 일 때 처리
} else {
// 돌아온 데이터의 result 값이 그 이외일 때 처리
}
} else {
// 데이터를 보내고 다시 되돌아온 수신이 오류일 경우 처리 루틴
}
};

data_1.param1 = text1; // 넘길 데이터
data_2.param2 = test2; // 넘길 데이터
data_1.sendAndLoad("/post_data_test/test.jsp", post_data, 'POST'); // POST로 전송시작

GET 방식에 비해 LoadVars 객체를 한번 더 생성해야하는지라 코드가 약간 더 길어진다.

파라미터로 계속 지정해나가면 되서 데이터를 정렬하고 관리하는게 좀더 쉬워진다는 장점이 있고 GET과는 다르게 sendAndLoad 명령어를 쓴다는 점 정도만 기억하면 될듯.

특별히 어려운건 없지만 번거롭고 코드가 조금이라도 길어짐과 LoadVars를 두번 쓰다가 헷갈릴 수가 있어 난 사용을 잘 안하지만 프로그래머가 POST 데이터로 받고 싶다고 우긴다면 해줘야하므로 이 방법 역시 알고는 있어야할듯.

Posted by 동범이

2010/02/08 15:47 2010/02/08 15:47
, ,
Response
No Trackback , No Comment
RSS :
http://blog.83rpm.com/rss/response/147

가끔 개발자들과 연동 작업을 하다보면 플래시에서 어떻게 데이터를 넘겨달라고 지정해줄때가 많은데 그중 GET 방식과 POST 방식이 제일 흔하다.

GET 방식은 쉽게 설명해서 URL에 데이터를 넣어서 보내는 방식.
POST방식은 그렇지 않은;; 방식이다.

GET 방식으로 보내고 받을 때.
LoadVars를 이용해 새 객체를 만들고 OBJECT.load(url) 형식으로 부르면 된다.

var object_name = new LoadVars();
object_name.onLoad = function(success:Boolean) {
if (success) {
// 로드가 성공했다면 수행할 동작
trace(object_name.test_data)
} else {
// 로드가 실패했다면 수행할 동작
trace("Faild")
}
}
object_name.load("경로/파일명?변수명1=변수1&변수명2=변수2&..........')


GET 방식은 굉장히 유용하게 쓰이고 있다. 일단 URL 뒤에 변수명=변수 식으로만 계속 이어붙여주면 되기 떄문에 다루기도 쉽다. onLoad 명령은 통신을 한후 그 결과를 봐서 제대로 통신했는지를 알수 있다. 'object_name.변수명'을 이용해서 리턴된 값을 이용해 어떠한 다른 처리를 나누어 할 수도 있다.

GET 방식은 애초부터 간단한 정보들만 넘기도록 만들어진 것이라 많은 정보를 처리할 때는 POST로 처리함이 옳지만 URL에 뒤에 변수명=변수 식으로 계속 붙이기만 하면 되니 사용하기가 편해서 굉장히 많이 쓰인다.

URL에 데이터들이 들어가므로 보안상 문제가 좀 있다. 아무리 플래시 내부에서 처리한다하지만 HTTP 패킷을 캡쳐하면 내용이 보인다. (하긴 그건 POST 방식도 매한가지이긴하지만.)

플래시에서 외부파일과 데이터를 주고 받을 때는 반드시 알아야할 방법 중 하나.

Posted by 동범이

2010/02/08 15:12 2010/02/08 15:12
, ,
Response
No Trackback , No Comment
RSS :
http://blog.83rpm.com/rss/response/145

FLV / F4V 를 위한 MIME 타입 설정

일을 하다보면 플래시로 동영상 플레이어를 만들 일이 있는데...

가끔은 동영상 파일을 제대로 올려놓고 액션스크립트가 틀린게 없는데도 재생이 안될때가 있다.

이럴 때 제일 먼저 살펴봐야하는건 웹서버의 MIME 타입이다.

이건 플래시 작업자가 해결 할 수 없는 부분이기 때문에 서버관리자에게 요청해야한다.

플래시 비디오 파일은 FLV와 F4V라는 두가지 포맷이 있다.

웹서버 프로그램(Apache나 IIS 등등)에서 MIME 타입을 지정해줄 때 이렇게 지정해주면 된다.

FLV에 대한 MIME 타입 :: flv-application/octet-stream
F4V에 대한 MIME 타입 :: video/mp4

물론 설정한 후에는 웹서버 재시작은 필수.

Posted by 동범이

2010/01/30 18:28 2010/01/30 18:28
, , , ,
Response
No Trackback , No Comment
RSS :
http://blog.83rpm.com/rss/response/146

플래시에서 http-auth 방식 인증처리방법

플래시에서 http-auth 방식 인증처리방법

// http BASIC 인증 코드
http://www.abdulqabiz.com/blog/archives/flash_and_actionscript/http_authentica.php

var request:URLRequest = new URLRequest();

//call listsubs method of Bloglines
request.url = "";

var credentials:String = Base64.encode(email + ":" + password);
//create HTTP Auth request header
var authHeader:URLRequestHeader = new URLRequestHeader("Authorization","Basic " + credentials);
//add the header to request
request.requestHeaders.push(authHeader);
//make the request.
loader.load(request);

Posted by 동범이

2009/10/22 11:25 2009/10/22 11:25
, , ,
Response
No Trackback , No Comment
RSS :
http://blog.83rpm.com/rss/response/137

https 접근 문제 해결방법

플래시에서 SSL이 적용된 경로로 접근하려할때 접근이 되지 않는데 이럴 경우 다음 코드를 HTML에 삽입함으로써 해결할 수 있다.

<META http-equiv="Expires" content="-1">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-store,max-age=0,must-revalidate ">


안타까운건 이 코드를 이용해 '웹'에서는 해결할 수 있지만 AIR에서는 여전히 https로의 접근이 되지 않는다는 것... 휴...

언제쯤 이 문제가 해결될라나 모르겠다.

Posted by 동범이

2009/10/14 22:59 2009/10/14 22:59
, , ,
Response
No Trackback , No Comment
RSS :
http://blog.83rpm.com/rss/response/136

FDT를 써보기로 했다.

플래시에 있는 액션스크립트 에디터는 너무 쓰기 불편하다.

특히 자동완성기능이 없다는거. 플렉스빌더만해도 필요한 패키지며 다 알아서 작성해주던데.

그래서 다른 툴을 찾아보는 중.

Flex Builder(현재는 Flash Builder), FlashDevelop과 FDT 셋중 하나 골라야겠다.

FlashDevelop은 깔아서 잠깐 써봤고...... FDT를 써보려고 다운로드 하는데....

에휴... 외국에서 직접 다운받는거라 참 더럽게 느리구나. 2시간이 뭐니....

다운로드 걸어놓고 기다리는 중.

사실 FlashDevelop이 오픈소스고 다 좋은데... FDT가 자꾸 떙기는건 윈도우/맥 둘다 지원한다는거. 그리고 더 성능이 좋다고 평가 받고 있기 때문.

기대된다. FDT.

Posted by 동범이

2009/09/18 10:34 2009/09/18 10:34
, , ,
Response
No Trackback , No Comment
RSS :
http://blog.83rpm.com/rss/response/131

얼마전에 일하다가보니까...

서버에 있는 jsp 파일에다가 데이터를 던져주고 리턴값을 받아서 처리하려고 하는데 이게 안되는거다.

그 경로가 https://~~~~.jsp 였는데 https로는 연결할 수 없나....? 하면서 레퍼런스를 찾아봤더니 또 레퍼런스에는 https에도 연결할 수 있다고 분명히 써있었다.

뭐지...? 하면서 개삽질을 하는데 옆에서 사수형님께서 그거 안되는거라고 http로 바꿔보랜다. 레퍼런스에 된다고 써있는데요? 하면서 반신반의하며 http로 바꿔보니.... 되는거다. ㅡㅡ;; 이럴수가!

원래 https로 하면 경로가 절대경로로 인식 안된다고 주장하는 사수형님을 보며... 음 역시 경험이란게 무섭구나 생각했었다.

방금 전에 네이버 카페를 돌아다니다가 이 문제에 대한 정확한 정보를 얻었다.

나와 동일한 문제점을 겪은 사람이 올린 글에 사람들이 리플을 달아준 것.

플래시에서 https로 데이터를 받아올 수 없고 ioError를 내는데 이것은 플래시의 문제가 아니라, IE의 버그라고 한다. 이 정보에 대한 두개의 포스팅.

http://www.blog.lessrain.com/flash-nasty-xml-load-bug-in-internet-explorer/
http://www.blog.lessrain.com/flash-loading-and-browser-cache-test-suite/

마이크로소프트에도 버그리포팅이 올라가 있구나.

결론은 서버사이드 캐시를 이용하는 방법 밖에 없다고 한다. (솔직히 서버사이드 캐시를 이용하라는 말이 뭔말인지 난 잘 모르겠다.)

AIR 환경에서도 같은 문제가 있는것인지는 확인해봐야 알것 같다. 아마 익스플로러를 거치지 않으니까 버그가 없을 것 같지만... 그래도 모르니까.

플래시에서 일단 저 버그 때문에 https 통신이 불가능하다는 것은 알았으니... 만약 로그인이 들어가고 하는 부분은 어떻게 처리해야할까 하는 생각이 든다. 암호화 통신하는 모듈을 또 붙여야하는건가...

여튼... 최근에 삽질을 하다보니 별의 별 버그들을 다 찾아내는구나.

Posted by 동범이

2009/09/06 04:07 2009/09/06 04:07
,
Response
No Trackback , No Comment
RSS :
http://blog.83rpm.com/rss/response/129

FMS (Flash Media Server) 설치

Adobe Flash Media Server
Adobe Flash Media Server (이하 FMS) 설치 절차. 누군가가 필요할까봐 그리고 내가 까먹지 않기 위해 적어놔야겠다.

일단 Adobe 홈페이지(http://www.adobe.com)에서 프로그램을 다운 받는다.(다운로드 링크는 계속 바뀌지만 현재는 여기에서 다운로드 가능) 가입과정이 있어야하며 대충 300~400메가 정도의 파일을 다운 받을 수 있다. 윈도우용/리눅스용이 제공된다.

플래시 미디어 서버는 라이센스 없이 사용할 경우, 기능상으로는 동일하지만 동시접속 10명으로 제한되는 Developer Server 버전으로 설치되게 된다. 라이센스 구입비용은 나도 잘 모름. ^^;

여튼 리눅스용 파일을 다운로드 받으면 ZIP으로 압축되어있고 이것을 서버에 올린후 압축을 풀면 FMS_3_5_1_r516 이라는 디렉토리가 생성된다.

(참고로 내 서버는 1프로세서에 램1기가, CentOS 5.3이다. 플래시미디어서버의 권장사양보다 좀 떨어지지만 그래도 설치는 잘 된다.)

이제부터 설치 시작.

./installFMS

설치 명령을 내린다.

To install Adobe Flash Media Server now, press ENTER.
To cancel the installation at any time, press Control-C.

프로그램을 설치할꺼면 엔터 중간에 취소 시키고 싶으면 언제나 Control-C를 누르라고 한다.

사용권 읽는 화면이 나온다. 아무키나 누르고 있으면 밑으로 쭉 내려간다. 다 읽어야만 설치 시작가능.

Do you agree with the license agreement? (y/n):

라이센스를 다 읽어봤냐는 질문. 안 읽어봤지만 그냥 y 입력.

Please enter your Flash Media Server 3.5.1 serial number.

시리얼키 입력하라는 메시지. 없다면 그냥 엔터 누르면 패쓰된다. 난 구입하지 않았으므로 그냥 엔터.

You have not entered a serial number.  Falling back to
the Adobe Flash Media Development Server!

Would you like to try again? y/n:  Default [n]:

시리얼키 입력 안해서 디벨롭먼트서버로 설치된다는 것. 다시 키 입력을 시도하겠냐고 묻는다. n 입력.

The installer will install Adobe Flash Media Server 3.5.1 in the
following directory
Default [/opt/adobe/fms]: /usr/local/fms

설치 위치를 묻는다. 난 그냥 프로그램들은 /usr/local/에 설치하는 버릇이 있어서 /usr/local/fms 를 입력하고 엔터.

The Adobe Flash Media Server communicates on the IANA-assigned
port of 1935, which is the port most Flash applications expect,
and can also communicate on port 80, both for tunneling Flash
over HTTP, and for proxying HTTP to a webserver.

Please enter the Adobe Flash Media Server port(s), comma-separated
Default [1935,80]:

포트에 대한 설명과 바꿀려면 입력하라는 메시지. 귀찮으므로 그냥 엔터쳐서 디폴트로.

Please enter the port to use for the Admin service. You can only specify one
admin port.
Default [1111]:

관리자 서비스를 위한 포트 지정. 나중에 관리자 API 등에서 접속할 때 필요하다. 귀찮으므로 역시 디폴트 설정하기 위해 엔터.

The administrative user name and password you provide here is required to use
the Adobe Flash Media Server Management Console for
administration, monitoring, and debugging.

Please enter the administrative username: admin

관리자 이름 입력. 난 admin 으로 입력.

Please enter the administrative password:
Confirm password:

관리자 암호 입력. 그리고 다시 한번 확인 입력.

Please enter the user that the Adobe Flash Media Server service will run as
Default user [nobody]:

Please enter a valid user group for the "nobody" user: Default group [nobody]:

서비스가 실행될 유저와 그룹을 지정하는 부분. 그냥 엔터 엔터.

Do you want to install apache? (y/n)
Default [y]: n

아파치를 설치하겠냐고 묻는다. 플래시 미디어서버 설치프로그램에 아파치 2.2를 기본으로 탑재하고 있는데 이미 깔려있기도 하거니와 굳이 이걸 깔 필요가 없다.

Do you want the Adobe Flash Media Server service to run as a
daemon? (y/n)
Default [y]: y

데몬으로 실행하겠냐는 질문. 당연하지!!!

Do you want to start the Adobe Flash Media Server
after the installation is done? (y/n)
Default [y]: y

설치다하고 자동으로 실행하겠냐는 질문. 당연하지.

여기까지 질문에 답하고 나면  Install Action Summary가 나타나며 y를 누를시 설치가 시작된다. 설치는 1분도 채 안 걸린다;;; 엄청 빨리 설치됨;;;

이제 약간의 설정만하면 플래시미디어서버를 사용할 수 있다.

Posted by 동범이

2009/08/17 03:30 2009/08/17 03:30
, , , ,
Response
No Trackback , No Comment
RSS :
http://blog.83rpm.com/rss/response/126

<문제점>

HTML에서 플래시를 화면에 넣기 위해 쓰이는 일련의 태그들 <embed>라던가 <object>에서 SWF 파일명 뒤에 파라미터를 붙이는 방식으로 플래시에 변수를 넘기고 이것을 이용해 처리를 할 때의 문제점.

<embed.... (생략)...  FILE_NAME.swf?변수명=변수값>의 구조에서 이 변수값 부분을 프로그램에서 처리해주거나 어떠한 계산에 따라 써줄 때 플래시로 제대로 변수가 들어가지 않는 문제점이 있었다.

클라이언트(=웹브라우저)의 요청에 따라 HTML이 전달되어 화면에 써지게 되는데 이 순간에 SWF를 표시해주라는 것 역시 써지게 된다. 하지만 변수값은 프로그래밍 되어서 처리되기 때문에 속도가 더 느렸다.

프로그래밍되어서 전달되는 변수가 비어있기 때문에 플래시로 이런 변수를 전달 받으려하면 'undefined' 값으로 들어오게 된다.

특히 메뉴 네비게이션에서 활성화에 관한 변수를 받을 때 이런 식의 파라미터를 이용한 변수 받기가 많았기 때문에 많이 겪게 되는 문제였고 swf 파일 안에 처리속도가 느리게 되는 요소(예를 들면, 대형 이미지로 작동하는 모션 같은)가 있는 경우에는 더욱 더 이 문제가 많이 생겼었다.

<해결방법>

swf의 1프레임에서 parameter 값을 확인하도록 하는 절차를 밟게 해서 이 문제를 해결 할 수 있었다.

ActionScript 1.0/2.0에서는 단순히 '_root.변수명' 값이 'undefined'가 아닐 때를 onEnterFrame이나 watch를 통해서 if문으로 검사하고 변수가 'undefined'가 아닐 때 2프레임으로 넘어가서 처리를 시작하는 방법으로 해결이 가능. 물론, 이 때 실제 변수를 가지고 처리하는 부분은 2프레임부터 시작하도록 만들어야함.

ActionScript 3.0에서는 LoaderInfo 클래스를 이용해서 역시 파라미터 값을 확인하고 Event.ENTER_FRAME을 이용하거나 이벤트리스너를 연결해서 watch를 하는 방법을 이용하면 된다.

자바스크립트로 변수를 전달하는 경우에는 대부분 이상 없었으나(아마 자바스크립트의 처리속도가 HTML을 쓰는 속도만큼 꽤 빠르기 때문이 아닐까...) 지금 일하다가 흔히 마주치는 JSP 파일의 경우에는 간혹 이러한 문제 때문에 변수가 제대로 받아지지 않고 그로 인해 무한루프에 빠지게 되는 현상들이 있었다.

Posted by 동범이

2009/05/18 02:49 2009/05/18 02:49
,
Response
No Trackback , No Comment
RSS :
http://blog.83rpm.com/rss/response/108