TextField에서 htmlText 속성으로 쓸수 있는 html 태그들

일단 링크 주소. 찾느라 한참 고생했네 우씨. ㅡㅡ;;

http://help.adobe.com/ko_KR/AS3LCR/Flash_10.0/flash/text/TextField.html#htmlText

결론적으로는….

<a></a> :: 링크
<b></b> :: 볼드
<font></font> :: 폰트 설정
<u></u> :: 언더라인
<i></i> :: 이탤릭
<img> :: 이미지
<p></p> :: 문단
<span></span> :: CSS 스타일
<textformat></textformat> :: 텍스트포맷

다른건 그냥 뭐 무난무난. img 태그가 지원되는줄은 몰랐다. 신기하네. 그렇다면 혹시 텍스트박스 안에서 드래그&드랍도 되려나. ㅡㅡ;; 안될지도 머…

span이나 textformat을 쓰려면 좀 복잡한거 같은데… 잘만 쓰면 꽤 많은 기능을 구현 할 수 있을 것 같기도하다.

일단 이걸 가지고 웹에디터 모듈을 한번 작성해봐야할것 같다.

FDT를 써보기로 했다.

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

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

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

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

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

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

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

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

기대된다. FDT.

플래시에서 https 프로토콜의 데이터를 읽어올 때 문제점

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

서버에 있는 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 통신이 불가능하다는 것은 알았으니… 만약 로그인이 들어가고 하는 부분은 어떻게 처리해야할까 하는 생각이 든다. 암호화 통신하는 모듈을 또 붙여야하는건가…

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

FMS (Flash Media Server) 설치

Adobe Flash Media ServerAdobe 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분도 채 안 걸린다;;; 엄청 빨리 설치됨;;;

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

RoundCube Webmail 설치 완료

서버에서 뭘 더 해볼까… 고민하다가 나만의 메일을 만들어 쓰기로 했다.

일단 sendmail + dovecot을 설치했다. dovecot 설치하다가 소스컴파일로 설치한 MySQL 때문에 애먹고 걍 지우고 yum으로 설치해버렸다. ㅡㅡ;;

여튼… sendmail과 dovecot으로 POP3와 IMAP 서비스를 활성화하고 잘 되는지 몇번 테스트. 이제 아웃룩 같은 외부클라이언트로 IMAP 서비스를 쓸수 있게 되었다.

만약 피씨방 같은 외부환경이면…? 웹메일이 필요할 것 같았다.

어떤 웹메일 소프트웨어를 쓸까… 고민했다. 다람쥐메일로 할까… 싶었는데 지금 회사의 웹메일시스템이 다람쥐메일이어서 자주 보는데 정말 인터페이스가 너무 안 이쁘더라. ㅡㅡ;; 이건 뭐 쌍팔년도도 아니고…휴…

그래서 뒤지다보니 라운드큐브 웹메일이 있어서 이걸 깔아봤다.

설치시 필요한 요구사항은 PHP, MySQL, IMAP이 있어야한다. (PHP에 PEAR 사용이 가능하게 같이 컴파일해야된다는거 같은데 정확히는 모르겠다. 어쨌튼 난 PHP 컴파일시 PEAR를 넣고 컴파일했다.)

설치 과정은 그냥 화면에 나오는 메시지대로만 하면 된다. 간단한 영어만 읽을 수 있다면 매우 쉽다.

RoundCube이건 내가 쓰고 있는 라운드큐브의 스크린샷. 한글지원이 꽤나 괜찮다는 것이다.

인터페이스도 그럭저럭 예쁘고(다람쥐메일보다는 훠~얼~씬 더 이쁘다.) 한글지원도 그럭저럭 쓸만하고 AJAX 기반인데다가 이 개발자가 맥에서 개발해서 그런지 맥에서도 아주 잘 작동한다.

아직은 sendmail에 spamassasin 같은 스팸필터를 설치해놓지 않아서 스팸이 오면 어떡하나 좀 걱정되긴하지만 뭐…. 아직은 스팸메일은 안오니까.

아무래도 예전에 쓰던 다음의 한메일에 비하면…. 단점이 좀 있다. 일단 메일자동분류 기능이 없다는 것. 한메일을 쓸때는 이 기능이 무지 편했다. 또… IAMP을 이용함에도 불구하고 폴더를 생성하거나 하는게 불편하다. 환경설정에 들어가서 메일폴더를 생성해야한다;;;

그리고… 스킨시스템을 지원하는데 아직 만들어진 스킨들이 많이 없다. 이건 뭐 기본스킨이 괜찮으니까 그냥 넘어갈 수 있겠네.

속도는… 역시 잡기능 없이 XHTML이랑 AJAX로만 만들어서 그런지 빠르다. 하긴 내 서버에 나혼자 쓰고 있으니 당연히 빠를 수 밖에…

여튼 꽤 괜찮은 웹메일 솔루션인듯. IMAP을 지원하는 서버라면 다람쥐메일보다는 라운드큐브를 더 추천하고 싶다.

플래시와 서브버전

회사에서도 그렇고 집에서도 그렇고…

작업물을 관리하다보면 엉켜서 헷갈릴때가 한두번이 아니었다.

main.fla 파일을 만들고 그다음은 main01.fla, main_20090324.fla, main.fla.backup 등등… 수정사항을 몇번 거치다보면 몇개의 파일이 생성되고 그것마저도 여기저기 폴더에 쳐박아두기 일쑤였고.

그러다보니 찾기도 힘들고 예전 작업물이 필요할 때는 최신판 파일을 가지고 다시 예전 작업물대로 되돌리는 삽질을 계속해야했다.

버전관리시스템이 있다면 좋을텐데…라는 생각에 오늘 웹서핑을 했다.

cvs와 svn에 대해 찾아봤는데 이외에도 몇가지 소스관리시스템을 찾아봤는데… 역시나 Subversion을 익히는게 제일 나을것 같다.

게다가 오늘 본 조금은 충격적인 문서 내용

정말 난 우물안개구리였다. AS2.0 조금 쓸줄 안다고 한마디로 깝치고 다녔던 것 같다. 이제 겨우 AS3.0에 접근했음에도 난 그게 너무 대단한 것인줄 알았다. 사실 별거 아니었는데…

클래스, FDT, SVN 셋중 제대로 할줄 아는게 아무것도 없다.

너무 늦은걸까…하는 생각이 든다.

클래스는 지금 열심히 공부하고 있으니 뭔가 답이 보이겠지… SVN은 학원에서 배울 방법도 없고 책을 사서 봐야할 것 같다.

두달 이후에는 뭔가 나에게 달라진 점이 있었으면 좋겠다.

조금 더 발전적인 내가 되기 위해…

swf 파일의 파라미터로 변수를 전달 할 때의 문제점에 대한 리포트

<문제점>

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 파일의 경우에는 간혹 이러한 문제 때문에 변수가 제대로 받아지지 않고 그로 인해 무한루프에 빠지게 되는 현상들이 있었다.

플래시에서 입력값을 숫자로만 받는 방법~

특정한 입력박스에서 제한된 글자만 입력 받을 수 있게하는 방법

출처 :: 네이버 지식인

[code]
stop();
form_name.restrict = “^0-9”; //숫자만 입력불가
form_age.restrict = “0-9”; //숫자만 입력가능
form_sex.restrict = “ㄱ-힣”; //한글만 입력가능
form_phone.restrict = “0-9”; //숫자만 입력가능
form_phone.maxChars = “9”; //최대 입력 문자수
bt.onRelease = function(){
onEnterFrame = function() {
if(form_email.text.indexOf(“@”)<0 || form_email.text.indexOf(“.”)<0) {
trace(“이메일 형식이 맞지 않습니다”);
}else{ //”@”, “.”이 없을때
write=new LoadVars();
write.name = user_name;
write.age = user_age;
write.sex = user_sex;
write.email = user_email;
write.phone = user_phone;
write.sendAndLoad(“test.html”,write,”POST”);
}
this.onEnterFrame = null;
}
}
[/code]

죠리퐁세기 – ActionScript 버전

과연 죠리퐁 한봉지 안에는 몇개의 죠리퐁이 들어있을까…?

2003년도에 KLDP에 시작된 죠리퐁세기에 관한 글타래.

글타래 보러 가자~~~

‘그렇게 폐인이면 죠리퐁이나 세어봐라’식으로 시작된 이 글타래는 KLDP분들의 각종 프로그래밍 언어로 만들어졌다. 이중 내가 생각한 가장 획기적인 방법은 레고 마인드스톰을 연결해서 센서를 이용해 세자는 것 같다.

여튼 오랜만에 글을 읽어보니 재미있기도 해서 나도 살짝 만들어봤다.

다음은 내가 생각한 죠리퐁세기의 Flash ActionScript 버전이다. 실제로 가능할지는 모르겠다;; 다른 프로그래밍 언어에 비해서 스크립트 언어라 죠리퐁의 개수를 세는 센서를 연동하거나 하는건 무리일것 같다. 에… 아마 Java나 C, PHP 등을 연동한다면 가능할지도 모르겠다.

[code]

//

// JollyPong count scripts

// Made with Macromedia FlashMX 2004

// Copyright(c) 2005. Dong-bum, Kim (http://www.dongbum.com)

//

// 버튼을 클릭하면 빈 무비클립을 만들어 조리퐁을 로드하여 total_jolly에 넣는다. 타임라인의 한프레임당 죠리퐁 한개씩.

// 죠리퐁을 로드

// 조리퐁이 모두 로드 되지 않았다면 에러메시지 출력

// 조리퐁이 모두 로드 되었다면 jolly가 total_jolly의 모든 프레임과 같아질 때까지 하나씩 증가시키며 카운트

// jolly와 total_jolly가 같다면 카운트가 끝난 것이므로 output 출력

on (release) {

this.createEmptyMovieClip(“total_jolly”, this.getNextHighestDepth());

loadVariables(“조리퐁”, total_jolly);

if (total_jolly.done == undefined) {

trace(“아직 죠리퐁이 모두 로딩되지 않았습니다.”);

} else {

var jolly:Number = 0;

for (var i = 1; i == total_jolly._totalframes; i++) {

jolly += i;

}

trace(“조리퐁의 갯수는 “+jolly+” 입니다.”);

}

}

[/code]

음…… 문제는 두개가 붙어있는 죠리퐁을 계산할수 없다는 것. (두개 이상이 붙은 죠리퐁은 개수를 나누는 코드가 추가되어야할 것 같다.

간단하게 뭐 이런식이면 되지 않을까… 싶은데 여튼 더 연구해봐야겠다. 🙂