생각2010/03/07 01:37
2010년 올해들어 진로에 관해서 많은 고민이 있었고 방황을 했다.

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

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

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

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

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

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

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

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

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

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

IT전문가다..

어떻게 할건가?

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

끝!!!
저작자 표시 비영리 변경 금지
Posted by 꿍스
삽질2009/09/30 09:41

JSON 라이브러리중 json-simple를 사용했습니다.

다음 도서 검색 OpenAPI를 사용하는 예입니다.
URL url = new URL("http://apis.daum.net/search/book?q=Java&apikey=OEPNAPI_KEY&searchType=title&output=json&result=5pageno=1");
// 한글 처리를 위해 InputStreamReader를 UTF-8 인코딩으로 감싼다.
InputStreamReader isr = new InputStreamReader(url.openConnection().getInputStream(), "UTF-8");

// JSON을 Parsing 한다. 문법오류가 날 경우 Exception 발생, without Exception -> parse 메소드
JSONObject object = (JSONObject)JSONValue.parseWithException(isr);
// 객체
JSONObject channel = (JSONObject)(object.get("channel"));
// item 배열
JSONArray items = (JSONArray)channel.get("item");

for(int i = 0 ; i < items.size(); i++) {
	JSONObject obj1 = (JSONObject)items.get(i);			
	System.out.println(obj1.get("title").toString());
}
json-simple 은 그 이름 자체로 간단하게 json을 사용할 수 있었습니다. 한글 처리 때문에 삽질을 좀 하긴 했지만.....
저작자 표시 비영리 변경 금지
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이 성숙하기에는 아직 시간이 걸릴것 같다고 느꼈습니다.
저작자 표시 비영리 변경 금지
Posted by 꿍스
삽질2009/08/07 15:29

AJAX 비동기 처리를 위한 IXMLHTTPRequest, COM 인터페이스의 하나이기 때문에 웹 브라우저 안에서 뿐 아니라 윈도우즈어플리케이션으로도 구현이 가능합니다.

더욱이 IXMLHTTPRequest는 Windows CE기반의 Windows Mobile에서도 구현이 되어있을 뿐 아니라, IXMLDOMDocument와 같은 XML DOM 인터페이스와도 바로 연결이 가능하므로 윈도우즈 어플리케이션에서 복잡한 Socket처리나, WinInet라이브러리를 별도로 사용하지 않아도 쉽게 웹의 OpenAPI를 사용할 수 있습니다. ( 내부적으로는 WinInet, Socket을 사용합니다. )

http://msdn.microsoft.com/en-us/library/aa924919.aspx : IXMLHTTPRequest 인터페이스 설명

웹의 AJAX와 같이 동기, 비동기 방식을 모두사용 가능할 뿐만아니라 모든 메소드를 제공하고 IStream 방식으로 받아 아래의 포스팅과 같이 파일로 저장할 수도있습니다.

CComQIPtr pDispatch;
CComPtr pXMLHTTP;
CComPtr pXMLDoc;
		
const CComVariant VAL_NULL = NULL;
const CComVariant VAL_FALSE = FALSE;
long length_posts = 0;
CComBSTR bstr;
HRESULT hr;
		
pXMLHTTP.CoCreateInstance(CLSID_XMLHTTP);
		
pXMLHTTP->open(CComBSTR("GET"), CComBSTR("http://me2day.net/api/get_posts/ggungs"), VAL_FALSE , VAL_NULL , VAL_NULL);
hr = pXMLHTTP->send(VAL_NULL);
if(hr != S_OK) {
	//MessageBox(L"전송실패");
	return;
}
			
hr = pXMLHTTP->get_responseXML(&pDispatch);
if(hr == E_PENDING) {
	//MessageBox(L"PENDING");
	return;
}
		
pDispatch->QueryInterface(IID_IXMLDOMDocument, (void **)&pXMLDoc);
pDispatch.Release();

if(pNodeList) { pNodeList.Release(); }
pXMLDoc->selectNodes(L"/posts/post", &pNodeList);
pNodeList->get_length(&length_posts);
		
 ..... // XML 처리
		
pXMLDoc.Release();
pXMLHTTP.Release();

 

위의 예는 동기 방식으로 미투데이 OpenAPI에 접속하여 XML 데이터를 가져와서 XML 파싱하는 예입니다.

물론 AJAX의 꽃인 비동기 처리로 onreadystatechange에 자바스크립트처럼 함수가 호출되도록 할 수 있지만 VC++ 에서는 좀 복잡하게 처리해야 할듯 합니다.
(http://www.ookii.org/post/using_ixmlhttprequestonreadystatechange_from_c.aspx 참고)

IXMLHTTPRequest 인터페이스를 잘 사용하면 HTTP 프로토콜 로직 처리를 안해도 되기 때문에 빠르게 개발가능합니다.

저작자 표시 비영리 변경 금지
Posted by 꿍스
삽질2009/08/04 00:24

SHCreateStreamOnFile 함수로 지정된 파일에 대한 IStream 인터페이스를 얻은 다음 CopyTo 메소드로 스트림을 복사합니다. (http://msdn.microsoft.com/en-us/library/bb759864(VS.85).aspx)

	pStreamSrc = ........

	STATSTG StatInfo;
	CComPtr pStreamDest;
	hr = SHCreateStreamOnFile(L"C:\\profile.png", STGM_WRITE | STGM_CREATE, &pStreamDest) ;
	pStream->Stat(&StatInfo, STATFLAG_NONAME );
	pStream->CopyTo(pStreamDest, StatInfo.cbSize, NULL, NULL);
	pStreamDest->Commit(0);

Windows Mobile 에서는 SHCreateStreamOnFile 함수가 없어서 직접 구현해야 합니다.

http://www.pocketpcdn.com/articles/articles.php?&atb.set(a_id)=6211&atb.set(c_id)=57&atb.perform(details)

참고해주세요.

저작자 표시 비영리 변경 금지
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)
저작자 표시 비영리 변경 금지
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 를 활용한 다양한 예제를 볼 수 있습니다.



저작자 표시 비영리 변경 금지
Posted by 꿍스
삽질2009/07/11 23:39

처음 Windows Mobile에서 Common Dialog Box 를 사용하시는 분들이라면 메세지 처리를 한번 보셔야 할 것 같습니다.

당연히 일어나야 할 것 같은 메세지가 일어나지 않는다면 의심해 보세요. 현재 Windows Mobile 에서는 2개의 Common Dialog Box 메세지 만을 제공합니다.

CDM_SETDEFEXT

This message sets the default filename extension for an Explorer-style Open or Save As common dialog box.

CDN_TYPECHANGE

This message is sent by an Explorer-style Open or Save As common dialog box when the user selects a new file type from the file types combo box.


위에는 메세지고 밑에껏은 Notify 메세지 입니다. 둘 다 File Dialog Box에서 쓰이는 군요.

http://msdn.microsoft.com/en-us/library/aa931534.aspx

저는 당연히 Dialog Box 가 초기화 되면 Notify Message가 발생할 줄 알고 잘못된 점이 제 코드 인줄 알고 WTL 소스를 뒤지기 시작하는 가 하면 ( WTL은 Overriding 으로 편하게 File Dialog Message를 처리할 수 있습니다. ) Remote Spy++ 까지 써가면서 관찰했는데 메세지 자체가 안일어 나는 것 같아서 찾아보니 이렇네요.

저작자 표시 비영리 변경 금지
Posted by 꿍스
일상2009/07/09 00:03



6 AM 일어납니다.
7 AM 학원갑니다.
11 AM 집에 도착합니다.

12 PM 밥을 먹습니다.

쭉 ~~ 영어영어 영어영어

부모님일 돕거나 이력서 작성, 영어, 프로그래밍

5 PM 밥을 먹습니다.

이력서 작성, 영어

결론은 영어입니다. 영어공부를 별로 하지도 않는데 시간은 잘 갑니다.

휴 -_- 이번 학원 과목은 실전반이라 그런지 완전 스파르타식이네요.

아침 7시 30분 수업인데도 강의실이 꽉차다니....

저작자 표시 비영리 변경 금지
Posted by 꿍스
TAG YBM
일상2009/06/19 11:04

A군은 이른나이에 경찰관이 되기 위해 경찰관 시험을 준비하고 경찰관이 된다.

지방의 농촌에 발령받은 A군은 부모님이 사시는 조금 큰 시골로 놀러를 가게된다.

거기에서 동네에서 자동차로 좁은 길을 가로막는 등 양아치 가족을 보게 된다.

동네사람들과 힘을 합쳐 양아치 가족을 무찌르려 자동차로 위협하지만 오히려 만대로 당하고

근처 경찰서에 끌려가는 신세가 된다.

거기서 경찰관증이 있는 것을 아는데, 경찰관증에 낙서가 여럿있다.

그걸로 경찰관들에게 혼나고 있었는데.. 잠에서 깻다.
저작자 표시 비영리 변경 금지
Posted by 꿍스