Adobe CS5 Master Collection 체험기

어도비에서 CS5 Master Collection 트라이얼판을 제공한다는 이벤트를 보고 바로 신청했다.

일주일? 정도 지나니 집으로 우편물 하나가 배달되어왔다. 간단한 포장과 함께 Adobe Creative Suite 5 Master Collection이라고 쓰여진 패키지가 도착. 네장의 디스크과 두장의 설명서로 이루어진 간단한 패키지이다. 디스크 두장은 설치디스크 1,2번, Adobe Acrobat 9 Pro 디스크 한장, CONTENT 디스크 한장으로 이루어져있다.

아쉬운건 32비트 윈도우용인 것 같다는 점이다. 회사에서는 윈도우이고 집에서는 맥을 쓰는 나로써는….. 또 다운 받아서 써야하는 귀찮음이 생긴다. 이젠 우리나라도 맥유저들 꽤 많아졌는데 신청 단계에서 맥용이나 윈도우용을 선택할 수 있었으면 더 좋았을 것 같다.

사용자 삽입 이미지
모든 프로그램을 다 설치할 경우에는 10기가 정도의 공간이 필요하다. 내 경우에는 몇가지 프로그램을 제외했고 약 4.5기가 정도의 용량이 필요한 것으로 나왔다. 설치시간은 총 30분 정도가 걸렸다.

사용자 삽입 이미지
설치 시에 애프터이펙트와 프리미어는 설치 자체가 되지 않는다. 이는 설치사양에 미달인 경우인데 애프터이펙트와 프리미어는 64비트 윈도우에서만 작동하도록 되어있기 때문에 내가 쓰는 윈도우 XP 32비트에서는 아예 설치조차 불가능하다. 혹시 어도비 제품군을 구입하려는 분들은 어도비 사이트에 있는 System Requirement 페이지를 참조함이 좋을 듯하다.

설치를 마친 후에는 프로그램을 아무거나 하나 실행하고 메뉴에 있는 Help -> Update를 실행해주는 것이 좋다.

사용자 삽입 이미지
CS3 패키지부터 들어가는 어도비 업데이터는 설치된 모든 어도비 프로그램들의 업데이트를 한번에 자동으로 해주는 역할을 하게 되는데 꽤 중요한 업데이트들이 많으므로 신경써서 가끔씩 봐주는게 좋을 것 같다. (어도비 업데이터를 이용할 때는 익스플로러 등을 닫으라는 메시지가 많이 보이므로 아예 모든 프로그램을 다 종료하고 실행하는게 가장 좋다.)

내가 느낀 CS5에서 편리해진 점.

사용자 삽입 이미지
작업환경에 따른 인터페이스의 설정이 편하다. 포토샵의 경우는 위와 같이 기본(Essintials)과 디자인, 페인팅 등등의 템플릿이 있고 이걸 클릭하면 한번에 작업인터페이스가 바뀐다. 그리고 유저커스터마이징도 가능해서 더 편리하다.

CS5 패키지 프로그램들 간의 연계.

내가 많이 쓰는 Flash, Flash Builder의 경우는 두 프로그램이 연동이 된다. CS4 이전 버전에는 없던 기능인데 예를 들어 플래시에서 FLA 소스를 만들고 플래시빌더로 액션스크립팅을 한다면 예전에는 Flash CS4에서 소스작업 -> Flex Builder 3에서 액션스크립팅 작업 -> Flash CS4에서 컴파일하는 작업을 거쳐야했다. 이번 Flash CS5와 Flash Builder 4에서는 이러한 불편함을 없애려고 연동기능이 추가되었다.

사용자 삽입 이미지
플래시빌더에서 액션스크립트를 작성하다가도 이 버튼 한번이면 플래시가 열리면서 컴파일이 시작된다. 3단계 -> 1단계로 줄어든 것 뿐이라 대단하지 않을지 몰라도 이 기능으로 인해 작업시간이 무지무지 줄어든다. (이 때문에 회사에서 여러가지 코딩툴중에 플래시빌더를 선택하는 계기가 되었다.)

플래시 – 플래시빌더 뿐만 아니라 다른 프로그램들 간에도 상호연동 기능이 있어서 각 프로그램들간의 장점도 살릴 수 있고 더 편리해졌다.

내가 느낀 단점.

지금 내가 가장 많이 쓰고 있는 Flash Builder 4의 경우에는 약간 과도한 작업을 하게 되거나 여러 프로그램을 동시에 띄우고 있는 경우에는 오류가 생기는 편이다. 특정 기능이 말을 듣지 않고 클릭해도 반응이 없는듯한 현상인데 프로그램이 아예 오류를 내버리는 것도 아니고 해서 굉장히 답답했다. 재부팅말고는 별다른 해결방안도 없는지라. 상당히 불편했다. 어도비측에서는 이러한 무반응 오류를 좀더 신경 써서 잡아줬으면 하는 바램.

디자이너들에게 물어보면 아직도 구버전의 포토샵이나 일러스트레이터를 쓰는 사람들이 꽤나 많은 편이다. 최신 프로그램이 무겁기도 하거니와 그걸 감수하고 쓸만한 이유가 없다는 것인데 이런 프로그램들이 몹집을 좀더 줄이면 어떨까 싶다. 아니면 정말 중요기능이 아닌 것들은 모듈화해서 설치하도록 하면 어떨까 싶다.

Adobe Media Encoder의 경우에는 좀더 많은 코덱을 지원과 속력개선이 필요할 듯 싶다. 국내외 많은 인코더들이 상당히 많은 코덱을 지원해서 그냥 아무 비디오파일이나 선택해도 잘 인코딩해주는 반면에 Adobe Media Encoder의 경우에는 인코딩하지 못하는 비디오파일들이 상당히 많았다. 더불어 다른 인코딩전문프로그램과 비교했을 때 느린 인코딩 속도도 좀더 개선되었으면 좋겠다.

Adobe Version Cue는 좋은 프로그램임에도 너무 홍보가 부족한게 아닐까 싶다. 프로그래머들은 CVS, SVN, SourceSafe 같은 버전관리툴에 대해 익숙한 편이지만 디자이너들은 아직까지도 파일버전관리에 익숙하지 않고 이로 인해 업무효율도 낮고 문제점도 많이 생긴다. 다른 그래픽프로그램들이 이런 시스템을 지원하지 않는데 어도비는 이러한 버전관리툴을 가지고 있으니 이런걸 부각시키면 디자이너들에게 좀더 어필할 수 있지 않을까 싶다. 매번 크리에이티브함을 강조하고 있는데 그보다도 실용적인 면에서 쓸모있는 프로그램도 홍보했으면 좋겠다. (난 아직까지 Version Cue를 홍보하는 것을 한번도 본적이 없다.)

TweenMax – 꽤 괜찮은 모션트위너 클래스


플래시에서 모션트위닝 기능을 점차 안 쓰게 된 이후… Only 클래스 환경에서 개발하다보면 트위닝 기능이 필요할 때가 있다.

이럴 때 해결방법은…

1. 무비클립으로 모션을 만들어서 그걸 작동하게 하는 방법,
2. 시간과 관련된 메서드(AS2에서는 setInterval, onEnterFrame, AS3에서는 Timer 클래스나 ENTER_FRAME 이벤트)와 수학적 공식을 이용하여 움직임을 만드는 방법,
3. 마지막으로 각종 트위너 클래스를 이용하는 방법.

내가 쓰는건 위에 세가지 정도인데… 모션 위주의 플래시가 아니라 개발 이슈가 높은 플래시의 경우에는 클래스로 주로 작업하게 되고 이러다보면 1, 2번 케이스는 상당히 번거롭고 귀찮게 되며 나중에 수정도 어려워지고 소스도 더러워진다. ㅡㅡ;;

그래서 트위너 클래스가 상당히 편리함.

플래시 내장 트위너 클래스도 있고 TweenMax, Tweener 등의 클래스등이 있지만 내가 쓰기에는 아직은 TweenMax가 가장 편한 것 같다.

간단한 모션 기능을 넣을 때조차도 트윈맥스를 쓰지 않으면 상당한 노가다 코딩을 해야하고 이러다가 문제가 생기거나 예상치 못한 오류가 생기면 상당히 힘들기 때문에 트윈맥스를 쓰기를 강추함. 플래시 내장 트위너들도 있긴한데 이보다는 TweenMax나 Tweener가 더 강력하고 움직임도 많이 제공한다. (물론 그것들도 결국엔 플래시 내장 기능을 조합해놓은 것이긴 하겠지만 어쨌튼 더 낫다.)

여러가지 x, y 좌표, alpha 값 등등 각종 요소에 트위닝을 적용할 수 있어서 좋다.

Flash Builder 4 간단한 사용기

Flash 자체에서 액션스크립트 코딩을 줄창해오다가 어느 순간부터인가 코드양이 점점 많아지면서부터 힘들어졌었다.

그래서 바꾸게 된 것이 바로 Flash Develop
Flash Develop으로 잘 써왔었고 무료임에도 정말 좋은 프로그램이라고 생각함. 하지만 기능적으로 아주 약간씩 부족한게 있었고(특히나 나한테는 Subversion과 연동하는 기능이 필요했는데 이게 안되는게 너무 불편했다.) 그럴때마다 플러그인이 있나 없나 찾아헤메야하는등의 불편함도 있었고 더불어 플래시와 연동하면서 작업할 수 있긴하지만 뭔가 좀 부족한 느낌?
그러다가 최근에 다른 툴을 찾아봤는데 물망에 오른게 Adobe의 Flash Builder 4와 PowerFlasher의 FDT3 두개였다. FB4의 경우에는 플래시 작업자들 사이에서 상당히 실망스럽다는 반응이 많았고 FDT3쪽은 상당히 괜찮다는 평이 많았다.
그래서 FDT3를 선택하고 다운로드… 해서 써보니 이런… 이클립스 인터페이스에 적응이 안된다. 더군다나 가격도 프로버전은 60만원선. 음… 게다가 FDT3는 코드작업에는 좋은 기능이 많았지만 정작 플래시와 연동이 안되어서 코딩 따로 컴파일 따로 하면서 봐야하는 귀찮음이 있을 것 같았다.
그래서 지우고 다시 Flash Builder 4를 설치.
Flash Builder 4
역시나 이클립스 기반이어서 인터페이스에 적응이 잘 안되더라. 아 그냥 다시 FlashDevelop에서 작업하고 싶다…라는 생각이 자꾸 들었지만 꾹 참고 현재까지 2주일 넘게 사용 중… 이제 살짝씩 적응된다.
FlashDevelop에 비해서는 아무래도 에디터 자체적으로는 좀더 불편한 것 같다. 예를 들어 자동완성 기능이 너무 부족하게 느껴졌다. ‘private function test():void’라는 문장을 입력해야할 경우에 FlashDevelop의 경우에는 ‘pri’만 입력해도 private를 입력할 것이냐고 물어보고 ‘fu’만 입력해도 function을 입력할 것이냐고 물어본다. 근데 FB4에서는 이게 안된다. ㅡㅡ;; 무지 불편하다.
물론 이클립스 기반 툴에서 저정도야 설정만 해주면 될것 같지만 문제는 FlashDevelop은 아무런 설정 없이 설치한 그대로도 저 기능으 지원하고 FB4는 사용자가 다시 만져줘야한다는 점.
그리고 코드 컬러링도 FlashDevelop이 좀더 나은 것 같다.
여튼 몇몇가지 불편함이 있긴했다.
장점은… 수많은 플러그인 시스템. 특히나 내가 원하던 SVN 플러그인이 있어서 좋다. 파일을 수정하고 SVN에 올리려고 할때 귀찮은 윈도우탐색기를 켜서 거북이SVN으로 올릴 필요가 없이 FB4 안에서 다 된다
또.. 플래시와의 연계 기능. FB4의 예전 버전인 Adobe Flex Builder 3에는 이러한 기능이 없어서 Flex Builder에서 코드를 작성하고 Flash에 와서 컴파일하는 수고를 해야했는데 이번에는 FB4에서 자체적으로 지원한다. FB4에서 파일을 수정하고 플래시에서 컴파일할 수 있도록 미리 버튼이 준비되어있음. 그리고 플래시에서 액션스크립트 파일을 수정하려고 하면 FB4에서 열겠냐고 물어봐준다. 이 기능 참 편리한듯. FlashDevelop에서도 연계하며 쓸수 있긴하지만 이정도로 연계가 되진 않기 때문이다.
잠깐 테스트를 해본 결과 FB4로 바꾸는게 좋을 것 같다는 것이 내 판단. 아직도 FB4에 대해서는 모르는 부분이 더 많은데 음……. 전체적으로 놓고 봤을 때 FlashDevelop은 ‘가볍고 빠르고 간단함. 단 연계플레이나 고난도 작업을 하기에는 힘들어보임’이 내 결정.
이클립스 IDE에 잘 적응이 안되지만 그래도 처음 접할 때보다는 많이 나아진 것 같다. 좀더 쓰다보면 더 적응 되겠지. 그런데 아직도 FB4에서의 ‘Project’라는 개념을 잘 이해 못하겠다. 휴….

Flash Builder 4에서 SVN 클라이언트 오류 해결 방법

맥부기가 수리 다녀오면서 OSX도 새로 깔고 Adobe CS5 패키지도 새로 설치했다.

Flash Builder 4를 켜고 Subclipse를 설치하고 레포지토리에서 체크아웃을 하려고하니 에러가 뜬다.

Failed to load JavaHL Library.
These are the errors that were encountered:
no libsvnjavahl-1 in java.library.path
no svnjavahl-1 in java.library.path
no svnjavahl in java.library.path
java.library.path = /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/client::/
usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386::/usr/lib/firefox:/usr/lib/
firefox/:/usr/java/packages/lib/i386:/lib:/usr/lib

대충 이런 비슷한 내용임. 대강 읽어보면 패쓰에 자바 라이브러리가 없다는 얘기 같다. JDK와 자바관련 패키지는 OSX에서 소프트웨어업데이트로 알아서 관리해주므로 안되어있을리가 없고….
여하튼 관련 에러메시지를 스크린샷으로 잡아놨는데 스크린샷 잃어버림;;
회사컴퓨터에서 Windows XP에 똑같이 CS5 마스터콜렉션으로 Flash Builder 4를 설치했을 때는 아무런 오류가 없었다. 왜 맥에서만 오류가 있을까 의아했음.
왜이러지…하면서 구글을 켜서 해당 오류메시지 첫째줄을 입력하고 검색 시작. 인터넷 여기 저기 둘러본 결과 JavaHL 라이브러리를 설치해야한다는 얘기가 있는데 왠지 아닌것 같아서 좀더 구글을 찾아보기로 함. 사실 라이브러리 파일을 찾아서 깐다는건 매우매우 귀찮기도하거니와 좀 검증되지 않은 패키지를 깐다는건 여간 찜찜하기 때문이다.
결국 찾았다. 따로 라이브러리를 설치하지 않아도 됐고 위 블로그에 있는 내용대로 하면 해결된다. Subclipse 레포지토리에서 SVNKit 패키지를 설치하고 Preference에서 설정해주면 오류가 사라진다.
으… 내가 겪는 문제들은 어디선가 누군가 이미 다 겪은 것이라는 생각이 또 든다. 한편으로는 사람들이 이클립스 설치하고 환경설정하는 것 자체가 까다롭다고 하는 것도 이해가 간다. 설치에서부터 에러가 나기 시작하니 이거원…

CentOS 5.4 + PHP 5.2

CentOS

CentOS를 쓴지 몇개월째…

이놈의 CentOS는 패키지 업데이트가 너무 느리다.
특히 PHP 버전 문제 때문에 어려움이 많다. PHP.net 에서는 5.3 버전이 릴리즈 된지가 옛날인데 이놈의 CentOS는 아직까지도 PHP 5.1.6 버전에 머물러있다.
이제 대부분의 PHP 프로그램들이 PHP 5.2 이상에서 실행되도록 만들어지거나 그렇게 권장하고 있어서 이런 프로그램들은 쓰지를 못하고 있다. 아니면 구형 프로그램을 쓰던가. 흑…
CentOS 테스트 리포지토리를 이용해서 PHP 5.2를 쓰는 방법도 있긴 한데 해보니까 yum이 좀 꼬이는것 같아서 다시 원래대로 돌려놨다.
테스트 리포지토리에 올라온걸 보니까 곧 릴리즈될 것 같지만 그때가 언제가 될라나 모르겠다.
그냥 소스컴파일해서 써야하나… 에혀…
얼른 CentOS 팀에서 PHP 5.2 좀 릴리즈 해주길 기다리며…

Falsh Action Script 2.0에서 POST 방식 데이터전달

플래시에서 외부 파일과 통신할 때 쓰이는 방법 중 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 데이터로 받고 싶다고 우긴다면 해줘야하므로 이 방법 역시 알고는 있어야할듯.

Flash Action Script 2.0에서 GET 방식 데이터전달

가끔 개발자들과 연동 작업을 하다보면 플래시에서 어떻게 데이터를 넘겨달라고 지정해줄때가 많은데 그중 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 방식도 매한가지이긴하지만.)

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

FLV / F4V 를 위한 MIME 타입 설정

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

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

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

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

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

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

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

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

FlashDevelop에서 ActionScript 3.0 도움말 설정

플래시디벨롭. 거의 다 좋은데 SVN을 지원하지 않는다는점하고 영문판이라 좀 불편할 때가 있다. 가끔 레퍼런스를 찾아봐야하는데 단어에서 F1을 누르면 구글에다가 검색어를 뿌려서 페이지를 보여준다.

검색하며 외국 사이트 돌아다녀보니 다른 사람들도 나랑 똑같이 느끼나보다.

아무튼.

FlashDevelop – Tools – Program Settings – AS3Context – Documentation Command Line 을 다음과 같이 설정한다.

http://help.adobe.com/ko_KR/AS3LCR/Flash_10.0/$(ItmTypPkgNamePath).html#$(ItmName)

이제 단어에서 F1을 누르면 한글 어도비 레퍼런스로 바로 연결됨.

onReleaseOutside in AS3

한게임에 들어가는 동영상플레이어 만들다가 on(releaseOutside) 를 대체할만한 이벤트가 없어서 고민하다가 걍 내버려뒀더니 한게임 플래시팀에서 버그 있다고 연락왔다. 검색엔진을 뒤진 끝에 찾아낸 해결책.

ActionScript 3.0에서 onReleaseOutside를 대체할 만한 이벤트가 없습니다.
그래서 MOUSE_DOWN 이벤트가 발생할 때, stage에 MOUSE_UP 이벤트를 추가했다가,
MOUSE_UP 이벤트 핸들러에서 다시 MOUSE_UP를 제거시키는 방법을 사용해야 하네요.

public function Test(){ // Add MOUSE_DOWN event to mc
        mc.addEventListener(MouseEvent.MOUSE_DOWN, rotateDragStart);
}

private function rotateDragStart(evt:MouseEvent):void{
        // Start drag
        // Add ENTER_FRAME event to mc
        mc.addEventListener(Event.ENTER_FRAME, rotateDragging);
        // Add MOUSE_UP event to stage
        stage.addEventListener(MouseEvent.MOUSE_UP, rotateDragStop);
}

private function rotateDragStop(evt:MouseEvent):void{
        // Stop drag
        // Remove ENTER_FRAME event from mc
        mc.removeEventListener(Event.ENTER_FRAME, rotateDragging);
        // Remove MOUSE_UP event from stage
        stage.removeEventListener(MouseEvent.MOUSE_UP, rotateDragStop);
}

private function rotateDragging(evt:Event):void{
        // Excute while dragging
}

출처 :: http://hangunsworld.com/blog/category/flash/as3/page/10