생각2011.03.29 14:38


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 꿍스
생각2010.11.23 22:24
오랜만에 WTL(Windows Template Library)의 공식 Yahoo Groups 에 방문해 보니 WTL의 최신 릴리즈에 대한 질문에 WTL을 만든 Microsoft의 Nenad Stefanovic의 글을 보았습니다.


WTL의 마지막 릴리즈가 나온지 3년이 넘었습니다. (http://wtl.sourceforge.net/) 사실 잊혀지나 생각했는데 위의 글을 보니 반갑네요. 딱히 차후 계획또 없고 빠뀐다 라는 말이 잘못된다고 하는거 보니 리본지원과 약간의 향상과 같은 소소한 업데이트 인거 같습니다. 계속 꾸준히 업데이트 되었으면 좋겠네요.

사실 WTL을 예전부터 사용하면서 정말 좋다고 생각했습니다. MFC에 비해서 뛰어난 점이 많다고 생각합니다. WinAPI 를 객체지향으로 구현하하여 MFC에 비하여 속도가 빠를 뿐 아니라 컴파일 후의 바이너리 크기 또한 작고 동작속도도 빠릅니다. 또한 MFC의 편리한 기능인 DDX나 메시지 맵등을 구현하고 있을 뿐 아니라 WinAPI를 이용한 오픈소스 이기 때문에 상속받아 또다른 클래스를 만들거나 커스터마이징을 하기 쉽습니다. 다만 오픈소스인 만큼 Microsoft의 전폭적인 지원이 없고 문서가 거의 전무한 것이 단점입니다. 하지만 WinAPI와 MFC에 능통한 개발자라면 쉽게 WTL의 기능을 사용할 수 있습니다. 이외에도 ATL(Active Template Library)를 기반으로 만들어진 만큼 COM을 쉽게 사용할 수 있습니다.

이러한 장점에도 불구하고 Microsoft의 .NET 전략에 밀려 지원이 없는것이 정말 아쉽습니다. WTL의 장점을 알고있는 여러 윈도우즈 프로그래머들은 업데이트가 없음에도 스스로 새로운 클래스를 기존 WinAPI를 이용하여 만들어 사용하고 있습니다.

안타깝네요. WTL을 Microsoft가 전폭적으로 지원하였으면 버전별로 필요한 MFC의 DLL 문제에서 벗어날 수 있을 뿐만아니라 성능과 바이너리 크기또한 최적화된 많은 프로그램이 나왔을텐데요.


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 꿍스
생각2010.11.09 00:37


요즈음 IT기술의 발전에 플랫폼이 중심에 있고 이들간의 경쟁이 치열합니다. 대표적으로 모바일 분야에서는 Google의 Android와 Apple의 iOS, SNS(소셜네트워크서비스)에서는 Facebook의 F8, Google의 OpenSocial이 있습니다. 신문기사나 블로그들을 보면 이러한 각 분야의 플랫폼에 대한 글이 많은 수를 차지하고 있고 각 회사들도 많은 투자를 하며 그들만의 생태계를 늘려가려고 노력하고 있습니다.


 
 



컴퓨터에서의 플랫폼이란  하드웨어나 소프트웨어의 중간 계층으로 하부의 기술들을 쉽게 사용할 수 있도록 지원해 주는 기술들입니다. 많은 사용자들이 사용하는 OS(Operating System 즉 윈도우즈)역시 플랫폼입니다. 하드웨어와 소프트웨어의 중간에서 하드웨어의 복잡함을 숨기고 사용자들이 편리하게 이용할 수 있게 해주기 때문입니다. 이러한 의미에서 위에서 사례로 든 모바일, SNS 마찬가지로 모바일 기기, SNS서비스를 사용자들이 편리하게 사용할 수 있도록 하는데 있습니다. 요즈음은 소비자들의 기대가 높아져 더욱더 많은 기능을 요구하게 되었습니다.


사용자들은 특정 플랫폼을 선택하면 되지만 개발자의 입장은  다릅니다. 소프트웨어 개발자체가 진입장벽이 있는 편이고(없다고 생각하는건 정말 기본이 없는 프로그래머라고 생각합니다.) 날마다 새로운 기술이 쏟아지는 현장에서 모든 플랫폼을 마스터하는것은 불가능합니다. 어쩔수 없이 선택이 필요하고 그러한 선택은 보통 가장 유망한 혹은 인기있는 플랫폼을 선택하게 마련입니다. 혹여나 자신이 선택한 플랫폼이 시장에서 인기가 시들해지면 재빨리 다른 플랫폼의 학습을 하거나 혹은 퇴보를 받아들일 수 밖에 없습니다.


플랫폼을 제공하는 회사들은 플랫폼을 강화하는데 많은 노력을 하기 때문에 사용자들의 기대치를 모두 해결해 주지 못합니다. 그래서 그들은 플랫폼으로 개발자들을 모으고 그들에게 그러한 역할을 위임하였습니다. 그저 플랫폼을 제공한다고 해서 개발자들이 개발을 하는 것은 아닙니다. 플랫폼 제공회사들 또한 자신의 플랫폼이 매력적이고 상업적으로 성공할 수 있다고 끊임없이 광고, 세미나등 다양한 방법을 통해서 광고하고 지원을 하여 자신들만의 생태계를 늘리고 있습니다.


왜 이렇게 생태계를 늘리는 걸까요? 답은 간단하게 생각할 수 있습니다. 제가 좋아하는 스타워즈에 대해 말해보겠습니다. 저는 이러한 문화컨텐츠인 스타워즈도 하나의 플랫폼 이라고 생각합니다. 스타워즈영화, 만화등에 나오는 지금의 우리와는 다른 세계와 관객을 이어주기 때문입니다. 더욱이 관객들에게 재미를 선사도 합니다. 스타워즈의 예를 보면 스타워즈 세계관에 대한 플랫폼을 구축함으로 인해서 피규어, 게임, 만화, 영화등 수십만명의 팬을 거느리고 있으며 이러한 세계관을 만들어가는 것은 스타워즈를 처음생각한 조지루카스 혼자서는 불가능합니다. 그러기에 각 분야에 다양한 사람들이 스타워즈 소설을 적기도하고 만화를 그리기도 하고 있습니다. 


< 스타워즈 영화 포스터들 >



이러한 예에서 볼때 플랫폼 업체들이 플랫폼을 무료로 공개하고 어마어마한 돈을 들이면서 플랫폼을 홍보하는 이유는 바로 스타워즈의 피규어와 같은 부가 이익 입니다. 물론 각 회사마다의 목표는 다르겠지만 공통된 목표는 바로 사용자들의 증가입니다. 이러한 사용자들의 증가를 플랫폼업체들도 노력하지만 플랫폼을 개발하는 개발자들 또한 그들의 목표에 지대한 영향을 미치게 됩니다. 


하지만 플랫폼을 단지 사용만 해서는 절대 그들의 손에서 벗어날 수가 없습니다. 주도권은 플랫폼 제공업체가 가지고 있습니다. 당장에라도 Android를 Google이 포기한다면?? iPhone AppStore이 개인이 아닌 기업만 개발에 참여할 수 있도록 한다면?? 개발자들은 또 다른 플랫폼을 향해가고 또 다른 플랫폼에 종속적이 될 뿐입니다. 어떻게 보면 영원히 벗어날 수 없는 족쇄라고 할까요? 단지 족쇄가 바뀔뿐 정말로 자유로울 수는 없을 것 같습니다. 


플랫폼을 직접 만들어 보면 어떨까요? 외국에 비해 앞서 설명한 플랫폼이 정말 부족한 우리나라에 삼성전자는 바다 라는 모바일 플랫폼을 선보였습니다. 아직까지 반응은 솔직히 좋지 못하더군요. 삼성전자는 바다 무료교육을 하는거 같기는 하지만 그것으로는 많이 부족한 것 같습니다. 제2의 Android, 제2의 바다를 위해 창의적으로 직접 플랫폼을 개발하는 개발자가 되고 싶습니다. 왜냐하면 저는 자유롭고 싶으니까요.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 꿍스
TAG 플랫폼
생각2010.08.18 11:35

구글 Chrome to Phone : http://techjun.com/1258
                                 : http://code.google.com/p/chrometophone/

Chrome to Phone 2.0이 몇일전 정식으로 마켓에 등록되었습니다.

아직 한국 마켓에서 보이지 않아 우회해서 (My Market등 사용) 다운받아야 합니다.

사용해보니 웹브라우저상에 있는 다양한 정보들을 별도의 수고 없이 바로 핸드폰으로 보낼 수 있다는 점이

굉장히 편리했습니다. 예전같으면 필요한 정보를 똑같이 핸드폰에 타이핑하거나, 파일로 만들어서 핸드폰에 복사하거나

하는 불편함이 있었는데 Chrome to Phone 을 사용하면 간단하게 핸드폰으로 정보를 push 가능합니다.

다음과 같은기능을 지원합니다.

  • Send links to browser
  • Google Maps links launch the Google Maps app.
  • YouTube links launch the YouTube app.
  • Selecting phone numbers in Web pages, launches the dialer with the number pre-populated.
  • Selected text populates the Android clipboard (long-press on text boxes to get paste option).

    이 같은 서비스를 하기 위하여 2.2 Froyo부터 추가된 C2DM(Cloud to Device Messaging) Service를 사용합니다.
  • http://android-developers.blogspot.com/2010/08/powering-chrome-to-phone-with-android.html
    http://code.google.com/android/c2dm/index.html

    구글의 AppEngine을 사용하여 다양한 Push서비스를 만들 수 있으리라고 생각합니다.

    이를 이용한 하나의 오픈소스를 찾았는데요.

    바로 Push Contacts 입니다.

    http://github.com/macbuntu/Push-Contacts

    안드로이드 어플리케이션, Appengine, 크롬 익스텐션 소스코드가 모두 공개되어있습니다.

    아직 C2DM을 개발에 사용하기 위해서는 등록해야하고 기간도 오래걸린다고 하지만 ( 아무래도 푸쉬 서비스다 보니 무분별하게 사용됨을 방지하기 위해서 인거같습니다.) 무궁무진하게 쓰임세가 많을것 같습니다.

    저작자 표시 비영리 변경 금지
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by 꿍스
    생각2010.03.07 01:37
    2010년 올해들어 진로에 관해서 많은 고민이 있었고 방황을 했다.

    지금 하고 있는 업무가 마음에 들지 않는 것이 크다. 사실 지금 다니는 회사는 선배의 소개로 엉겁결에 취직하게 되었다. 회사가 하는 업무 그냥 칼퇴라는것만 보고 들어간 회사였다. 회사 면접에서 다양한 기술들에대해 물어봐서 좀 기대를 하게되었다. 하지만 들어가서 맡은 업무는 '메일 발송 템플릿' 개발 이었고 대량 메일 발송 솔루션에 맞춰 그저 스크립트를 짜는 것에 불과 했다. (이 솔루션에 대해서는 다음에 다시 언급 에정)

    정말로 내가 하고 싶었던 것은 내 스스로 솔루션이나 웹을 연구하고 개발하는 것이었다. 그래서 졸업전부터 SI보다는 연구개발 쪽 여러 회사에 지원을하고 면접을 봤었다. 지금에서야 꺠달았지만 아직까지 연구개발쪽은 학벌인거같은 느낌이 든다. 최소한 석사는 받아야 하는...

    그래서 IT 전체에 대해서 염증을 느꼈고 다 포기하고 친구들이 종사하고 있는 손해사정사 4종에 도전하기 위해서 4월 시험까지 달려보려고 동강도 보고 책도 보고 보험학원도 다녀볼까 했었다.

    이런 와중에 나의 능력을 써먹지 못하는 딱한 사정을 아는 지인이 보시고 우리나라 편입 1등의 모 학원에 개발자로 추천해 주셔서 또 한번 망설이게 되었다. 그 학원에서는 정말 다양한 개발을 할 수 있고 나에게 많은 지원을 해준다고 했다. 거기다 지금 다니는 회사보다 연봉부터 복지까지 확실히 좋은 조건이었다. 그래서 솔직히 갈등이 심하게 되었다.(이전에도 몇번 이직제의가 왔지만 이번은 흔들렸다.)

    그래서 정말 많은 주위의 지인에게 도움을 요청했다. 딱 두분류로 나뉘었다.

    회사는 돈이다 -> 이직 고고
    아니다. 그래도 커리어 패스를 생각해서 일단 금융권(현회사)에 있어라.

    돈을 뽑은 사람은 주로 나이가 아직 어린애들이었고, 돈보다는 커리어패스를 생각하라는 쪽은 경력이 꽤 되시는 분들이었다.
    얼마나 고민을 심하게 했으면 회사 팀장님께도 상의를 드렸다.(한편으로 정말 팀장님께는 죄송한 마음이 많다.)

    보험쪽도 친구들 말이 아닌 손해사정사 카페 나 지인들을 통해서 들을때는 IT에 비해서 엄청 좋다는 느낌을 적게 받았다. 연봉도 그렇고... 어떻게 보면 돈문제(보험료)를 가지고 사람들과 마주치는 직업이라 많이 힘들거 같고 내 적성과도 맞지 않을것 같다. 

    이렇게 생각하니 허송세월을 2달간 보내버린 것 같다.

    후.. 이제 다 정리했다. 내가 생각하는게 과연 무어냐?

    IT전문가다..

    어떻게 할건가?

    연구개발쪽으로 가고싶고 안되면 대학원으로 고고싱~~

    끝!!!
    저작자 표시 비영리 변경 금지
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by 꿍스
    생각2009.08.17 23:43
    오늘 2009년 매쉬업 경진대회에 출전했던 도서나눔 사이트 ggats.com을 유지보수 하던 중 도서검색 결과가 DB에 저장될때 오류가 발생하여 오류를 찾다보니 네이버 도서검색 API(http://dev.naver.com/openapi/apis/data/book)의 아웃풋이 바뀐 걸 알았습니다.

    이전에는 bid(네이버 도서에서의 책ID 즉 book.naver.com 의 키 인듯 합니다.) 를 노출하여 예를 들어 '소설 손자병법'의 예전 link 아웃풋은 http://book.naver.com/bookdb/book_detail.php?bid=117701 였지만, 어느세

    http://openapi.naver.com/l?AAAC3MSw6DIBgE4NP8LIk8LLJgoVav0UihgfQBJWji7VVCMosvk8zkPVqlQ3ij1RvFRUsZ+q827QqmEbobdGMBh57XRjYX5FQwwMBAkgIKskUu2ZdyOUdgPdD5zPWOf8tmE36Gby2MrngYmxf/wdGdi1l7A+xOiBANOQBWP/V3mwAAAA==

    라는 얄궃은 값을 보내주어 bid 값을 유추할 수 없도록 만들었습니다.

    유저들보고 OpenAPI를 적극적으로 사용하여 어플리케이션을 개발하라고 유도했지만 어느새 어떠한 통보도 없이 OpenAPI의 아웃풋을 변경했습니다. 아무래도 bid값을 link 아웃풋에 노출시키는 것이 부담이 되었던 것 같습니다.

    최근 네이버 데스크톱 단순 통보로 서비스를 중단하는 것을 보며 '네이버' 같은 기업의 Open Platform이 성숙하기에는 아직 시간이 걸릴것 같다고 느꼈습니다.
    저작자 표시 비영리 변경 금지
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by 꿍스
    생각2009.07.31 17:43

    소셜네트워크서비스(SNS) 서비스가 주목을 받고있습니다. 하지만 SNS가 서비스 됨에 따라 인맥 네트워크간 부익부 빈익빈 현상이 발생합니다. 이 현상은 바바라시 교수의 링크에 언급된 네트워크의 법칙으로 네트워크 노드간의 링크는 네트워크는 점점 노드가 생겨남에 따가 연결수가 많은 링크를 선택하게 된다는 법칙입니다. 이 현상이 SNS에서도 발생합니다. 트위터를 예로들면 유명인사들의 트위터의 Follower들은 수많은데 비하여 알려지지않는 트위터는 Follower가 0인 경우가 많습니다. 그런데도 유명인사들의 트위터들은 끊임없이 Follower들이 많아집니다. 

    SNS가 성장하기 위해서는 불균형을 해소를 위해 노력해야 하는 과제를 안고있습니다. 주목을 받지못하고 도대되어 버리면 무형의 링크가 아닌 사람은 떠나버리거나 소흘하게 됩니다. SNS는 활동하는 실제 트래픽이 중요합니다. 그것이 곧 SNS의 경쟁력이기 때문입니다.

    이런 불균형을 해소하기 위한 방법으로 친구를 매칭시켜주는 시스템들이 있지만 소셜게임도 그 방법 중의 하나라고 생각합니다. 기존의 한정된 구역이 아닌 전혀 다른 구역으로 링크를 확장할 수 있어 유명인사들에게 집중된 링크의 불균형을 해소할 수 있다고 생각합니다.  


    < 출처 : 고슴도치플러스 팀블로그 >

    그림은 FaceBook에서 서비스 되고있는 고슴도치플러스의 Catch Me If You Can 입니다. 처음 게임을 하면서 누구랑 하는지도몰랐지만 게임 후 기록으로 지구 반대편의 사람과 같이 게임을 한것임을 알 수 있었습니다.

    하지만 이러한 게임이 지속적으로 친목을 기를 수 있는 기능을 해야 앞에서 말한 네트워크의 불균형을 해소할 수 있을 것입니다. 한번게임을 하고 마는 일시적인 친목은 네트워크가 가진 불균형을 해소하지 못할 것입니다. SNS 기반에서 동작하는 소셜게임이 갖추어야할 중요한 점은 바로 게임을 통한 친목이 지속적으로 있도록 해야 한다는 점이라고 생각합니다.

    PS) 사실 이 내용은 제가 소셜게임 지원부분에서 면접시에 말하고자 하는내용이었는데 면접에서 아쉽게 말할 기회를 찾지 못했습니다. 미숙하게나마 제 머리속의 생각들을 정리해서 써봅니다.

    트위터를 100명의 마을이라고 하면 5명만 떠들고 논다고 합니다. (http://podcast.co.kr/2512405)
    저작자 표시 비영리 변경 금지
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by 꿍스
    생각2009.07.21 23:59

    <html>
      <head>
        <title>Canvas demo</title>
        <script type="text/javascript">
          function draw () {
            var canvas = document.getElementById ('hello');
            if (canvas.getContext) {
              var ctx = canvas.getContext('2d');
              ctx.fillRect (25, 25, 50, 50);
            }
          }
        </script>

        <style type="text/css">
          canvas { border: 2px solid red; }
        </style>
      </head>

      <body onload="draw ();">
        <canvas id="hello" width="100" height="100"></canvas>
      </body>

    </html>

    HTML5의 Canvas 요소는 그래픽을 표현할 수 있는 요소입니다. 차후 Flash나 실버라이트를 부분적으로 대채할 수 있을 정도로 뛰어난 기능을 나타내는 것 같습니다.

    JQuery로 유명한 존 레식이 참여하고 있는 Processing.js 보면 Javascript로 Canvas 요소를 쉽게 사용할 수 있습니다.

    http://processingjs.org/

    다만 아직 IE에서는 canvas 요소를 지원하지 않습니다. http://excanvas.sourceforge.net/ 를 이용해서 따로 별도의 자바스크립트를 추가해야 합니다.

    http://hascanvas.com 에 가면 HTML의 Canvas 를 활용한 다양한 예제를 볼 수 있습니다.



    저작자 표시 비영리 변경 금지
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by 꿍스
    생각2008.12.21 17:13
    샤워를 하개 되면 머리를 먼저 감는 사람, 혹은 마지막으로 감는 사람, 비누칠을 하고 머리감는 사람도 있다. 순서는 다르지만 각각의 프로세스는 독립적이다. 머리에 샴푸를 바르고 머리를 행구지 않는 사람은 없다.

    소프트웨어 개발에서도 샤워처럼 각각의 프로세스들이 독립적이어야 한다. 그 독립적인 프로세스 안의 내용은 전체 프로세스와 뒤죽 박죽 되면 안된다.

    머리에 샴푸를 바르고 몸에 비누칠을 한다고 생각해 보자. 샴푸가 흘러 눈에 닿는다면 정말 지옥을 맛볼 수 있다. 머리감는 프로세스가 진행중에 몸에 비누칠을 하는 프로세스를 진행 하였기 때문이다.

    소프트웨어 개발또한, 전체적인 프로세스와 각 프로세스의 세부 프로세스가 뒤죽 박죽 되면 안된다.

    몇몇 사람은 린스나 세안을 하지 않는 사람도 있고, 피부관리를 위해서 로션을 바르는 경우도 있다. 지나치게 전체 프로세스를 제약 하면 안된다. 유기적으로 유연하게 대처할 필요가 있다.

    이것이 바로 객체지향의 응집과 결합, 유연한 설계라고 생각한다.
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by 꿍스
    생각2008.12.19 01:08
    "넌 그냥 의지 없이 움츠려들어 있는 것 뿐이자나"

    의지

    단순한 자연적 요구에 입각한 자발적 행동이 아니라, 의도에 입각하여 자기결정을 하는 목적 추구행동을 일으키는 작용.
    유기체의 활동은 언제나 목적 실현의 과정이며, 이러한 활동을 의지활동이라 하고 그 활동의 근거가 되는 것을 의지라고 부른다. 의지는 반드시 동기와 목적이 있다.

    의도

    적당한 기회가 오면 어떤 목표 달성을 위해서 특정의 행동을 실행하려고 하는 결의.
    이 결의는 목표 선택에 관한 경우와 목표 달성을 위한 수단 선택에 관한 경우로 나뉜다. 일반적으로 목표 선택에 관한 경우는 태도와 관계가 있으며, 목표 달성을 위한 수단 선택에 관한 경우는 의도와 관계가 있다.

    장기적인 목표를 가지자 포스트잇, 메모장, 마인드맵 여러가지 도구를 동원하여 앞만 보지말고 넓게 보도록 하자. 꼭 실천하고자 하는 결의를 가지도록 하자.
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by 꿍스