Outsider's Dev Story: RIA/Silverlight 카테고리 글 목록https://blog.outsider.ne.kr/Stay Hungry. Stay Foolish. Don't Be Satisfied.2024-03-15T11:10:27+09:00Textcube 1.10.7 : Tempo primookjsp 1월 세미나 - eclipse & silverlight2 후기Outsiderhttps://blog.outsider.ne.kr/2812009-03-07T21:17:21+09:002009-01-31T23:10:49+09:00어제 술을 약간 먹어서 아침에는 힘들었지만 겨우 일어나서 신청한 세미나에 가져왔다. <a href="http://www.onoffmix.com/e/kenu/620" target="_blank">이클립스에서 사용하는 실버라이트에 대한 세미나 공지</a>가 지난주에 떠서 보자마자 선택했다. 당분간 RIA에는 관심을 끊기로 했었는데 그건 작년 말까지의 상황이고 올해는 여러가지 일로 인하여 상황이 많이 달라질 예정인고로 다시 RIA에 좀 관심을 가지기 시작했다. 나의 잡식성을 그냥 그대로 놔두기로 했다고 할까....<br><br>어쨌던 RIA에서 실버라이트에 관심을 가지고 있었는데 보자마자 eclipse4sl에 대한 얘기인걸 알고 있었지만 익숙하지 않은 비쥬얼 스튜디오가 아닌 익숙한 이클립스에서 실버라이트를 다룬다는 것 자체가 흥미로웠기 때문에 냅다 신청했는데 자바진영에게는 Flex가 있기 때문인지 실버라이트에 대한 세미나는 별로 매력적이지 않았나 보다. 몇일전까지 5명도 안되는 인원이라 세미나가 취소되는거 아닌가? 하는 불안감에 kenu님께 압박아닌 압박을 하기도 했다. ㅋ<br><br><br><font size="4"><span style="font-weight: bold;">1세션 : 이클립스 인트로 by </span><a style="font-weight: bold;" href="http://okjsp.tistory.com/" target="_blank">kenu님</a></font><br><br><a href="http://okjsp.tistory.com/1165643717" target="_blank">이 세션</a>때문에 kenu님에 약간의 압박(?)을 드리기도 했었는데(ㅡ..ㅡ) 어쨌든 완전 새로운 부분에대한 내용은 아니지만 정리차원에서는 나쁘지 않았다. 이 강의는 작년에 들은 <a href="http://blog.outsider.ne.kr/207" target="_blank">이클립스 기본</a>에 대한 세미나와 약간은 겹치긴 한다. <br><br>이런 세미나를 갈때마다 청중의 타겟팅의 대해서 생각을 참 많이 하게 된다. 오는 사람의 실력도 천차만별이고 기대치도 천차만별인데 그걸 다 맞추기란 정말 쉽지 않겠다는 생각이다... 어쨌든 사람맘이란게 전혀 감을 못잡을때는 디테일한거 말고 좀 포괄적인 내용에 대해서 아쉬움이 있었는데 약간(?) 감을 잡으니까 포괄적인거 보다는 이젠 좀 디테일했으면 하는 맘이 생기더란 말이지... ㅎㅎ <span style="color: rgb(204, 153, 0);">이런 세미나는 어떤 특정분야를 깊게 다루는 경우가 있고 아니면 큰 그림을 익힐수 있도록 전체 아웃라인을 설명해주는 경우가 있는데 이번에는 후자의 경우였다.</span> 이클립스의 전체 개념은 좀 익혔기 때문에 중간중간 나오는 것들에서 오히려 이것저것 얻었다.<br><br><div style="padding: 10px; background-color: rgb(255, 218, 237); color: rgb(0, 0, 0);"><ul><li>sysout이라는 단축어를 통해서 System.out.println()을 빠르게 입력할 수 있는데 syso로도 되더라. <span style="color: rgb(142, 142, 142);">(syso가 훨씬 편하겠네)</span></li><li>아웃라인 뷰에서 메서드등으로 바로 복사/붙히기가 가능하다. <span style="color: rgb(142, 142, 142);">(각 뷰의 활용폭을 좀더 늘려야겠다.)</span></li><li>디버깅 모드 <span style="color: rgb(142, 142, 142);">(전혀 몰랐던것은 아니지만 습관이 안되서 잘 안쓰는데 의식적으로 좀 써야겠다.)</span></li><li>파일에서 메뉴를 띄우면 Compare With와 Replace With에 Local History가 있는데 이건 이클립스가 각 Save단위로 이클립스 내에 저장을 해서 필요한 경우에 이전파일과 비교하거나 복구를 할 수 있다. Local History설정에 들어가면 얼마나 보관할건지 용량이나 날짜등을 설정할 수 있다.</li><li>에러나서 빨간줄이 간 곳에서 Ctrl + 1을 누르면 이클립스가 제시하는 에러에 대한 해결책을 볼 수 있다.</li><li>Ctrl + Shift + G를 하면 해당 클래스에서 해당 메서드나 클래스를 사용한 곳을 모두 찾을 수 있다.<span style="color: rgb(142, 142, 142);">(오~ 이건 정말 오랫동안 찾던 기능인데 역시 있었네...)</span></li><li>Ctrl + H를 하면 다양한 조건하에 각 파일내의 Text에 대한 검색을 할 수 있다. <span style="color: rgb(142, 142, 142);">(일일이 파일마다 열어서 Find할 필요가 없군하 ㅡ,.ㅡ)</span></li></ul></div><br><br><br><br><font size="4"><span style="font-weight: bold;">2세션 : 실버라이트 2 by </span><a style="font-weight: bold;" href="http://winkey.tistory.com/" target="_blank">winkey님</a></font><br><br>원래 예상했던대로 <a href="http://www.eclipse4sl.org/" target="_blank">Eclipse Tools for Silverlight</a>에 대한 세션이었다. 나는 이클립스4SL에 대해서 디테일한 강의를 기대했었는데 세션은 실버라이트와 UX에 대한 설명과 Eclipse4SL의 Getting Strarted정도로 진행되었다. 흠... 막상 세션 들으면서 깨달은 거지만 강의의 지원율을 봐서도 그렇고 나같은 경우야 실버라이트 세션을 많이 쫓아다녀서 기본적인 건 약간 알고 있었지만 강의 해주시는 입장에서는 실버라이트에 대한 설명을 건너뛰기는 쉽지 않았겠다는 생각이 들었다.<br><br>어쨌든 세션은 나도 꽤 좋아하는 단어인 UX에 대한 설명으로 <span style="color: rgb(204, 153, 0);">"UX가 없는 UX이야기"</span>라는 제목으로 시작됐다. 대충 정리하면<br><br><div style="padding: 10px; background-color: rgb(255, 218, 237); color: rgb(0, 0, 0);"><ul><li>이제 제품들의 기능은 거의 평준화 되었다고 보고 있고 이제 가치를 결정하는 것은 사용자경험(UX)가 된다.</li><li>UX가 도입되면서 너무 오바되는 경향도 있다. 도입하고 일주일만에 롤백하는 경우는 처음 봤을때는 화려해서 좋았는데 2-3번 보니까 화려한 이벤트가 귀찮아서 다시 원래대로 해달라는 요청때문에 롤백되는 경향이고 6개월 롤백은 운영하고 있다가 유지보수가 필요해 졌는데 이런 요구사항에 대해서 처리 여력이 안되서 다시 원래의 시스템으로 돌아가는 경우이다.</li><li>UX를 3가지로 나눌수 있는데 Universal UX, Portable UX, Full UX로 나눌수 있는데 Universal UX는 보통의 웹을 얘기하고 Portable UX는 일반적으로 얘기하는 RIA 여기서는 실버라이트이고 Full UX는 데스크탑어플로 돌아가는 RIA 즉 WPF를 말한다고 할 수 있다.</li><li>WPF랑 Silverlight는 소스를 보면 거의 95%가 비슷하기 때문에 각 UX간의 이동이 용이하다.</li><li>실버라이트는 4가지 스타일로 나눌수 있는데 위젯처럼 웹페이지에서 일부로만 사용되는 컴포넌트 스타일, 특정용도에 맞게 한시적으로만 사용되게 제작되는 페이지인 이벤트 스타일, BI(비즈니스 인텔리전스)로 많이 사용되는 모니터링등의 목적인 대쉬보드 스타일, 업무환경 자체를 RIA로 하려고 하고 가장 늦게 도입되고 있는 엔터프라이즈 스타일이다.</li></ul></div><br>그리고 본격적으로 eclipse4SL에 대한 설명이 이어졌다.<br><br>eclipse4SL을 이용하려면<br><br><div style="margin-left: 80px;"><span style="color: rgb(204, 153, 0);">윈도우즈 XP SP2이상, 윈도우즈 Vista SP1이상</span><br style="color: rgb(204, 153, 0);"><span style="color: rgb(204, 153, 0);">JDK 1.5.0_11이상</span><br style="color: rgb(204, 153, 0);"><span style="color: rgb(204, 153, 0);">Eclipse Ganymede</span><br style="color: rgb(204, 153, 0);"><span style="color: rgb(204, 153, 0);">닷넷 프레임워크 3.5dltkd</span><br style="color: rgb(204, 153, 0);"><span style="color: rgb(204, 153, 0);">실버라이트2 런타임</span><br style="color: rgb(204, 153, 0);"><span style="color: rgb(204, 153, 0);">실버라이트 2 SDK</span><br></div><br>가 필요하다.<br><br>이클립스에 플러그인을 설치하면 프로젝트에 실버라이트부분이 추가되는데 Silverlight는 그냥 실버라이트를 개발하는 것이고 Silverlight Web은 실버라이트랑 웹사이트개발이 합쳐진 것이다. 실버라이트 웹을 선택하는 것이 편하다. <br><br>익스프레스 디자인과 익스프레스 블랜드에서 만들어진 XAML을 이용해서 이클립스에서 실버라이트를 개발할 수 있다. 이클립스에서 CS파일이 있으니까 뭔가 좀 어색하기는 하지만.... 구동은 이클립스 내부 웹서버로 구동된다. <br><br>실버라이트 2런타임은 한번 설치하면 자동으로 업그래이드 되고 컴파일하면 각 DLL형태가 되는데 이렇게 되면 파일도 많아지고 다루기가 힘들어서 각 DLL을 모아서 XAP로 만들수 있고 전에 <a href="http://blog.outsider.ne.kr/211#comment216" target="_blank">길버트님한테 지적받았던</a> 대로 XAP형태로 배포할 수 있다. (쨉이라고 읽는 거였군.. ㅡ..ㅡ)<br><br><br><br><br><br>난 세미나를 다닐때 눈꼽만큼이라도 내가 얻는게 있으면 비용을 별로 아까워 하지 않는다. 이번의 경우에도 20,000원이 별로 아깝지 않았다. 다른 세미나 처럼 내가 전혀 몰랐던 것을 듣고 오~~하게 되진 않았지만 생각보다 이것저것 정리되는게 많았다. 나같은 경우는 의지박약이라 Eclipse4SL같은 경우고 갔다 와서 보면 사이트의 Getting Started보고도 할 수 있는데 꼭 이런 세미나등 오프에서 봐야 해봐야겠는데? 하는 생각이 들곤 한다.. ㅎㅎㅎㅎ 그런면에서 세미나를 보면서 난 이클립스에 익숙한 편이기 때문에 이클립스4SL을 사용해서 실버라이트개발을 하는 것도 괜찮겠다란 생각도 들었다. 경험쌓고 정보공유해도 좀 흔치않은 정보겠다라는 생각도 들었고... ㅋ<br><br>더불어 끝나고도 점심식사도 같이 하면서 이런저런 얘기도 하니까 세미나에서와는 또 다른 느낌이라서 좋았다. 스타개발자도 이렇게 보니까 다른 세계에 사는 사람도 아니구나하는 생각? ㅎㅎㅎㅎㅎ 어쨌든 다음에 뵈면 아는체 정도는 할 수 있겠다. ㅎㅎㅎㅎ 강의 준비해주신 kenu님과 winkey님께 감솨~~<br><p><strong><a href="https://blog.outsider.ne.kr/281?commentInput=true#entry281WriteComment">댓글 쓰기</a></strong></p>[Book] RIA 개발을 위한 실버라이트 입문Outsiderhttps://blog.outsider.ne.kr/2122009-03-07T21:17:09+09:002008-09-30T22:21:21+09:00<div class="ttbReview">
<fieldset style="margin: 10px; padding: 5px; width: 90%;"><legend><a href="http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=896077037X&ttbkey=ttboutsideris1727002&COPYPaper=1" class="aladdin_title">실버라이트 입문 : RIA 개발을 위한</a></legend>
<p>
</p><table>
<tbody>
<tr>
<td><a href="http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=896077037X&ttbkey=ttboutsideris1727002&COPYPaper=1"><img src="http://image.aladdin.co.kr/cover/cover/896077037x_1.jpg" alt="" border="0"></a></td><td style="vertical-align: top;" align="left"><a href="http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=896077037X&ttbkey=ttboutsideris1727002&COPYPaper=1" class="aladdin_title">실버라이트 입문 : RIA 개발을 위한</a> - <img src="http://image.aladdin.co.kr/img/common/star_s8.gif" alt="8점" border="0"><br>애덤 내이썬 지음, 이정웅 옮김/에이콘출판</td></tr></tbody></table></fieldset><br>이번에 실버라이트 교육을 받으면서 교재로 쓰인 책이다. 이책을 중심으로 해서 진도를 나가진 않았지만... ㅎㅎㅎㅎ 어쨌든 현재 한국에 나와 있는 실버라이트 책으로는 이 책과 <a href="http://www.aladdin.co.kr/shop/wproduct.aspx?isbn=8931436327" target="_blank">"HOONS 닷넷과 함게하는 실버라이트"</a> 딱 2권 뿐인데 훈스닷넷에서 만든 책은 실버라이트 1.1 기반으로 만들어 졌는데 MS가 올해로 넘어오면서 1.1에 대한 플랜을 변경하고 대대적인 변화를 주어 2.0으로 방향을 바꿈으로 해서 현재로써 이책은 큰 의미가 없어진 듯 하다(샀는데.. ㅠ..ㅠ <a href="http://gongdo.tistory.com/275" target="_blank">공도님이 올리신 글</a> 참고)<br><br>그래서 <a href="http://www.adamnathan.net/" target="_blank">애덤 네이썬</a>이 쓴 이 책이 현재 국내에서 유일한 책이나 마찬가지이다. 지금 실버라이트가 2.0 RC0까지 나왔지만 이 책은 1.0중심으로 되어 있다. 1.0 중심으로 되어 있다는 것은 자바스크립트로 실버라이트를 컨트롤 한다는 이야기이다. 1.0과 2.0은 그 기능에서 엄청난 차이가 있고 (내가 2.0 개발은 거의 손대지 못했지만) 전체적으로 아주 대대적인 변화가 있다고 보기 때문에 2.0을 하기 위해서 반드시 1.0을 보아야 하는 것은 아니라고 본다.<br><br>하지만 양쪽을 다 할 수 있다면 좋은 거고.... 하다보면 자바스크립트로 컨트롤 해야할 필요성이 있다고 생각한다.어쨌든 1.0과 2.0은 아예 다른걸로 보아야 한다는 것인데 이책은 2.0이 등장하기 전에 작성된 책이다. (출시일은 올해 3월이긴 하지만 번역서이고 하니...)<br><br><br><br><br><br>국내에서 유일한 1.0에 대한 책이라고는 하지만 내용은 상당히 충실하다고 생각한다. 한권만 있으면 허접한 경우도 꽤 많지만 이 책은 상당히 충실한 편이다. 아무래도 실버라이트 1.0을 하려면 XAML에 대한 이해도 필요하고 자바스크립트로 접근할 수 있는 영역과 자바스크립트의 활용능력 등등이 필요할 것인데 내 느낌으로는 이 책은 XAML에 좀 치중되어 있다. 그도 그럴것이 자바스크립트 자체가 하나의 언어이기 때문에 그 <span style="color: rgb(204, 153, 0);">자바스크립트를 설명하기 위해서 많은 지면을 할애하기 보다는 대부분의 설명이 XAML이 어떻게 구성되어 있고 어떤 동작을 하기 위해서 XAML이 어떻게 구성되는 지를 보여주고 그에 대한 속성들을 자바스크립트 쪽에서 어떻게 접근하는지 정도만 간단하게 보여주고 있다.</span><br><br>자바스크립트를 복잡하게 써서 화려한 실버라이트를 다루는 것은 보여주지 않는다는 얘기다. 그건 자바스크립트의 활용능력에 달려 있으니까 능력껏 하라는 것이고 어떤걸 다룰수 있고 어떻게 접근하는지만 설명하고 있다. 하지만 그렇다고 부실하게 느껴지지는 않는다. 말그대로 그 이상은 개인 능력이니까...<br><br>이 책이 고급 사용자를 위한 타겟팅이라고는 보이지 않고 <span style="color: rgb(204, 153, 0);">제목대로 입문용이다. 각 객체의 특성과 기능들에 대해서 기본적인 부분에 대해 자세히 설명을 하고 있다</span>. 그 이상은 각자 노력하는 수밖에.... 중간중간 현재 1.0이 가진 버그라던지 불가능한 점, 주의해야할 점들까지도 자세하게 짚어주고 있기 때문에 1.0에 대한 입문용으로는 손색이 없다고 생각한다.(비교 대상이 없긴 하지만...) <span style="color: rgb(204, 153, 0);">지은이가 많은 테스트와 이해를 가지고 책을 썼다는 것을 느낄 수 없다.</span><br><br><br><br><br>1.0이기 때문에 비쥬얼 스튜디오가 필요 없어서 툴에대한 얘기는 전혀 나오지 않는다. XAML도 <a href="http://www.microsoft.com/korea/expression/products/Overview.aspx?key=blend" target="_blank">익스프레션 블랜드</a>를 사용해서 대부분 만들겠지만 여기서는 툴에 대한 언급만 잠깐 있을뿐 툴을 사용하는 것에 대한 설명은 전혀 나와있지 않다. <br><br>2.0으로 대세가 넘어가긴 했지만 1.0에 관심이 있다면 입문용으로 볼만하다고 본다. 물론 많은 활용을 위해서는 인터넷에 올라와 있는 많은 포스팅들이 더 큰 도움이 될꺼라고 생각한다.<br></div><p><strong><a href="https://blog.outsider.ne.kr/212?commentInput=true#entry212WriteComment">댓글 쓰기</a></strong></p>실버라이트 교육 끝...Outsiderhttps://blog.outsider.ne.kr/2112009-03-07T21:17:01+09:002008-09-29T23:58:12+09:0010주에 걸친 실버라이트 교육이 끝이났다. 회사에서 직장인환급 과정으로 날라온 이메일에 실버라이트가 있길래 고민좀 하다가 신청을 했다. 현재로썬 내 업무와는 그닥(전혀라고는 할 수 없지만...) 관계가 없지만 회사에서 보내준 메일에 과정이 있길래 그냥 신청을 해버렸다. 우리회사는 업무와의 연관도와는 상관없이 그냥 이렇게 들어도 된다. (배려차원은 아니고....)<br><br>이전에도 실버라이트는 아니었지만 교육에 대한 메일이 몇번 왔었는데 별로 듣지를 않았다. 일단 보통 올때 설명도 없이 그냥 강좌명정도만 날라오기 때문에 난이도도 알수 없고 정확히 어떤 부분을 가르치는 지도 모르겠고 개인적으로 교육은 강사의 능력이 크게 좌우한다고 생각하기 때문에 누가 가르치는지도 안나와 있으니까 그냥 시간만 낭비하게 될까봐 그냥 있었는데 실버라이트 교육은 살짝 고민하고는 신청했다. 어차피 아무것도 모르니까 난이도도 크게 상관없고 신기술이고 교육이다보니 중급을 가르칠 확률도 적어보였고 실버라이트를 가르친다는 것만으로도 어느정도 실력이 있지 않을가 하는게 내 생각이었다.<br><br>10주... 매주 토요일 6시간씩.... 만만찮았다. 말이 10주지 추석이나 뭐다해서 중간에 2번쉬니까 12주...하루하루가 부담되지는 않았는데 전체적으로 매주 토요일을 먹고 있다는게 큰 부담이었고 12주는 생각보다 훨씬 길었다. 원래 토요일은 나에겐 잠자는 날이었는데.... ㅋㅋㅋ<br><br><div class="imageblock center" style="text-align: center; clear: both;"><img src="//blog.outsider.ne.kr/attach/1/1040625701.png" alt="사용자 삽입 이미지" height="105" width="92" /></div><br>사설이 좀 길었는데 어쨌든 내가 꽤 좋아하던 실버라이트를 드디어 배웠다. 배우고 난 소감은... 초기에와는 약간 생각이 달라졌다. 어찌보면 당연한 건데 그때는 그렇게까지 깊게는 생각을 못해봤다고 할까나.... 대표적인 RIA기술로는 <a href="http://www.adobeflex.co.kr/" target="_blank">Flex</a>와 <a href="http://www.microsoft.com/silverlight/default.aspx" target="_blank">Silverlight</a>가 있다. <a href="http://javafx.com/" target="_blank">JavaFX</a>나 <a href="http://www.openlaszlo.org/" target="_blank">OpenLazlo</a>등이 있긴 하지만 그건 논외로 하고..... 어쨌든 여기서 난 실버라이트쪽에 더 끌렸다. <br><br>보통은 자바랑 플랙스랑 매치되고는 하는데 자바개발자면서 실버라이트쪽에 더 끌린 것은 작년에 내가 다니는 웹사이트나 세미나를 통해서 실버라이트에 대한 정보를 훨씬 많이 접했기 때문인듯 하다. 내게는 꽤 매력적으로 보였고 플렉스랑 대비되서 눈에 띄는 점들도 있었고 크게 꽂힌것은 뭐니뭐니해도 딥줌이었다. "이거야!!"라는 생각.... 그러면서 계속 실버라이트가 하고 싶었고 이번 교육을 들었다.<br><br><br><br><br><br>교육은 뒤돌아보면 그렇게 열심히 듣지는 못했다. 일단 신기술을 익힌다는 마인드였기 때문에 실버라이트에 올인할 수 는 없었다. 업무관련해서 공부하고 할것도 많았기 때문에 시간이 지날수록 교육받은 걸 따로 공부하고 준비할 시간은 많이 부족했다. 이건 내 과실이기도 하지만 어쨌든 실버라이트는 1.0과 2.0이 있는데 1.0은 자바스크립트로 컨트롤을 하고 2.0부터는 C#을 비롯한 여러언어로 컨트롤을 한다. <span style="color: rgb(204, 153, 0);">1.0에서는 재미도 있고 잘 쫓아가다가 제대로 쫓아가지 못한것은 2.0부터였는데 생각외로 발목을 잡은 것은 C#이라기 보다는 비쥬얼 스튜디오였다.</span><br><br>나는 닷넷개발자가 아니기 때문에 비쥬얼 스튜디오를 쓸 일이 별로 없다. MS가 자동화가 잘 되어 있는데 비해서 자바쪽은 좀 수동으로 하는걸 선호하는 경향이 있기 때문에 비쥬얼 스튜디오란 툴은 작년에 교육받긴 했지만 오랜만에 만지니 익숙하지 않았다. 더군다나 프로젝트 만들고 컨트롤을 도구상자에서 끌어나 놓으면서 페이지를 만드는 것은 나로써는 익숙치 않은 행동이었고 이러다 보니 잠시만 한눈팔아도 "저거 어떻게 같다 붙힌거지?"하게 되고 그 문제 해결하느라고 정작 들어야 될 설명을 놓치기가 일쑤였다.<br><br>그리고 실버라이트를 설명하기 위해서 기본적으로 알아야 될 자바스크립트에 대한 것들이나 AJAX에 대한 부분들이 있었는데 사람들이 자바스크립트에 대해서 전혀 모르다 보니 이런 부분에 대한 부가설명이 당연히 붙을수 밖에 없었다. 내가 자바스크립트를 다 꿰고 있는 것은 아니지만 다른 설명을 위해 배경지식으로 설명하는 정도에서는 이해할 정도는 됐기 때문에 이시간은 나한테 꽤나 지루한 시간이었고 이런 시간이 거의 이틀치 정도는 되었다. ㅡ..ㅡ<br><br><br><br><br><br>머 내가 열심히 하지 않은 것에 대해서 핑계를 대려는 것은 아니고 실버라이트를 좀 경험하고 나서 내 생각이 오히려 플렉스 쪽으로 치우쳤다는 것이다. 플렉스도 좀 경험하면 다른 생각이 또 들지도 모르겠지만 지금으로써는 내가 왜 실버라이트를? 이라는 생각이 들었다.<br><br>일단 <span style="color: rgb(204, 153, 0);">2.0은 C#베이스다.</span> 1.0은 자바스크립트 기반이라서 아무 환경에서나 할 수 있다지만 새로운 기술들, 기능들은 모두 2.0기반에서 나오고 있다. 1.0만으로도 자바스크립트보다 많은 것을 할 수 있지만 2.0을 안하고 1.0만 한다는 것은 실버라이트의 많은 장점들을 버리는 일이라고 생각하고 다른 실버라이트를 하는 사람들의 글을 보다오 대충 그런것 같다. 지금은 괜찮다고 하더라도 3.0이 나오면 어떻게 할 것인가? 계속 1.0만...... 더이상 기능추가도 안되는것 같은데? <span style="color: rgb(204, 153, 0);">난 자바개발자인데 실버라이트를 위해서 C#을 익혀야 한다는 것이다. </span><br><span style="text-decoration: line-through;">또한 C#으로 한다는 것은 기본적으로 윈도우 기반이란 것을 뜻한다. 다른데서도 된다는 말은 들은것 같은데 본적도 없고 제대로 지원되는지도 모르겠다. 리눅스에서 가능하다는 문라이트나 그런 것은 클라이언트적인 관점이지 서버적인 관점이 아니다. C#을 하려면 닷넷프레임워크가 있어야 하고 자연히 윈도우 기반이어야 한다. 자바는 플랫폿에 상관없이 개발할 수 있고 대부분은 유닉스나 리눅스 기반이 많이 있는데 실버라이트를 위해서 윈도우 서버를 구축해야 한다는 것은 맞지 않다고 본다. 왜냐하면 플렉스가 있으니까...(플랙스쪽도 어도비에 뭔 서버가 있는듯 하긴 한데 이게 무조건 필요한건지까지는 잘 모르겠지만 그냥 주워들은 지식으로는 크게 상관없지 않나 싶다.)</span> <span style="color: rgb(255, 118, 53);">(일부만 수정할까 하다고 이 단락 전체가 같은 의도로 작성한 내용이기 때문에 전체를 수정처리 했다. 줄을 그은 내용이 모두 잘 못 된것은 아니지만 말하고자 했던 "서버가 윈도서버로 제한된다"는 전제가 <a href="http://gilverlight.net/" target="_blank">길버트님</a>의 지적대로 완전히 나의 오해였음이 밝혀졌기 때문에 다른 분들께 잘못되 내용은 전하지 않기 위해서 수정처리를 한다. 실버라이트도 개발할때는 윈도기반에 C#으로 하더라도 결과물은 XAP라는 단일파일로 떨어뜨릴수 있기 때문에 실제 서비스할 서버에서는 환경에 제약을 받지 않는다고 <a href="http://gilverlight.net/" target="_blank">길버트님</a>이 지적해 주심-RSS로 나간건 어떻하지.. ㅠ..ㅠ </span><font style="color: rgb(255, 118, 53);" size="1">2008.10.1</font><span style="color: rgb(255, 118, 53);">)</span><br><br>그리고 <span style="color: rgb(204, 153, 0);">플렉스가 자바랑 많이 비슷하기 때문에 궁합이 잘 맞는다고도 하고 액션스크립트 자체가 그 기반이 ECMA-262이기 때문에 같은 기반을 가지고 있는 자바스크립트를 다룰 줄 아는 나로서는 그 진입장벽이 훨씬 낮다. </span>일단 지금 현재 C#에 대해서는 생각이 없는 가운데 내가 굳이 플렉스보다 실버라이트에 더 기울 이유가 없다고 느껴지게 되었다. 펄이나 파이썬으로도 가능하다고는 하지만 아직까지 다른 언어로 만들어 진 걸 본적도 없고 대부분의 실버라이트 하시는 분들이 현재로써는 닷넷계열 개발자들이기 때문에 C#으로 된 실버라이트에 대한 리소스에 비교하자면 그 차이는 크다.<br><br>결국은 다 할 생각이긴 했지만 이런 이유로 인하여 앞으로는 실버라이트 보다는 플렉스쪽에 맘이 가게 되었다. AIR라는 흥미로운 녀석도 있고.... <span style="color: rgb(204, 153, 0);">개발언어에 상관없다는 편견에 내가 좀 사로잡혔던 것 같다.</span><br><br><br><br><br><br><br><span style="color: rgb(255, 118, 53);">물론 기술이란 것은 절대적인 것은 없다고 생각한다. 기술은 상황에 맞게 쓰는것이 가장 좋다는 것이 개인적 생각이다.</span> 자기가 잘 할 수 있는 기술이 최상의 선택이지만 Java가 좋은 상황이 있으면 C#이 좋은 상황이 있고 실버라이트로 구현하는게 어울리는 부분이 있으면 플렉스가 어울리는 부분이 있다. 개발자로써 하나만 한다는 것은 장기적으로 그리 좋은 선택은 아니라고 생각하지만 그렇다고 초기부터 이것저것 다 할 수는 없는 노릇이다. <br><p><strong><a href="https://blog.outsider.ne.kr/211?commentInput=true#entry211WriteComment">댓글 쓰기</a></strong></p>Silverlight 1.0 을 Javascript로 다뤄보기Outsiderhttps://blog.outsider.ne.kr/1842009-03-07T21:16:17+09:002008-08-09T18:01:54+09:00<div style="padding: 10px; color: rgb(0, 0, 0); background-color: rgb(201, 237, 255);">요즘 한꺼번에 이것 저것 보느라고 좀 어렵긴 한데 실버라이트는 주워만 듣다가 처음 배우니까 전체 개념을 잡기가 쉽지 않았다. 이것저것 배우고 있기는 한데 전체 그림을 아직 못그리고 있으니까 헷갈리기도 하고 맞는건지 아닌건지 잘 모르겠고 포스팅을 하려면 좀 정리가 되어야 하는데 정리가 되지 않는 상황이다.<br><br>그래서 포스팅을 미루고 있긴 했는데 또 그러니까 배운것도 정리가 안되서 계속 다음수업나올때 마다 헷갈려서 배운거라도 좀 정리해서 내껄로 만들어야 겠다. 2차적으로 정보공유에 목적을 두고 내가 알게 된 지식은 공유한다는 원칙을 가지고 있지만 1차적인 블로그의 목적은 내가 배운걸 더 잘 기억하고 나중에 쉽게 찾아볼 수 있게 해서 삽질을 줄인다는데 그 목적이 있으니.... (잘못된 정보 전달을 하게 될까봐 좀 신경쓰이긴 하지만 그런 부분은 다른 고수분들이 지적해 주실꺼라고 생각하고.. ㅎㅎ)</div><br><br>잡설이 길었으니 이제 자바스크립트로 핸들링을 해보자. <a href="http://blog.outsider.ne.kr/180" target="_blank">앞의 포스팅</a>에서 얘기했듯이 1.0에서는 실버라이트를 자바스크립트로 핸들링한다. 이전 포스팅에 있던 XAML을 가져와보자.<br><br><pre class="line-numbers"><code class="language-xml">
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="silverlightOnLoad" >
<Ellipse Height="100" Width="100" Stroke="Black" StrokeThickness="10" Fill="SlateBlue" x:Name="ellipse1" />
</Canvas>
</code></pre><br><br>Canvas태그에 Loaded라는 속상을 추가했다. <span style="color: rgb(255, 118, 53);">이 속성을 추가하면 실버라이트가 로드된 후에 자바스크립트에서 Loaded속성에 지정한 이름의 함수를 찾아서 호출한다.</span> 당연히 자바스크립트에 silverlightOnLoad라는 이름의 함수가 정의되어 있어야 한다. 기본적인 초기화(?)는 XAML파일에서 하지만 그외에 실버라이트가 로드된 다음에 처리해야 할 것 있다면 여기서 해주면 된다.<br><br>Ellipse의 속성으로 x:Name를 추가했다. 여기서는 x라는 네임스페이스를 사용했는데 네임스페이스는 최상위 Canvas태그 내에 지정되어 있다. <span style="color: rgb(255, 118, 53);">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 의 코드가 네임스페이스를 지정하는 부분이고 Name를 사용하려면 이 부분이 지정되어 있어야 한다</span>.<br><br><br><br>이제 자바스크립트로 핸들링을 해야 하는데 어느 것이나 마찬가지듯이 핸들링을 하려면 하기전에 일단 엘레먼트를 선택해야 한다. 어떤걸 가지고 핸들링 할건지 선택해야 머 핸들링하든지 말든지 할것 아닌가...<br><br><pre class="line-numbers"><code class="language-javascript">
function silverlightOnLoad(sender, args) {
alert("sivlerlight has Loaded");
var element = document.getElementById("silverlightControl").content.root.Children.GetItem(0);
//var element = sender.gethost().content.root.Children.GetItem(0);
//var element = sender.findname("ellipse1");
alert(element);
}
</code></pre><br><br>위의 함수를 넣으면 실버라이트 객체가 로딩됨과 동시에 sivlerlight has Loaded라는 메시지가 출력된다. loaded함수는 2개의 object파라미터를 넘겨받는다. sender와 <span class="parameter" sdata="paramReference">eventArgs</span>인데 sender는 말 그대로 함수를 호출한 객체이고 eventArgs는 안써봐서 솔직히 잘 모르겠는데 <a href="http://msdn.microsoft.com/en-us/library/bb979758%28VS.95%29.aspx" target="_blank">MSDN</a>에는 "This parameter is always set to null"라고 나타난다. ㅡ..ㅡ 위의 소스에서 sender는 Canvas가 된다.<br><br><br><br><br><br>그 다음에 XAML에 있는 Ellips 객체를 다루기 위해서 객체를 찾아야 한다. 4,5,6번줄은 모두 같은 결과가 나온다. 3가지 방법중(내가 알고 있는...) 편한 방법을 사용하면 된다.<br><br style="font-weight: bold; color: rgb(255, 118, 53);"><span style="font-weight: bold; color: rgb(255, 118, 53);">실버라이트객체의 content에 root가 최상위 Canvas이다.(xaml파일에서 최상위에 볼수 있는 Canvas태그. 최상위 Canvas라고 한 것은 Canvas안에 또 Canvas가 들어갈 수 있기 때문이다.) 이 최상위 Canvas의 자식들(Children)중에서 GetItem을 통해서 원하는 객체를 찾아낼 수 있다.</span><br><br>4번 줄은 실버라이트객체를 통창적인 자바스크립트 코드를 이용해서 찾았다. <a href="http://blog.outsider.ne.kr/180" target="_blank">이전 포스팅</a>의 html소스를 보면 실버라이트를 불러오는 object태그의 이름을 silverlightControl라고 준 것을볼수 있고 그냥 그 Object태그를 찾아온 것이다.<br>5번줄은 getHost() 메서드를 이용한 것이다. 실버라이트의 어떤 오브젝트에서도 getHost()를 사용하면 최상위 실버라이트객체를 얻어낼 수 있다. 솔직히 여기서는 sender가 Canvas이기 때문에 sender.gethost().content.root로 Canvas를 찾은 것은 다시 올라갔다가 원래 위치로 돌아온 좀 멍청한 짓이긴 한데 그냥 이런식으로 찾는다는 것을 알기 위해서...<br>6번줄은 제일 많이 사용하지 않을까 싶은데 sender의 객체로 findname()를 사용해서 해당이름의 엘레먼트를 찾아온 것이다. 자바스크립트의 document.getElementByID()처럼 직관적이다. GetItem()같은 경우는 위치가 바뀌면 소스도 바꾸어 주어야 하기 때문에.... findname()메서드는 어떤 Dependency Object에서라도(Dependency Object는 모든 실버라이트 Object의 최상위 객체이다.) 그 xaml의 엘리먼트를 찾아올 수 있다.<br><br>3가지중 어떤것을 쓰던지 간에 위코드에서는 alert메시지로 "Ellipse"가 튀어나온다. <br><br><br><br><br><br><br>그럼 이제 다룰 엘리먼트를 찾았으니까 먼가 해야지. Ellipse를 클릭하면 Rectangle가 생기도록 해보자. 위 함수의 마지막줄에 아래 코드를 추가하자.<br><br><span style="font-weight: bold; color: rgb(255, 118, 53);">element.AddEventListener("MouseLeftButtonDown", createRectangle);</span><br><br><a href="http://msdn.microsoft.com/en-us/library/bb979674%28VS.95%29.aspx" target="_blank">MSDN에 보면 AddEventListener에 대한 정의</a>가 다음과 같이 나온다.<br><br><span style="font-weight: bold; color: rgb(255, 118, 53);">object.AddEventListener(eventName, functionReference)<br></span><br>첫번째 파라미터는 이벤트이름이고 두번째가 해당이벤트에서 실행할 참조함수이다. 해당 object에서 eventName가 발생하면 functionReference()를 실행하는 것이다. eventName의 종류에 대해서는 <a href="http://msdn.microsoft.com/en-us/library/bb980189%28VS.95%29.aspx" target="_blank">해당 MSDN</a>을 참고하면 된다. 즉 위의 코드는 Ellipse를 마우스 왼쪽클릭하면 createRectangle()를 실행하라는 뜻이다.<br><br><pre class="line-numbers"><code class="language-javascript">
function createRectangle(sender, args) {
var obj = document.getElementById("silverlightControl");
var rect = obj.content.createFromXaml("<Rectangle />");
rect["Canvas.Left"] = 150;
rect["Canvas.Top"] = 10;
rect.Width = 100;
rect.Height = 100;
rect.Stroke = "red";
rect.Fill = "SlateBlue";
rect.StrokeThickness = "5";
obj.content.root.children.add(rect);
}
</code></pre><br><br style="color: rgb(255, 118, 53);"><span style="color: rgb(255, 118, 53);">silverlightObject.content.CreateFromXaml(xamlContent)를 이용해서 XAML에 Rectangle엘레먼트를 추가하고 속성값을 할당한다. 그리고 add()함수를 이용해서 Rectangle엘리먼트를 추가하는데 여기서는 최상위 Canvas에 추가할 것이므로 document.getElementById("silverlightControl").content.root.children에다가 add를 해준다.</span> 이렇게 해주면 Ellipse를 클릭했을때 Rectangle이 화면에 나타난다.<br><br>
<div style="text-align: center;"><font style="font-weight: bold;" bold;="" size="5"><a href="/myexample/2008/handlesilverlight1/example.html" target="_blank">실버라이트 1.0 자바스크립트로 조작하기 Example</a></font><br></div><br>물론 이건 자바스크립트로 다루는 걸 익히기 위해서 이렇게 한것이지 <span style="font-weight: bold; color: rgb(255, 153, 0);">동적으로 자바스크립트에서 다 생성할 필요없이 메타데이터의 역할인 XAML에서 생성하는 것이 훨씬 좋은 방법이다. </span>그게 메타의 역할이니까...<br><p><strong><a href="https://blog.outsider.ne.kr/184?commentInput=true#entry184WriteComment">댓글 쓰기</a></strong></p>Silverlight 1.0 시작하기Outsiderhttps://blog.outsider.ne.kr/1802009-03-07T21:16:12+09:002008-08-04T02:06:55+09:00지난 주 부터 <a href="http://silverlight.net/" target="_blank">실버라이트</a> 교육을 받고 있다. 가끔 회사에서 직장인 환급 교육관련해서 메일이 오곤 했는데 그닥 눈에 띄는 것도 없고 교육에 대한 자세한 내용도 없고 해서 크게 신뢰할 수도 없다보니 그냥 항상 지나쳤었는데 이번 교육과정들은 웹개발쪽만 있어서 고민을 좀 했는데 마침 실버라이트 1.0/2.0 강좌가 눈에 띄어서 듣기로 했다.<br><br>어차피 내돈은 한푼도 안드는거고 주말에 시간만 좀 투자해 주면 되는거였기 때문에... ㅎㅎ 실버라이트 혹은 RIA관련 기술에 대한 관심이 계속 있었지만 다른 일에 치여서(핑계겠지만...) 시작을 전혀 못하고 있었는데 교육을 받으면 반강제(?)적으로도 하게 되고 새로운 랭귀지라서 기초만 좀 익히면 그 다음은 혼자서도 어느정도 할 수 있을 것이라고 생각을 해서 신청을 했다. 그래도 8주 주말 압박은 좀.. ㅡ..ㅡ<br><br><br><br><br>어쨌든 지금은 <font color="#ff7635">실버라이트 1.0을 배우고 있다.</font> 내가 좀 착각하고 있던 것이 1.1을 없어지다 보니까 1.0도 신경을 안써버리게 된것.... ㅡ..ㅡ<br><br>일단 시작이니까 실버라이트 얘기를 좀 하면 MS가 작년에 RIA기술로 실버라이트1.0이라는 기술을 발표했다. 실버라이트는 웹에서 사용할 수 있는 RIA기술로서 윈도우즈 Vista가 출시되면서 등장했던 WPF의 일부기능을 추려서 실버라이트라고 내 놓은 것이다. RIA시장은 현재는 Flash/Flex가 장악하고 있다고 생각하고 있고 실버라이트가 최근에 치고 올라오고 있고 그 외에도 OpenLaszlo나 JavaFX등이 있다. <br><br><br><br><font color="#ff7635">실버라이트는 브라우저별로 실버라이트 런타임만 설치하면 사용할 수 있기 때문에 플래시 플레이어처럼 어느정도 보급만 되면 불편없이 자연스럽게 사용할 수 있다</font>. 자세한 내용은 잘 모르지만 리눅스 쪽에서도 문라이트라는 녀석이 있어서 리눅스에서도 실버라이트를 볼 수 있다.(실제로는 호환성이 어떤지 모르겠지만... 지금도 베타가 계속나오는 통에 윈도우에서도 런타임 설치에 좀 문제가 있는듯... 파폭에서 잘 설치 안될때도 많고... ㅎ)<br><br><font color="#ff7635">실버라이트 1.0은 자바스크립트와 XAML로 이루어져 있다. 그래픽적인 요소들의 정보를 XAML이라는 이름의 XML로 가지고 있고 이것을 자바스크립트로 다루어서 동작하도록 할 수있다. 블랜드라는 툴을 이용해서 디자이너들은 XAML파일을 내보낼 수 있고 개발자는 XAML파일을 이용해서 비쥬얼 스튜디오로 실버라이트 개발을 할 수 있는 협업구조이다.(</font>이런 형태의 협업은 Flex쪽에서도 거의 동일한듯....)<br><br>1.0은 내가 보기에는 발표정도의 의미가 강하다. MS가 우리 이런거 한다 하면서 시장 분위기 조성하고 준비하기 위한.... 모두가 알고 있듯이 진짜는 실버라이트 2.0에 있다. 원래는 1.0을 출시하고 올해 1.1을 출시하려고 했지만 MS에서 준비하다보니 1.1의 분량이 너무 많아서 1.1의 이름은 2.0으로 변경하였다. 2.0에서는 C#을 포함하여 여러가지 언어를 지원하고(정확한 지원 언어에 대해서 못찾겠네) 1.0에서 안되던 많은 부분을 지원하고 있어서 많은 사람들이 기대를 하고 있고 현재 Beta 2까지 나와있는상태이다.<br><br><br><br><br><br>일단 실버라이트를 돌려보자. 새로운 언어를 만나면 시작이 Hello World이듯이 실버라이트도 일단 띄워야 멀 하든지 말든지 할 것 아닌가. 현재 실버라이트 1.0에 대해서만 배우고 있는 관계로 일단 1.0에 대해서만 얘기한다. 2.0은 추후에.... <br><br><pre class="line-numbers"><code class="language-html">
<object type="application/x-silverlight" id="silverlightControl" width="300" height="300">
<param name="source" value="XMLFile.xaml"/>
<param name="background" value="#1b2d3d" />
<param name="onError" value="onSilverlightError"/>
</object>
</code></pre><br><br>Html파일안에 위처럼 Object태그로 이용해서 삽입할 수 있다. background속성은 페이지의 배경색과 맞추기 위해서 넣은 속성이다. source 프로퍼티로 XAML파일을 지정해 준다. 어떤 내용을 어떻게 보여줄 지에 대한 정보를 답고 있다. 여기서는 간단한 도형만 보여준다.<br><br><pre class="line-numbers"><code class="language-xml">
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Ellipse Height="200" Width="200" Stroke="Black" StrokeThickness="10" Fill="SlateBlue" />
</Canvas>
</code></pre><br><br>위의 XAML파일은 <a href="http://silverlight.net/quickstarts/silverlight10/default.aspx" target="_blank">Silverlight 1.0 QuickStarts</a>에서 가져왔다. XAML에 대한 내용을 작성하기는 양도 많고 어디서 부터 해야할 지도 몰라서...<br><br><br>
<div style="text-align: center;"><strong><a href="http://blog.outsider.ne.kr/myexample/2008/silverlighthello/example.html" target="_blank"><strong><font size="5">Silverlight 1.0 Hello World Example</font></strong></a></strong></div><br>물론 실버라이트를 보려면 실버라이트 런타임이 설치 되어 있어야 하고 실버라이트가 설치되어 있지 않을때 자동적으로 인스톨링크가 연결된다거나 하는 처리는 되어 있지 않다. 실버라이트를 설치하려면 <a href="http://www.microsoft.com/silverlight/resources/install.aspx" target="_blank">실버라이트 설치페이지</a>를 통해서 설치할 수 있다. 책에는 Object태그로 실버리아트를 임베드하는 것은 사파리에서는 돌아가지 않아서 embed태그를 써야한다는데 런타임이 2.0으로 업데이트되서인지 지금은 object태그로 4대브라우저(IE, 파이어폭스, 오페라, 사파리)에서 다 잘 돌아간다.<br><br><br>덧) 이것저것 배우고 있기는 한데 아직 정리가 안되서 포스팅하기가 쉽지 않네....<p><strong><a href="https://blog.outsider.ne.kr/180?commentInput=true#entry180WriteComment">댓글 쓰기</a></strong></p>