사실.....닷넷 기술 안써봐서 잘 모르는데, 세미나는 꾸준히 참석하는 머드초보입니다-_- 지금 입으로는 실버라이트를 코딩하곤 있는데, 시도는 안해보고 있네요 ㅠㅠ

우선 선착순 100명 중 50명 추첨해서 책준다고 해서 일찍가려고 나왔는데, 도착하니 9시였습니다. 번호표를 받고 나니......105번입니다-_- 젠장....-_-
행사중에 가장 맘에 들었던 것은 무한리필 팝콘입니다-_- 마치 영화관에 온 듯한.....MSDN POPCON이라는 것을 홍보하려고 팝콘가지고 온 것 같은데, 맛있고 좋았어요!

9시30분 좀 넘어서 시작했는데요. 훈스닷넷 세미나는 몇번 참석한 경험이 있어서 닷넷계에서 익숙한 분이신 박경훈씨께서 진행을 하셨구요. 진행은 참 잘하는 것 같아요-_- 시작 시 썰렁한 양반김 개그로 시작을..-_-

1. 화려한 개발자로의  준비

전 허광남씨 이름이 여기에 왜 있지라는 생각을 좀 가졌습니다. Java진영의 분이라고 생각했기 때문입니다. 하지만, 이번 프로그램에서는 닷넷이든, 자바든 간에 개발자에 대한 주제로 진행된 것이기 때문에 오랜 개발자들의 선배들이 나와서 토론을 하는 시간이였습니다(하지만, 허광남씨는 결석하셨죠^^).
시작전 조금 결과가 이상한 설문조사 결과를 보여주더니 나중에 뻥이라고 하시더군요-_-

첫번째 토론 주제는 경력관리에 관한 주제였습니다. 경력관리는 개발자직종에서는 평생 해야한다고 저는 생각하고 있기 때문에-_- 그리 자세히 듣지 않았습니다.

두번째 토론 주제는 항상 논의 되는 부분인 스페셜리스트냐 제너럴리스트냐 하는 겁니다. 다양한 의견이 나왔는데요. 의견은 비슷했던 것 같습니다. 사실 개발자 분야에서는 어떤 특정 한분야만 판다는 것은 말이 안됩니다. 어떤 분야를 파기 시작하면 다른 어떤 분야도 조금 알아야합니다. 하지만, 천재가 아닌 이상 모든분야의 스페셜리스트가 될 순 없겠죠^^ 참 고민적인 부분이긴 합니다만, 전 한분야의 전문가 보단.....제너럴리스트가 더 매력적이군요. 하지만, 좀 더 나이가 들면 스페셜리스트로 가야하는 게 맞긴 맞을 것 같습니다. 휴....결론이 없네-_- 토론자중에 원하는 걸 파고, 다른 분야는 커뮤니티를 잘 활용해서 배워가라 라는 의견도 있었네요^^

세번째 토론 주제는 실력에 대해 한단계 상승에 슬럼프 극복은 어떻게 할 것인가 라는 주제였습니다. 아...중간에 돌잔치에 마우스가 나오고 있다라고 하셨는데, 사실인가요-_- 내 자식 돌잔치에는 마우스가 안 올라왔으면하는데-_- 암튼, 슬럼프극복이야 뭐 어쩔 수 없는거라고 생각하는데요. 뭐든 실력 향상에는 상승곡선이 있다가 중간에 정체기가 있다가 그런 식으로 진행이 됩니다. 프로그래밍이든 뭐든 간에 다 그런 것 같습니다. 자신의 끊임없는 노력과 인내심을 투자해야 극복할 수 있는 부분인 것 같습니다. 레벨업을 즐겨라~ 자부심을 가져라~ 커뮤니티활동을 하라 등의 의견이 있었네요.

그 외에 영어 부분 얘기를 좀 했었던 것 같은데, 전 영어회화는 바라지도 않습니다. 우선 기술문서를 한국말처럼 쉽게 읽었으면 합니다ㅠ 영어로 되어있어 너무 힘이 듭니다. 기술문서에 대한 번역을 해서 영어실력을 쌓아야겠습니다(과연...-_-)

2. 닷넷의 현주소와 그 미래

저는 닷넷의 주가가 한참 올라가고 있을 때 프로그래밍을 배우기 시작했습니다. C#이 뜬다!라고 해서 책도 막 쏟아지고 그랬는데, 몇년뒤에 바로 죽어버렸던 기억이 나네요-_- 여기서도 .NET의 역사를 소개하면서 얘기를 해주시는군요.
그나저나 Visual Studio 2010이 나온다네요-_- 왜 이렇게 빨리 내는거지-_- 뭐가 바뀌긴 하는건가요. 아직 베타버전도 아닌 CTP버전을 가지고 왔는데요. 여러 좋은 기능이라고 소개하는 기능을 보면 왠지 다 이클립스에 있다라고 느끼는 기능이 몇개 있었던 것 같네요. 아...좀 맘에 드는 기능은 다이어그램을 자동으로 만들어서 타인의 소스분석을 쉽게할 수 있는 기능이 있다라고 하네요. 아주 멋집니다^^ 개발툴이 점점 발전하게 되면 개발자들의 위치가 더 떨어지지 않을까 라는 멍청한 생각을 조금 해봅니다-_- 하지만, 개발툴이 발전하면 개발자들은 더 좋아지는 것은 사실이죠^^ 스트레스를 덜 받을 수 있으니까요^^
그 외에 꼭 알아야할 기술 3가지를 말씀해주셨는데요. 역시 닷넷쪽 기술은 전혀 몰라서....눈에 띄는 것은 역시나 고화질 스트리밍이네요. 비주얼하다보니...-_-

그 다음으로 ux세션과 개발자세션으로 나눠서 진행이 되었는데요. 닷넷기술을 전혀 모르다보니, 그냥 비주얼을 느길 수 있는 UX세션에 오링했습니다.

3. 국내UX사례보기

처음에 안철수연구소에서 개발한 ATM을 보여줬는데요. MFC로 할까 WPF로 고민하다가 WPF로 결정했는데 성공적으로 끝났다 뭐 그런얘기였습니다. 우선 모니터링 툴 같은 프로그램이였는데, 저도 WPF로 하는 게 훨씬 나았을 것이라고 생각이 드네요. 모니터링 툴은 비주얼하고 사용자가 편하게 볼 수 있는 형태로 제작되어야 하는데, WPF로 하게 되면 이런 UI를 손쉽게 개발할 수 있는 장점이 있었겠지요. 확실히 UI가 편리해야 사람들이 더 많이 쓰게 되는 것 같아요. UX는 정말 연구해야할 분야인 것 같습니다^^
그 다음으로 휴즈플로우에서 발표를 하셨는데, 실버라이트와 같이 성장한 회사여서 그런지 실버라이트 부분에 대해서는 최고가 아닌가 싶습니다^^ 예전 실버라이트 세미나갔을 때에도 휴즈플로우에서 항상 발표를 하셨는데, 이길복(아....길버트님이 예전에 조커분장하신 분 맞죠?-_-)님이 항상 발표를 하셨던 것 같아요. SHOWHOT이라는 프로젝트를 소개했는데요. 여기서 인상깊었던 것은 샘플데이터는 무조건 소녀시대로 해야지 작업 능률이 향상된다라는 것입니다. 저도 항상 샘플을 만들 때 소녀시대를 이용해서 만드는데-_-(재미있었던 것은 UX세션 4개중 3개에서 소녀시대를 본 것 같습니다-_-) 암튼, 다양한 UX사례를 보니 좀 더 UX를 공부하고 싶어졌네요^^

4. 실버라이트 3의 등장과 디자인/개발 패러다임의 변화

실버라이트3의 등장으로 디자이너와 개발자간의 협업을 어떻게 할 것인가에 대해서 직접 라이브코딩으로 데모를 시연해주셨습니다. 실제 들어갈 데이터를 샘플로 넣어서 실제 데이터가 들어간 상태를 디자인할 수 있는 장점이 있었습니다.
가장 인상 깊었던 것은 디자이너도 개발자가 준 라이브러리를 이용해서 개발자 흉내를 내면서 디자인할 수 있다는 것입니다. 즉 실제 화면을 미리보면서 디자이너는 디자인을 하게 되는 것이죠. 그런 기능이 Behaviors기능이라는 것이였는데요. 마지막에 개발자가 준 물리엔진 라이브러리로 디자이너가 혼자서 핑퐁게임을 만듭니다-_- 이걸 보면서 다들 저랑 같은 생각을 하셨을건데요. 디자이너한테 이걸 시키면 배째라고 할 것 같아요-_- 그래도 보통 디자인할 때 여기저기 디자인해주세요~ 하는 것보단 실제로 돌아가는 것에서 디자인을 하게 되면 더욱 완벽한 디자인을 할 수 있겠죠^^ 매우 좋은 기능이였던 것 같습니다. 실버라이트 3랑 익스프레션 스튜디오3가 기대되네요^^

5. GUI를 넘어 NUI의 세계로 – 서피스 컴퓨팅 그리고 윈도우7

말로만 듣던 Surface를 가져왔습니다. NUI가 뭔가 했는데, Nature User Interface라고 하더군요. 비전필름영상을 하나 보여줬는데요(예전에 본 기억이 있는 듯^^), 사람 주변이 전부 모니터고 조작을 할 수 있는 환경입니다. 책상이 대쉬보드로 변신을 하거나 컵에 정보를 보여주고, 사물인식을 통해 자신만의 정보를 볼 수 있는 등의 편리한 IT세상을 보여주는 영상이였습니다. 이걸보면서 느낀 건...나중에 개발자가 굶어죽진 않겠구나-_-라는 생각이 먼저드네요-_-
암튼, 서피스 데모를 보여주는데, 정말 신기했습니다. 더욱 신기한 것은 서피스애플리케이션도 손쉽게 개발할 수 있다는 것을 보여줬습니다. 데모를 보여줬는데, 별다른 OS가 있는 것도 아니고, 그냥 Windows Vista에서 WPF형태로 개발을 하는 것이였습니다. 멋지네요^^
손으로 모든 것을 조작하게 된다면 확실히 편한 세상이 올 것 같네요^^

6. Full 3D 기반의 위 리모트 컨트롤 인터페이스 개발

가장 재미있었던 세션이네요^^ 저는 집에 Wii가 있는데요. 위 리모콘이 블루투스 통신이 되는지 몰랐네요^^ 이번세션을 듣고, 적외선탐지기를 지를 뻔했습니다ㅠ
처음에 시트콤형태로 진행을 했습니다. 두분이서 티비를 보다가 슈퍼주니어가 몇명이야 물어봤는데, 위 리모콘을 이용해서 브라우저를 띄우고, 연관검색어를 노출 시키는 것을 보여줬습니다. 위 리모콘도 잘 조작하면 마우스처럼 쓸 수 있죠^^(Wii를 해보신 분들은 알겠지만, 위 리모콘으로 FPS게임도 합니다-_- 많이 하다보면 마우스 못지않은 조작력으로 게임을 즐길 수 있죠^^ 사실 마우스도 처음에 만졌을 때 힘들었던 것 처럼 위리모콘도 처음에는 힘든데, 적응하면 최고죠-_-)
또 다른 데모로 위리모콘을 이용한 드럼을 보여줬는데요. 이건 제가 Wii Music을 해봤기때문에^^ Wii Music이 자꾸 생각이 나더군요^^ Wii Music에서도 가장 재미있었던 것이 드럼이였던 것 같네요. 드럼은 정말 재미있어요^^ 자신이 진짜 드럼을 치는 것 같거든요. A를 누르고 치면 심벌을 치고, B를 누르면 뭐 다른 것을 치고, 그렇게 해서 많은 드럼을 조작하여 칠 수 있는 구조죠. 보여준 데모도 그런 식으로 구현이 되어있었나봅니다^^ 여기서도 소녀시대 음악을...-_-

오늘 참 재미있고 신기한 것을 많이 봐서 즐거웠네요^^ 이런 행사를 자주 다니는데요-_- 갈 때마다 이건 집에가서 해봐야지 하는데, 맨날 귀차니즘에 빠져살았네요-_- 이제 슬럼프에서 벗어나야할 것 같네요. MS도 실버라이트와 UX에 많은 투자를 하고 있는 것 같네요. 좋은 현상입니다. 저도 좀 더 UX대해서 공부하고 싶기는 하지만....프로그래밍 기초부터 다시 배워야겠습니다-_- 막코딩에서 어서 벗어나야할텐데요-_-

PS. 마지막 추첨은 역시나 안되는군요ㅠㅠ

 
Posted by 머드초보
,
 
음 일주일전에 갔었는데, 이제야 후기를 남기네요-_-
아....펜을 안가져가서 메모를 못하고 왔어요-_- 일주일이 지난 지금 내용을 거의 다 까먹었어요ㅠ 더듬더듬 작성해볼랍니다-_-

1. Flash Platform 게임개발 노하우 - 이정웅님
예전에 구글코리아에 갔을 때 FaceBook이나 오픈소셜 애플리케이션이 돈이 된다는(?) 얘기를 듣긴 했습니다만, 플래시게임을 개발하시는 이정웅님 말씀을 들으니 실감이 좀 나네요. 구글코리아에서 다양한 성공사례를 얘기했었는데, 플래시로 만든 게임도 있었죠. SNS에 특성이 맞는 게임을 개발하고 계시는 이정웅님 참 대단한 것 같습니다. 개발하고 계신 데모를 보여주셨는데, SNS요소와 RPG의 만남은 참 기발하더군요. 좀만 더 생각하면 더 멋진 아이디어가 나올 것 같아요^^
 저도 오픈소셜이나 Facebook을 이용하여 뭔가 해보고 싶은데, 좋은 아이디어가 없군요ㅠ Facebook은 AS3용 라이브러리도 나온판에 어서 삽질을 해봐야할텐데ㅠ

2. FlarToolkit으로 구현하는 증강 현실 - 옥상훈님
이건 회사에서 어떤 분이 보여주셔서 알게 되었던 건데, 여기서 다시 보니 새롭네요. 웹캠을 이용해서 어떤 패턴을 인식하여 보여주는 기술인데, 말로 설명하니 뭔 개소리 같네요-_- 직접 보시는 게 가장 빠르죠^^

ActionScript 3.0과 웹캠으로 이런 짓을??? – FLARToolKit, Away3D, WOW-Engine - 지돌스타님 블로그

아직 뭔가 응용할 수 있는 게 나오진 않았지만, 조금만 더 연구하면 멋진 기술이 나올 것 같기도 합니다^^

3. Flash Platform 한글문제 - 이희덕님
음 한글문제가 심각함은 예전부터 좀 느꼈지만, 생각보다 많네요. AIR에서 한글 지울 때 좀 남는거-_-밖에 몰라서-_- 암튼, 공동대응팀에서 이렇게 신경을 써주시니 감사할 따름이네요. 어도비에서 잘 고쳐줬으면 좋겠네요^^ Flex4에서도 발생하는 문제점도 찾으시다니 대단하십니다. Flex4에서는 완벽하게 고쳐졌으면 좋겠네요^^

4. 잡부 Flex 개발자를 위한 Flex 스킨 - 김학영님
음 잡부 Flex개발자.....슬프군요ㅠ

5. Creating visual Experiences with Flex - 이준하님
아....여기서부터 뭔말인지 몰라서 집중력을 잃었습니다. 메모도 안해가지고 오고, 일주일이 지나고 나니, 뭔가 생각이 안나네요-_-

오늘 흥미가 간 주제는 Flash Game이였습니다. 사실, 전 게임개발자를 꿈꿔왔다가 다른 길로 빠져셔-_- 게임에 아직도 미련을 못버리고 있었거든요. 근데, Flash로 MMORPG도 만들고, 정말 멋지군요.
이런 모임을 직접 다 준비하셨다니 정말 대단하군요. 앞으로 이런 모임이 자주 있었으면 좋겠네요^^ 참 즐거운 시간이였습니다^^

PS. 아......마음의 소리 책 갖고 싶었는데.....-_- 제가 39번인가 그랬는데, 38번이 나왔었어요 ㅠㅠ


 
Posted by 머드초보
,
 
젠장... Flash Player 10에서 생기는 버그를 발견했습니다.
TextInput에서 enter이벤트에 자신의 TextInput의 초기화하는 코드가 있으면 초기화가 안됩니다 ㅠ 9버전으로 컴파일하면 되는데, 10으로 컴파일하니 안되네요 ㅠ 몇시간 잡아먹었어요 ㅠ 하소연은 여기까지....-_-

우선 Stratus라는 기술은 Flash간에 통신을 가능하게 해주는 기술인 듯합니다.
자세한 내용은 아래에......-_-(영어는 잘 못하니....)
http://labs.adobe.com/technologies/stratus/

Adobe RIA공식사이트에서 오창훈님께서 올리신 기술문서 "플래시 플랫폼으로 만들어 보는 P2P 채팅 애플리케이션"를 보고 휠받아서 한번 만들어봤습니다. 채팅이 가능하다면, 오목게임도 가능할꺼라는 생각에.....-_- 참 쓸데없는거 잘만든다-_-

http://mudchobo.tomeii.com/flexomok/
위 사이트에 접속하면 서버랑 클라이언트를 고를 수 있어요.
닉네임을 입력하세요 한명은 서버를 한명은 클라이언트를 해야해요.

서버측
서버를 클릭하고, 생성되는 ID를 클라이언트에게 알려주세요.
클라이언트측
클라이언트를 클릭하고, 서버측의 ID를 입력해서 접속하세요~

오목판이 나오면 접속 성공~ 같이 오목을 즐기면 돼요-_-
사용자 삽입 이미지
소스는 여기에 있어요.
http://my-svn.assembla.com/svn/omok/
Mate Flex Framework를 사용했고(이걸 사용해야 스피드한 개발이.....-_-), 소스도 개판이라 보시는데에는 매우 힘드실겁니다. 저도 참 만든게 신기하군요-_-

참고자료

플래시 플랫폼으로 만들어 보는 P2P 채팅 애플리케이션(로그인 후 볼 수 있습니다)
http://www.adoberia.co.kr/iwt/board/board.php?tn=pds_tech&id=244&mode=view

플래시 P2P RTMFP에 대해(예제 파일 첨부)
http://lovedev.tistory.com/entry/%ED%94%8C%EB%9E%98%EC%8B%9C-P2P-RTMFP%EC%97%90-%EB%8C%80%ED%95%B4


PS1. 버그가 조낸 많습니다. 한명이 나가도 뭔가 반응이 없습니다-_- 채팅에서 글을 쓰고 엔터를 쳐도 TextInput에서 지워지지 않습니다. 하지만, 그냥 한게임 즐기기에는 충분합니다 -_-b
PS2. 구글에서 Stratus를 치시면.....이미지검색에 여자 프로레슬러 트리쉬 스트레터스가 나옵니다-_-; 그냥 그렇다구요-_-
 
Posted by 머드초보
,
 
사실 소리바다에서 신규서비스를 베타오픈한 것에 대해서 리뷰를 쓰려고 했는데, Talk Soribada에 너무 자세히 설명이 되어있어서 앨범리뷰를 하게 되었습니다-_-;

소리바다 신규서비스 앨범퍼가기 기능 - 간단하게 설명하자면, 블로그나 카페에 앨범을 삽입할 수 있는 기능인데요. 1분미리듣기가 가능하구요. 소리바다 이용권이 있으면 전체곡도 감상이 돼요 ^^
http://talk.soribada.com/?p=117

암튼 제가 리뷰할 앨범은 M.C The Max의 첫번째 라이브앨범!



저도 2007년 전국투어 콘서트할 때 갔었는데요. 인천에 왔을 때 갔었습니다^^ 5집발매 기념으로 콘서트를 열었는데, 저기 삼산월드체육관에서 했죠. 라이브앨범을 들어보니....조금 녹음이 안습인 곡들도 좀 있고-_-; 잘 된 것도 있고^^ 암튼, 맘에 듭니다^^ 다만, 목이 쉬어서 목소리가

1. Returns
제가 5집에서 제일 좋아하는 노래인데요. 녹음이 가장 잘 된 것 같습니다. 불러보면 굉장히 힘든 노래인데, 매우 잘 소화해냈습니다. 티비에서 라이브할 때에는 좀 안습인 영상이 몇 개 있었는데^^

2. Delete
문차일드 때 노래인데, 랩이 있습니다-_-; 이수씨는 노래를 해야합니다-_-;

3. 사랑을 믿어요
쉰 목소리가 들립니다.

4. 해바라기도 가끔 목이아프죠
5집 CD2에 실린 버전입니다. 오리지널 버전이 훨씬 좋습니다-_-

5. 별
2집에서 좋아하는 노래. 나름 낮아서 부르기 쉬운....

6. 그대는 눈물겹다
이수가 눈물겹습니다. 초반에 쉰 목소리가 들립니다. 하지만 후반부를 잘 마무리 짓는군요^^ 상당히 고음이 많이 나오는데, 시원시원 하군요^^

7. 사랑하고 싶었어
전민혁(전홍만-_-)씨가 불렀군요. M.C The Max에서 노래를 담당하고 있는 만수입니다! 하지만, 저는 이수씨가 부르는 게 더 좋군요^^

8. 사랑은 아프려고 하는거죠
타이틀곡들은 너무 많이 들어서-_-

9. 가슴아 그만해
이것도-_-;

10. Doesn't Matter
1집의 명곡을 이상한 리믹스로 망쳐놨군요. 제 기억으론 콘서트 때 Club분위기를 만든다고 해서 몇 곡을 ClubMix한 걸로 알고 있는데, 완전 실패작입니다.

11. Moment
이곡도 같이 ClubMix된걸로 알고 있는데(맞나?), 이건 맘에 드네요. 대체적으로 싫었던 노래가 없던 1집, 5집노래가 전 좋네요.

12. Sixth Sense
2집 때 후속곡으로 가지고 왔다가 바로 접고 들어갔던 그 곡이군요. 중간에 이수씨가 박자를 놓칩니다-_- 가사도 가끔 안하는 것보니, 안좋은 추억이 있는 노래인 것이 분명합니다.

13. 태양은 가득히
문차일드 때 한참 아이돌이라고 불리우던 그때 그 노래입니다. 이들도 아이돌이였죠. 지금은 아저씨들이군요-_-

14. 사랑의 시
엠씨더맥스를 정상에 서게 하고, 대중들에게 많이 알리게 된 노래였죠.

15. 잠시만 안녕
MC THE MAX를 좋아하게 만든 노래군요. X-JAPAN의 노래를 즐겨들었는데, Tears와 비슷한 노래가 나오길래 노래를 듣고 매력에 빠지게 되었죠^^ 시원시원한 노래입니다^^ 중간에 힘들었는지 관객에게 마이크를 넘깁니다. 중간에 저음에서 음정도 불안하군요. 하지만, 마지막에 마무리는 확실하게 하는군요^^

16. You're Falling In Love
이 노래를 찾아보고 알았는데, 문차일드 때 노래더군요. 콘서트하면 꼭 부릅니다. 제가 MC THE MAX콘서트 2번 갔는데, 두번 다 불렀습니다-_- 그냥 콘서트에 맞는 노래여서 부르는 것 같습니다. 신나는 노래거든요^^

17. 붉은 노을
이 노래도 콘서트 때 꼭부릅니다. 마지막에 이 노래로 장식할 때 정말 감동이였는데^^ 중간에 가사 살짝 까먹습니다-_- 아...노래에서 "난 너를 사랑해~" 이 부분에서 안부르는 이유는 콘서트를 가보신 분들은 알지만, 저기서 이수씨가 하트를 그려야 하기 때문입니다...............후....-_-

우와 곡 마다 그냥 생각나는대로 타이핑했더니 상당히 긴 글이 되버렸네요. 최근 이수씨가 카인과 아벨에서 OST에 참여했던데, 군대가기 전 막바지 활동을 하는 듯 합니다. 2년동안 엠씨더맥스의 새로운 정규앨범을 들을 수 없다니 슬프군요. 2년 뒤에 7집이 기다려지네요^^
 
Posted by 머드초보
,
 
PHP는 HTTPService말고 방법이 없을까 하고 찾아보니, Zend에서 AMF를 이용하여 개발한게 있군요. Adobe의 공식 지원으로 만들어진거라 빠르리라고 생각합니다^^ (적어도 HTTPService보단 빠르겠죠!)

암튼, BlazeDS를 하셨다면 그리 어렵지 않군요.
이번에도 간단하게 소녀시대예제를 통해...접근해봅시다-_-;

간단히 데이터를 불러오고, 저장도 해보는 그런 애플리케이션을 만들어봅시다.

우선 Eclipse에서 php가 가능하도록 해야하는데요. 뭐 그냥 editplus에서 해도 상관없습니다. Zend홈페이지에 가면 자기네들 IDE깔라고 합니다-_-; Zend Studio라는 게 있네요. 뭐 php단은 netbeans를 이용해서 개발하셔도 되고, 이클립스에 있는 PDT를 추가하셔서 해도 상관없어요~ ^^ 전 NetBeans를 선호합니다. 좋아요!

DB입니다.
[code]DROP TABLE IF EXISTS `sosi`.`sosi`;
CREATE TABLE  `sosi`.`sosi` (
  `idx` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `sosiname` varchar(45) NOT NULL,
  `height` int(10) unsigned NOT NULL,
  `blood` varchar(45) NOT NULL,
  PRIMARY KEY (`idx`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

INSERT INTO `sosi` (`idx`,`sosiname`,`height`,`blood`) VALUES
 (1,'윤아',166,'B'),
 (2,'수영',170,'O'),
 (3,'효연',160,'AB'),
 (4,'유리',167,'AB'),
 (5,'태연',162,'O'),
 (6,'제시카',163,'B'),
 (7,'티파니',162,'O'),
 (8,'써니',158,'B'),
 (9,'서현',168,'A');[/code]
우선 Flex Project를 만듭니다.
여기서 Application server type을 php로 하세요~ php로 하게 되면 설정된 폴더로 swf를 바로 위치시킬 수 있어요!
Project name은 ZendAmfTest -> Web root는 아파치가 돌아가는 폴더를 지정하면 됩니다.
저는 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs여기군요.
Root URL은 http://localhost/ Finish때려주면 ZendAmfTest-debug폴더에 swf가 생기죠.

요 아래 주소에서 ZendAMF를 받을 수 있습니다.
http://framework.zend.com/download/amf
받은 다음에 압축을 풀면 library폴더 안에 Zend라는 폴더가 있는데 통채로 복사해서 src폴더 아래에 놓습니다.

그리고 php파일을 하나 만드세요. ValueObject입니다. Java에서 bean같은..-_-;
SosiVo.php
[code]<?php
class SosiVo {
    public $idx;
    public $sosiname;
    public $height;
    public $blood;
}
?>[/code]
이제 서비스를 하나 만들어봅시다. SosiService입니다.
SosiService.php
[code]<?php
require_once 'SosiVo.php';

//conection info
define("DATABASE_SERVER", "localhost");
define("DATABASE_USERNAME", "root");
define("DATABASE_PASSWORD", "mudchobo");
define("DATABASE_NAME", "sosi");

class SosiService {
    public function getData() {
        $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME,
            DATABASE_PASSWORD);
        mysql_select_db(DATABASE_NAME);
        $query = "SELECT idx, sosiname, height, blood FROM sosi";
        $result = mysql_query($query);

        $ret = array();
        while ($row = mysql_fetch_object($result)) {
            $tmp = new SosiVo();
            $tmp->idx = $row->idx;
            $tmp->sosiname = $row->sosiname;
            $tmp->height = $row->height;
            $tmp->blood = $row->blood;
            $ret[] = $tmp;
        }
        mysql_free_result($result);
        return $ret;
    }
}
?>[/code]
php의 array는 ActionScript3의 array와 호환됩니다.
서비스를 만들었으니 EndPoint페이지를 만들어줘야합니다.
amf.php
[code]<?php
require_once 'Zend/Amf/Server.php';
require_once 'SosiService.php';

$server = new Zend_Amf_Server();
$server->setClass("SosiService");
$server->setClassMap("SosiVo", "SosiVo");
echo($server -> handle());
?>[/code]
이제 이것을 연결시켜줄 service-config.xml파일을 만들어야합니다.
[code]<?xml version="1.0" encoding="UTF-8"?>
<services-config>
    <services>
        <service id="amfphp-flashremoting-service"
            class="flex.messaging.services.RemotingService"
            messageTypes="flex.messaging.messages.RemotingMessage">
            <default-channels>
                   <channel ref="my-zend"/>
            </default-channels>
            <destination id="zend">
                <properties>
                    <source>*</source>
                   </properties>
               </destination>
        </service>
    </services>
    <channels>
        <channel-definition id="my-zend"
            class="mx.messaging.channels.AMFChannel">
            <endpoint uri="http://localhost/ZendAmfTest-debug/amf.php"
                class="flex.messaging.endpoints.AMFEndpoint"/>
        </channel-definition>
    </channels>
</services-config>[/code]
우선 default로 my-zend라는 채널을 잡았는데, my-zend는 endpoint uri가 ~~/amf.php입니다. 우리가 좀전에 작성했던 endpoint죠. 새로운 서비스가 추가되어 새로운 endpoint를 작성하게 될 때 endpoint파일을 amf1.php라고 했을 때 이곳에 추가해서 channel에 기입할 수도 있고, <mx:RemoteObject>에서 endpoint를 해당 uri로 바꿔주는 방법 2가지가 있습니다.

그럼 이제 Flex쪽으로 넘어가봅시다.
ZendAmfTest.mxml
[code]<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical"
    creationComplete="creationCompleteHandler()">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
           
            private function creationCompleteHandler():void
            {
                roSosi.getData();   
            }
           
            private function faultHandler(event:FaultEvent):void
            {
                Alert.show(event.message.toString());
            }
           
            private function resultGetDataHandler(event:ResultEvent):void
            {
                dgSosi.dataProvider = event.result as Array;
            }
        ]]>
    </mx:Script>
   
    <mx:RemoteObject id="roSosi" fault="faultHandler(event)" destination="zend" source="SosiService">
        <mx:method name="getData" result="resultGetDataHandler(event)" />
    </mx:RemoteObject>
  
    <mx:DataGrid id="dgSosi" width="100%" height="100%">
        <mx:columns>
            <mx:DataGridColumn headerText="아이디" dataField="idx"/>
            <mx:DataGridColumn headerText="소녀시대이름" dataField="sosiname"/>
            <mx:DataGridColumn headerText="신장" dataField="height" />
            <mx:DataGridColumn headerText="혈액형" dataField="blood" />
        </mx:columns>
    </mx:DataGrid>
   
</mx:Application>[/code]
만약 다른 서비스를 추가하게 된다면, <mx:RemoteObject>에서 endpoint를 다른 url로 잡아주면 됩니다.
[code]<mx:RemoteObject id="roAnother" fault="faultHandler(event)"
        destination="zend" source="AnothorService"
        endpoint="http://localhost/ZendAmfTest-debug/another_amf.php">[/code]
아님 service-config.xml에서 channel을 다르게 해서 destination을 다르게 설정해도 되구요.
사용자 삽입 이미지

ps1. 다른 예제에서는 2개의 service를 이용한 예제가 없더라구요. 그래서 사실 저렇게 하는 게 맞는지 잘 모르겠습니다. 다른 방법이 있을 수도 있구요^^ 암튼, 제가 삽질한 바로는 서비스당 1개의 php파일을 만들어야 하더라구요.

ps2. PHP를 시작한지 얼마 안되었는데, DB연동 시 한글이 깨지더라구요. 인코딩을 my.ini과 php.ini에 utf-8로 맞췄는데, ???로 인식해서 나오는 경우가 있더라구요. php파일에서 db정보를 출력하니 이상하게 그냥 로컬에서 쳤을 때에는 utf-8로 나오는데, php파일이 출력한 db정보는 latin으로 나올 때가 있더라구요. 이 경우 my.ini파일에 이 부분을 추가해주면 됩니다.
[mysqld] 아래에
character-set-client-handshake = FALSE
client 인코딩으로 강제 셋팅하는거라고 하더라구요. 저는 처음에 ??? 뜨길래 이걸로 해결봤습니다-_-;
아 또 다른 방법으로 쿼리날리기 전에 set names 'utf8'이라고 먼저 날려줘도 됩니다.
[code]mysql_query("SET NAMES 'utf8'");[/code]
ps3. 이런...생각해보니 client에서 VO를 안만들어줬군요-_-;

참고자료
http://corlan.org/2008/11/13/flex-and-php-remoting-with-zend-amf/

덧. 채널 못찾는 에러는 아래 주너니님의 댓글을 참조하세요~ 컴파일옵션을 추가해야합니다^^
주너니님 감사합니다 ^^
 
Posted by 머드초보
,