<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>좋은생각 - 프로그래밍 category</title>
  <link>http://goodidea.blogsite.org/categories/programming/</link>
  <description>크게 성공한 사람은 작은 성공을 계속하는 사람일 뿐이다. -- 크리스토퍼 몰리</description>
  <language>ko</language>
  <copyright>고진혁</copyright>
  <lastBuildDate>Tue, 22 Sep 2009 02:25:53 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>제 1회 공개SW 기술세미나  참관기</title>
    <link>http://goodidea.blogsite.org/2007/11/14/1195016381443.html</link>
    
      
        <description>
          제 1회 공개SW 기술세미나  참관기...           by Ko,jinhyuk    &lt;br /&gt;
&lt;br /&gt;
한국공개소프트웨어협회에서 참으로 좋은 세미나를 갖어주었다.  11월 10일 토요일.  주5일 근무하고 부턴.. 놀러가는거 빼곤 어디가는게 싫었는데. &lt;br /&gt;
&lt;br /&gt;
정말 좋은 자리인것 같아. 움직이기 싫은 몸을 이끌고 장장 1시간50분 전철타고 가락동 한국소프트웨어진흥원 5층 강당으로 갔다. &lt;br /&gt;
&lt;br /&gt;
먼저와있던 사람들은 4~5명정도 있었던것 같고.. 평소 세미나나 컨퍼런스 같으면 뒷자리를 선호했을텐데 일부러 오늘은 왼쪽편 맨앞에 앉았다. &lt;br /&gt;
(근데 이런 강사가 오른쪽 끝에서 발표할줄이야... ㅡㅡ;)&lt;br /&gt;
&lt;br /&gt;
세미나 일정은 12시 40분 부터 진행되는 거였는데.. 준비가 좀 늦어져서  20~30분늦게 시작되었던것 같다. &lt;br /&gt;
&lt;br /&gt;
먼저 &lt;font size=&#034;2&#034;&gt;한국공개소프트웨어협회 문희탁 회장께서 세미나가 있게된 배경(지난 협회 워크샵에서 의견을 모아 진행하게 되었다는)을 얘기하고 감사의 얘기를 하고 진행이 되었다.&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;첫번째 주제(&lt;font size=&#034;2&#034;&gt;Red five를 이용한 스트리밍 서비스)&lt;/font&gt;는 RED5 Flash를 Client로 하는 공개 스트리밍 서버에 관한 얘기였다.  세미나 전에 몰랐던 오픈소스솔루션이었고 요즘 실버라이트등으로 인해 스트리밍관련 관심사가 있었던지라 &lt;br /&gt;
기대가 되었던 부분이었다. http://www.osflash.org 에서 공개된 솔루션이고 사이트를 방문해보니  아직은 0.x 대 버전이었다.  &lt;a title=&#034;blog:2007_05_23_red5_061_released&#034; class=&#034;wikilink1&#034; href=&#034;http://osflash.org/blog/2007_05_23_red5_061_released&#034;&gt;Red5 0.6.1 final released&lt;/a&gt; 2007/05/23 14:55&lt;br /&gt;
덕분에 osflash.org 라는 flash 관련 공개소프트웨어 사이트도 알게되고... (오픈소스관련해서는 주로 sf.net 만 찾아가다보니 ^^)  &lt;br /&gt;
요약은 이런것 같다. Macromedia (지금은 adobe) 의 Remoting 서버의 역할을 해주는 오픈소스 기반 서버라고 보면 될것 같다. 그중에서도 스트리밍에 좀더 강한데.. Remoting Object 처리등도 지원하면서 채팅 서비스같은것도 손쉽게 구성할수있는 서버였다. 실제로 서비스를 구성해본경험에서 동시접속사용자 100명에서 debian 리눅스가 설치된 코어2듀오 서버에서 50% cpu 사용만 보이는 훌륭한 퍼포먼스를 보여줬다는 얘기도 있었다.&lt;br /&gt;
많은 활용가능성을 보여주는 좋은 소개 시간이었다.&lt;br /&gt;
&lt;br /&gt;
두번째는 (&lt;font size=&#034;2&#034;&gt;Ruby on Rails를 이용한 포털 구축) 가끔 잡지나 사이트 돌아다니다가 보았던 Ruby 와 Rails 에 관한 내용이었다.  전에도 간단하게 Ruby on Rails 에 대해 본적은 있었는데.. 개발자가를 편하게 해주기위해 많은 노력을 기울린 스크립트 언어 라는 내용들이 있었다.  데모는 간단하게 RubyAMT라는걸 이용해서 Flex와 연동한 Rails 를 본것같은데 쉽게 db 에 데이터를 업데이트하는 화면을 빠르게 만들어 보이는것이었는데.. 예전에 비주얼베이직에 ODBC로 하는 DB 레코드 관리를 쉽게 같다붙이는 것과 유사한 화면 이었는데..  항상 보면 실전에서 그런 단순 DB업데이트는 사용하지 않는다는것이 문제라는 생각이다.  마치 미리 게시판 모듈만들어 놓고  게시판 이름만 넣으면 게시판이 만들어지는데  그것이 언어의 편리성으로 인해 게시판을 쉽게 만들어지는 것이 아니듯... 결국 새로운 컴포넌트 개발에 있어서는 별반 도움이안되지 않을까 싶은생각이 들었다... 물론 최근 스크립트 언어가 점점 많은 영역을 차지 하고있고.. 앞으로 대세는 스크립트언어라고 생각하는 본인 이지만..... 나에게 있어 웹어플리케이션 개발에 Java를 대신하긴 많이 부족해보였다.&lt;br /&gt;
&lt;br /&gt;
세번째(Apache Axis II를 이용한 웹서비스 구축)는 Axis2 를 주제로 한 내용이었다.  이번 세미나에서 그래도 가장 많이 접하고 알고 있던 내용이었는데... 티맥스의 필드에서 경험이 많은 개발자를 통한 Axis2 교육이었다.  이미 많이 알고있는 내용이고 나역시도 활용하고 있는것이어서 새로울것은 없었으나... 제우스(티맥스제품)에서도 사용한다는 내용이 귀에들어왔고 (사실 관심있던 APP 서버는 아니었지만) 웹서비스 개발자 들이 별로 없는 것같다는 내용등등 이었다. 실제로 Axis 관련 경험자를 물었을때 수강자들 가운데 나포함 2명정도 였으니... (더있었는지는 모르지만) 실로 그러한것같다.  보통 인터넷을 통해 웹으로 관련자료를 뒤지다 보면 그래도 글들이 보여서 꽤나 많은 개발자들이 쓰지 않을까 싶었는데... 정말  웹서비스개발경험자들이 적은건가..? 강사분께는 나름 좋은 발표가 되려고 노력한 부분에 감사를 드린다...&lt;br /&gt;
&lt;br /&gt;
네번째(uEngine BPM)는 이번 세미나에서 가장 기대했던부분이다. 지난 BPM 컨퍼런스에서는 단순히 브로셔만 보고 실제 제품관련 설명은 듣지못했는데. soruceforge.net 에서 오픈된 국내 오픈소스 S/W 라고 해서 기대되었다.  특히나 요즘 새로운 시장으로 주목받는 BPM 영역에서의 좋은 대안이 될수있을 것 같다는 생각이들었는데..&lt;br /&gt;
&lt;br /&gt;
uEngine BPM은 오픈소스 포탈인 Liferay , 웹서비스 엔진 Axis II, Mondrian OLAP Server, JBOSS Drools BRMS 등에 나름 업계에서 검증된 분야별 엔진들과 자체 개발 BPM 엔진을 탑재해 제품화시킨 실전 상용으로 운영하는 시스템으로 손색이 없어 보였다.&lt;/font&gt; 데모가 진행되는 동안에 보여진 제품의 기능들은 전반적으로 완성도도 높아보이고 화면도 비교적 다양하고 직관적이어고 한국적이어서 국내실정에 적절한 대안이 될수있을것 같았다. 특히나 유명 오프소스 솔루션들이 외국제품들이&lt;font size=&#034;2&#034;&gt; 개발구축 과정및 운영하는 과정에서 서비스지원이 아무래도 외국업체의 지원이라 용이하지 않지만 이제품은 국내에서 만들어지 제품으로 실제 프로젝트 적용하는데 있어서도 많은 어려움이 없을것같아 보였다.&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;
&lt;div style=&#034;padding: 1em 0pt; text-align: left;&#034; id=&#034;w9iu&#034;&gt;&lt;img src=&#034;http://docs.google.com/File?id=dhtdf9jv_163chkx5tgk&#034; style=&#034;width: 608px; height: 1007px;&#034; alt=&#034;&#034; /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        </description>
      
      
    
    
    
    <category>프로그래밍</category>
    
    <comments>http://goodidea.blogsite.org/2007/11/14/1195016381443.html#comments</comments>
    <guid isPermaLink="true">http://goodidea.blogsite.org/2007/11/14/1195016381443.html</guid>
    <pubDate>Wed, 14 Nov 2007 04:59:41 GMT</pubDate>
  </item>
  
  <item>
    <title>std::basic_string을 VARIANT의  bstrVal 타입에 대입하기와  반대로 VARIANT의 bstr</title>
    <link>http://goodidea.blogsite.org/2007/09/19/1190187822544.html</link>
    
      
        <description>
          &lt;strong&gt;std::basic_string을 VARIANT의  bstrVal 타입에 대입하기와  반대로 VARIANT의 bstrVal을 std::basic_string을 넣기 예제    -- 작성자 goodidea.blogsite.org: 고진혁&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
보통 IDispatch 를 통해 외부에 interface로 호출할때  VARIANT로  값을 넘기고 받게 되는데 이때 문자열처리예제이다.&lt;br /&gt;
&lt;br /&gt;
아래는 IE에서 띄운 ActiveX 에서 javascript 함수쪽에 이벤트를 발생해서 다시 javascript 함수결과를 받아서 처리하는경우이다.&lt;br /&gt;
&lt;br /&gt;
void  foo::sample( int messageType, std::basic_string&lt;char&gt; *message){&lt;br /&gt;
&lt;br /&gt;
VARIANT    vtT[1];  // 리턴용&lt;br /&gt;
VARIANT rgargs[2]; // 파라메터용&lt;br /&gt;
&lt;br /&gt;
rgargs[1].vt =VT_INT;&lt;br /&gt;
rgargs[1].intVal=messageType;&lt;br /&gt;
&lt;br /&gt;
rgargs[0].vt =VT_BSTR;&lt;br /&gt;
&lt;font color=&#034;#ff0000&#034;&gt;&lt;strong&gt;       // 이부분은 std::basic_string 을 bstrVal 로 대입할때&lt;br /&gt;
&lt;/strong&gt;&lt;/font&gt;        rgargs[0].bstrVal=SysAllocString( _bstr_t(message-&amp;gt;c_str()));&lt;br /&gt;
&lt;br /&gt;
(*message)=&amp;quot;기본메시지&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if (m_dispEvents)&lt;br /&gt;
{&lt;br /&gt;
if (SUCCEEDED(DsoDispatchInvoke(m_dispEvents, NULL, SOME_EVENT_ID, 0, 2, rgargs, &amp;amp;vtT[0])))&lt;br /&gt;
{&lt;br /&gt;
char buf[2048];&lt;br /&gt;
&lt;br /&gt;
// 핵심은 이부분이다.    이벤트 결과로 받은 bstrVal을 std::basic_string으로 넣는경우이다.            &lt;br /&gt;
wcstombs(buf,vtT[0].bstrVal,2048);&lt;br /&gt;
&lt;br /&gt;
(*message)=buf;&lt;br /&gt;
&lt;br /&gt;
&lt;font color=&#034;#ff0000&#034;&gt;&lt;strong&gt;             // 받은곳에서 클리어   ActiveX 에서 브라우져쪽에 javascript를 호출해서 javascript 함수내에서 문자열을 되돌린경우 이에대한 메모리 해제책임은 넘겨받은 쪽에있다.&lt;/strong&gt;&lt;br style=&#034;font-weight: bold;&#034; /&gt;
&lt;/font&gt;            VariantClear(&amp;amp;vtT[0]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}else{&lt;br /&gt;
&lt;br /&gt;
(*message) = &amp;quot;invoke error&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** 하여간 c나 c++ 은  타입처리가 정말이지... 뭣 같다... java가 좋아..&lt;br /&gt;
&lt;/char&gt;
        </description>
      
      
    
    
    
    <category>c++</category>
    
    <comments>http://goodidea.blogsite.org/2007/09/19/1190187822544.html#comments</comments>
    <guid isPermaLink="true">http://goodidea.blogsite.org/2007/09/19/1190187822544.html</guid>
    <pubDate>Wed, 19 Sep 2007 07:43:42 GMT</pubDate>
  </item>
  
  </channel>
</rss>
