<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>GGunGs.COM</title>
    <link>https://ggungs.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 9 Jun 2026 13:50:58 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>꿍스</managingEditor>
    <image>
      <title>GGunGs.COM</title>
      <url>https://t1.daumcdn.net/cfile/tistory/204983044C7B2A7A2D</url>
      <link>https://ggungs.com</link>
    </image>
    <item>
      <title>라즈베리파이4 ssd 인식문제</title>
      <link>https://ggungs.com/entry/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B44-ssd-%EC%9D%B8%EC%8B%9D%EB%AC%B8%EC%A0%9C</link>
      <description>&lt;p&gt;라즈베리파이를 NAS용도로 구매해서 SSD를 연결하고 삼바설정까지 다했는데&lt;br&gt;생각보다 파일복사가 느리고 계속 연결이 끊어지거나 파일을 복사가 실패하는 경우가 많아서&lt;br&gt;처음에는 전원문제인가 찾다가 라즈베리파이4에 ssd 하나정도는 외장전원 없이 충분하다는 글을 보고 다른원인인가 찾아보았다.&lt;/p&gt;
&lt;h2&gt;증상&lt;/h2&gt;
&lt;p&gt;처음엔 연결이 잘되었는데 디스크 I/O가 발생하면 어느순간 디바이스 연결이 끊긴다.&lt;/p&gt;
&lt;h3&gt;오류 메시지 확인&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;dmesg -T -w&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;USB 연결&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;usb 2-1: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
usb 2-1: New USB device found, idVendor=152d, idProduct=0578, bcdDevice= 5.08
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1: Product: USB to ATA/ATAPI Bridge
usb 2-1: Manufacturer: JMicron
usb 2-1: SerialNumber: 0123456789ABCDEF&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;연결된 SSD를 사용할때 아래와 같은 메시지가 나오면서 I/O가 멈춘다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;scsi host0: uas_eh_device_reset_handler start
usb 2-1: reset SuperSpeed Gen 1 USB device number 2 using xhci_hcd
scsi host0: uas_eh_device_reset_handler success
sd 0:0:0:0: [sda] tag#27 uas_eh_abort_handler 0 uas-tag 4 inflight: CMD IN
sd 0:0:0:0: [sda] tag#27 CDB: opcode=0x28 28 00 1d 1c 59 68 00 00 08 00
scsi host0: uas_eh_device_reset_handler start
sd 0:0:0:0: [sda] tag#26 uas_zap_pending 0 uas-tag 3 inflight: CMD
sd 0:0:0:0: [sda] tag#26 CDB: opcode=0x28 28 00 00 31 4b 00 00 01 00 00
usb 2-1: reset SuperSpeed Gen 1 USB device number 2 using xhci_hcd
scsi host0: uas_eh_device_reset_handler success&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;어느순간 usb disconnect가 나오면서 실패해버린다.&lt;br&gt;디바이스 연결이 끊겨서 I/O 에러가 발생한다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sd 0:0:0:0: [sda] tag#18 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD IN
sd 0:0:0:0: [sda] tag#18 CDB: opcode=0x28 28 00 00 e7 e1 c8 00 01 00 00
sd 0:0:0:0: [sda] tag#17 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD IN
sd 0:0:0:0: [sda] tag#17 CDB: opcode=0x28 28 00 00 e7 e2 c8 00 01 00 00
sd 0:0:0:0: [sda] tag#13 uas_eh_abort_handler 0 uas-tag 4 inflight: CMD OUT
sd 0:0:0:0: [sda] tag#13 CDB: opcode=0x2a 2a 00 00 99 89 00 00 00 08 00
xhci_hcd 0000:01:00.0: WARNING: Host System Error
xhci_hcd 0000:01:00.0: xHCI host not responding to stop endpoint command.
xhci_hcd 0000:01:00.0: xHCI host controller not responding, assume dead
xhci_hcd 0000:01:00.0: HC died; cleaning up
sd 0:0:0:0: [sda] tag#12 uas_eh_abort_handler 0 uas-tag 3 inflight: CMD
sd 0:0:0:0: [sda] tag#12 CDB: opcode=0x2a 2a 00 00 5d a4 00 00 00 08 00
usb 2-1: USB disconnect, device number 2
sd 0:0:0:0: Device offlined - not ready after error recovery
sd 0:0:0:0: Device offlined - not ready after error recovery
sd 0:0:0:0: Device offlined - not ready after error recovery
sd 0:0:0:0: Device offlined - not ready after error recovery
print_req_error: I/O error, dev sda, sector 15196616
print_req_error: I/O error, dev sda, sector 15196872
print_req_error: I/O error, dev sda, sector 10062080
Buffer I/O error on dev sda2, logical block 1206304, lost async page write
print_req_error: I/O error, dev sda, sector 6136832
Buffer I/O error on dev sda2, logical block 715648, lost async page write
print_req_error: I/O error, dev sda, sector 15196616
Buffer I/O error on dev sda2, logical block 1848121, async page read&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;SATA TO USB3 확인&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;pi@raspberrypi:~ $ lsusb
Bus 002 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;원인&lt;/h2&gt;
&lt;p&gt;SATA TO USB 아답터의 칩셋 때문인것으로 보인다.&lt;/p&gt;
&lt;h2&gt;해결 방법&lt;/h2&gt;
&lt;p&gt;boot 파티션의 cmdline.txt의 제일 앞에 아래처럼 추가한다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;usb-storage.quirks=$idVender:$idProduct:u&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;위의 usb연결 msg를 참고해서 작성한다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;usb 2-1: New USB device found, idVendor=152d, idProduct=0578, bcdDevice= 5.08&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;cmdline.txt&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;usb-storage.quirks=152d:0578:u console=serial0,115200 console=tty1 root=PARTUUID=738a4d67-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;재부팅 후 연결이 계속 잘 유지된다.&lt;/p&gt;
&lt;h2&gt;참고&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.raspberrypi.org/forums/viewtopic.php?t=245931&quot;&gt;https://www.raspberrypi.org/forums/viewtopic.php?t=245931&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/raspberrypi/linux/issues/3070&quot;&gt;https://github.com/raspberrypi/linux/issues/3070&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.raspberrypi.org/forums/viewtopic.php?f=28&amp;amp;t=245931&amp;amp;start=50&quot;&gt;https://www.raspberrypi.org/forums/viewtopic.php?f=28&amp;amp;t=245931&amp;amp;start=50&lt;/a&gt;&lt;/p&gt;</description>
      <category>삽질</category>
      <category>JMS</category>
      <category>JMS567</category>
      <category>RPI4</category>
      <category>라즈베리파이4</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/100</guid>
      <comments>https://ggungs.com/entry/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B44-ssd-%EC%9D%B8%EC%8B%9D%EB%AC%B8%EC%A0%9C#entry100comment</comments>
      <pubDate>Wed, 8 Apr 2020 15:35:54 +0900</pubDate>
    </item>
    <item>
      <title>있을때 잘하세요!!</title>
      <link>https://ggungs.com/entry/%EC%9E%88%EC%9D%84%EB%95%8C-%EC%9E%98%ED%95%98%EC%84%B8%EC%9A%94</link>
      <description>&lt;div style=&quot;text-align: left;&quot;&gt;저번주 금요일 동생을 태우고 부산내려가는 길에 외할머니께서 임종을 맞이하셨습니다. &lt;br&gt;&lt;br&gt;이로인하여 이번설은 이렇게 장례식장에서 보내게 되었는데, 할머니의 임종을 못본것과 그간 서울에서 사회생활을 한다는 이유로 부산의 가족들을 싱경쓰지 못한 것에 한이 쌓여 글을 남깁니다.&lt;br&gt;&lt;br&gt;어릴적부터 어머니의 건강이 좋지않아 외할머니 밑에서 자랏고 어른이 되어서도 같이 지내면서 아침에 발로차서라도 손자에게 아침밥을 먹이고 서울에서 오랜만에 내려갔을  때는 현관까지 나와 손자를 기쁘게 맞이하던 모습만을 저는 기억했는데, 불과 한달세에 생사를 넘나드느 병환이 찾아온 외할머니의 모습은 충격이었습니다.&lt;br&gt;&lt;br&gt;다음주에 꼭 찾아오겠다고 한 약속도, 임종하시기 1주일전에 일찍 와달라고 부탁한 외할머니의 마지막부탁도 지키지 못해드려 너무나도 마얀합니다.&lt;br&gt;&lt;br&gt;이제는 한줌의 제가되어 사라진 외할머니, 후회와 용서의 의미로 이 못난손자는 태어나서 가장많은 눈물을 흘리고 말았습니다.&lt;br&gt;&lt;br&gt;외할머니의 가족사를 장례식 마지막날에 외동딸인 어머니에게 들을 수 있었는데, 정말 불쌍한 우리 외할머니셨습니다. 마지막남은 가족인 외동딸 어머니와 외손자들을 한평생 챙기시느라 &lt;br&gt;이생에서 정말 수고많으셨습니다. 이제는 극락에서 행방불명된 외할아버지, 국민학교 입학도 못하고 일찍 세상을 떠단 아들과 다같이 모여 행복하게 사세요.&lt;br&gt;&lt;br&gt; (고)최복숙(1934.08.29 ~ 2015.02.17)&lt;br&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 683px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2162D33E54EC977116&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2162D33E54EC977116&quot; width=&quot;683&quot; height=&quot;384&quot; filename=&quot;09042054098ac3d3b1f03ed934265083.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;br&gt;혼자남은 딸인 우리엄마는 제가 더 잘 보살필께요.&lt;br&gt;&lt;br&gt;이 글로 인해 저 처럼 후회하는 사람이 없기를 바랍니다.&lt;br&gt;&lt;/div&gt;
&lt;p&gt;&lt;iframe id=&quot;emap_1424791795445&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_1424791795445&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=4&amp;title=%EB%B6%80%EC%82%B0%EC%98%81%EB%9D%BD%EA%B3%B5%EC%9B%90&amp;addr=%EB%B6%80%EC%82%B0%EA%B4%91%EC%97%AD%EC%8B%9C%20%EA%B8%88%EC%A0%95%EA%B5%AC%20%EC%84%A0%EB%91%90%EA%B5%AC%EB%8F%99&amp;tel=&amp;mapX=978660&amp;mapY=498745&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=2111064&amp;docid=&amp;confirmid=25083760&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A978660%2C%22mapCenterY%22%3A498745%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A978660%2C%22y%22%3A498745%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A40%2C%22height%22%3A42%2C%22offsetX%22%3A14%2C%22offsetY%22%3A38%2C%22src%22%3A%22http%3A%2F%2Fi1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fimg%2Fmarker_p.png%22%7D%2C%22content%22%3A%22%EB%B6%80%EC%82%B0%EC%98%81%EB%9D%BD%EA%B3%B5%EC%9B%90%22%2C%22confirmid%22%3A25083760%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</description>
      <category>일상</category>
      <category>외할머니</category>
      <category>후회</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/99</guid>
      <comments>https://ggungs.com/entry/%EC%9E%88%EC%9D%84%EB%95%8C-%EC%9E%98%ED%95%98%EC%84%B8%EC%9A%94#entry99comment</comments>
      <pubDate>Sat, 21 Feb 2015 10:10:00 +0900</pubDate>
    </item>
    <item>
      <title>Chrome Extension(확장기능) 개발</title>
      <link>https://ggungs.com/entry/Chrome-Extension%ED%99%95%EC%9E%A5%EA%B8%B0%EB%8A%A5-%EA%B0%9C%EB%B0%9C</link>
      <description>&lt;p&gt;&lt;/p&gt;&lt;h1 style=&quot;font-size: 1.5em; line-height: 1.3em; background-color: transparent; border-width: 10px 0px 0px; margin: 0px; padding: 0px 0px 0px 14px; float: left; border-top-style: solid; border-top-color: white; font-family: 'Open Sans', arial, sans-serif; white-space: nowrap;&quot;&gt;Google Chrome Extensions&lt;/h1&gt;&lt;ul id=&quot;home&quot; class=&quot;gc-topnav-tabs&quot; style=&quot;color: rgb(118, 118, 118); height: 45px; text-align: right; list-style: none; margin: 0px; font-family: 'Open Sans', arial, sans-serif; line-height: 22px; white-space: nowrap;&quot;&gt;&lt;li id=&quot;home_link&quot; style=&quot;margin: 0px; padding: 0px; font-weight: 600; height: 45px; text-transform: uppercase; display: inline-block;&quot;&gt;&lt;a href=&quot;http://developer.chrome.com/extensions/index.html&quot; title=&quot;Google Chrome Extensions home page&quot;&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;br /&gt;&lt;/p&gt;




&lt;p&gt;http://developer.chrome.com/extensions&lt;/p&gt;




&lt;p&gt;&lt;br /&gt;&lt;/p&gt;




&lt;p&gt;크롬 확장기능 개발은 너무 쉽다. 또한 강력하다. 크롬 웹 스토어에 가면 구글 메일, 구글 캘린더, 구글토크 까지 API를 보면 웹으로 할 수 있는 거의 모든것이 가능하다. 백그라운드로 데이터를 기다리거나 다른 서버와 데이터를 주고받아 표시하는것 또한 쉽게 가능하다.&lt;/p&gt;




&lt;p&gt;&lt;br /&gt;&lt;/p&gt;




&lt;p&gt;전에부터 만들고 싶었던 최저가 검색 Extension을 만들어 보기로 했다.&lt;/p&gt;




&lt;p&gt;&lt;br /&gt;&lt;/p&gt;




&lt;p&gt;최저가 검색에는 about.co.kr(http://about.co.kr) 을 이용했다. 관련된 OpenAPI가 있는지 확인하였으나&lt;/p&gt;




&lt;p&gt;&lt;br /&gt;&lt;/p&gt;




&lt;p&gt;찾지못하였다. 그래스 그냥 새로운탭으로 about.co.kr을 표시하는 간단한 기능을 구현하였다.&lt;/p&gt;




&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/0122914850A917222C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F0122914850A917222C&quot; width=&quot;640&quot; height=&quot;400&quot; filename=&quot;LPS_DEMO.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;lt;완성된 모습&amp;gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;기본적으로 두가지 파일이 필요하다. JSON 형식의 manifest파일과, 실제 코드가 있는 js파일이다. chrome extension은 기본적으로 Javascript로 만들어저있다. 그래서&amp;nbsp;Javascript API는 모두 사용가능하다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;또한 chrome API도 사용가능하다. 이로인해 파일 핸들링 까지 가능하다.(http://developer.chrome.com/extensions/api_index.html)&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;소스&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;1. manifest&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;{
  &quot;name&quot;: &quot;ABOUT 최저가 검색&quot;,
  &quot;description&quot;: &quot;Lowest Price Search(using about.co.kr)&quot;,
  &quot;version&quot;: &quot;0.1&quot;,
  &quot;permissions&quot;: [&quot;contextMenus&quot;, &quot;tabs&quot;],
  &quot;background&quot;: {
    &quot;scripts&quot;: [&quot;lps.js&quot;]
  },
  &quot;manifest_version&quot;: 2
}
&lt;/pre&gt;&lt;p style=&quot;text-align: left;&quot;&gt;2. Javascript&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:java&quot;&gt;var searchUrl = &quot;http://finding.about.co.kr/Search/Search.aspx?Keyword=&quot;;

function createLPSTab(code) {
  var args = {
    'url': searchUrl + code,
    'selected': true
  };
  
  try {
    chrome.tabs.create(args);
  } catch (e) {
    alert(e);
  }
}

function lpsOnClick(info, tab) {
  createLPSTab(info.selectionText);
}

// Create one test item for each context type.
var contexts = [&quot;selection&quot;,&quot;editable&quot;];
for (var i = 0; i &amp;lt; contexts.length; i++) {
  var context = contexts[i];
  var title = &quot;%s 최저가 검색&quot;;
  var id = chrome.contextMenus.create({&quot;title&quot;: title, &quot;contexts&quot;:[context], &quot;onclick&quot;: lpsOnClick});
}
&lt;/pre&gt;



&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;디렉토리에 특정소스를 저장하고&amp;nbsp;브라우저에서 chrome://chrome/extensions 로 이동한다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 683px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/195D884F50A91ABD39&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F195D884F50A91ABD39&quot; width=&quot;683&quot; height=&quot;260&quot; filename=&quot;개발자모드.PNG&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;개발자 모드를 체크하면 새로운 버튼이 두개 나온다. 여기서 &quot;압축해제된 확장 프로그램 로드...&quot; 버튼을 눌러 manifest와 js파일이 있는 디렉토리를 선택하면 extension이 동록된다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;확장프로그램 압축을 하면 개인키를 필요로 한다. 없는 경우 그냥 누르면 자동으로 생성해 준다.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;이제 크롭 웹스토어 개발자 대시보드(https://chrome.google.com/webstore/developer/dashboard)로 이동하여 새로만든 Extension을 등록하자.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 683px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1226B44050A91CA302&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F1226B44050A91CA302&quot; width=&quot;683&quot; height=&quot;378&quot; filename=&quot;개발자대시보드.PNG&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;처음 개발자 등록할 때는 5$의 비용이 발생하므로 잘 생각하자!!&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>프로그래밍</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/98</guid>
      <comments>https://ggungs.com/entry/Chrome-Extension%ED%99%95%EC%9E%A5%EA%B8%B0%EB%8A%A5-%EA%B0%9C%EB%B0%9C#entry98comment</comments>
      <pubDate>Mon, 19 Nov 2012 02:16:58 +0900</pubDate>
    </item>
    <item>
      <title>세상은 생각대로 되지 않는다.</title>
      <link>https://ggungs.com/entry/%EC%84%B8%EC%83%81%EC%9D%80-%EC%83%9D%EA%B0%81%EB%8C%80%EB%A1%9C-%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4</link>
      <description>&lt;p style=&quot;margin:0&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 394px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/184D74534D91704236&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F184D74534D91704236&quot; width=&quot;394&quot; height=&quot;895&quot; filename=&quot;1300734486_QEYDKPgn_llll.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;br /&gt;</description>
      <category>생각</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/97</guid>
      <comments>https://ggungs.com/entry/%EC%84%B8%EC%83%81%EC%9D%80-%EC%83%9D%EA%B0%81%EB%8C%80%EB%A1%9C-%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4#entry97comment</comments>
      <pubDate>Tue, 29 Mar 2011 14:38:18 +0900</pubDate>
    </item>
    <item>
      <title>Cassandra 0.7.x 예제</title>
      <link>https://ggungs.com/entry/Cassandra-07x-%EC%98%88%EC%A0%9C</link>
      <description>&lt;br /&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
요즘 화두가 되고 있는 NoSQL 제품중에서 유명한 Cassandra 를 한번 사용해 보기 위해 관련 자료를 찾았으나 다 이전 버전에 관한 내용만 있더군요. 어렵사리 0.7.x에서 동작하는 예제를 만들어 보았습니다. 저는 0.7.2 버전을 사용하였습니다.&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
Cassandra에 대한 설명은 : 다른 사이트나&amp;nbsp;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=naverdev&amp;amp;logNo=120116325495&amp;amp;redirect=Dlog&amp;amp;widgetTypeCall=true&quot;&gt;http://blog.naver.com/PostView.nhn?blogId=naverdev&amp;amp;logNo=120116325495&amp;amp;redirect=Dlog&amp;amp;widgetTypeCall=true&lt;/a&gt;&amp;nbsp;를 참고해주세요. 단 예제는 제외!!&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
본격적으로 삽질을 해보니 이전버전에 비하여 XML 설정에서 YAML 기반 설정으로 바뀌었고 API의 사용법이 바뀌었습니다.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
코딩에 앞서 몇 가지 라이브러리를 클래스 패스에 추가해야 합니다. 모두 cassandra의 lib 디렉토리에 있습니다.&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;span style=&quot;font-family: 굴림, gulim, tahoma, sans-serif; color: rgb(0, 0, 0); &quot;&gt;&lt;div&gt;
&lt;font color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;apache-cassandra-0.7.2.jar&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;libthrift-0.5.jar&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;log4j-1.2.16.jar&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;slf4j-api-1.6.1.jar&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;slf4j-log4j12-1.6.1.jar&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;아래는 예제 소스입니다.&lt;/font&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;pre class=&quot;brush:java&quot;&gt;import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;

import org.apache.cassandra.thrift.Cassandra;
import org.apache.cassandra.thrift.Column;
import org.apache.cassandra.thrift.ColumnOrSuperColumn;
import org.apache.cassandra.thrift.ColumnParent;
import org.apache.cassandra.thrift.ColumnPath;
import org.apache.cassandra.thrift.ConsistencyLevel;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.thrift.NotFoundException;
import org.apache.cassandra.thrift.TimedOutException;
import org.apache.cassandra.thrift.UnavailableException;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;

public class CassandraTest {

        private TTransport framedTransport;
        private Cassandra.Client client;
        
    	private String keyspace = &quot;ggungs&quot;;
		private String columnFamily = &quot;friend&quot;;
		
        // Cassandra에 연결 후 Client 저장 
        private void open() throws InvalidRequestException, TException {
        	this.framedTransport = new TFramedTransport(new TSocket(&quot;localhost&quot;, 9160));
			TProtocol framedProtocol = new TBinaryProtocol(framedTransport);
			this.client = new Cassandra.Client(framedProtocol);
			framedTransport.open();
			
			client.set_keyspace(keyspace);
        }
        
        private void close() {
        	framedTransport.close();
        }
        
        public void insert() throws InvalidRequestException, UnavailableException, TimedOutException, TException, NotFoundException {
        	byte[] Key = getUTF8(&quot;김동동&quot;);
        	long timestamp = System.currentTimeMillis();
			
			ColumnParent cp = new ColumnParent(columnFamily);
			Column c1 = new Column(ByteBuffer.wrap(getUTF8(&quot;주소&quot;)), ByteBuffer.wrap(getUTF8(&quot;서울&quot;)), timestamp);
			Column c2 = new Column(ByteBuffer.wrap(getUTF8(&quot;핸드폰&quot;)), ByteBuffer.wrap(getUTF8(&quot;010-0000-0000&quot;)), timestamp);
			
			client.insert(ByteBuffer.wrap(Key), cp, c1, ConsistencyLevel.ONE);
			client.insert(ByteBuffer.wrap(Key), cp, c2, ConsistencyLevel.ONE);
        }
        
        public void get() throws InvalidRequestException, UnavailableException, TimedOutException, TException, NotFoundException {
        	byte[] userIDKey = getUTF8(&quot;김동동&quot;);
        	
			ColumnPath cPath = new ColumnPath(columnFamily);
			cPath.setColumn(ByteBuffer.wrap(getUTF8(&quot;주소&quot;)));

			ColumnOrSuperColumn cos = client.get(ByteBuffer.wrap(userIDKey), cPath, ConsistencyLevel.ONE);
			Column col=cos.column;
			
			System.out.println(&quot;Name : &quot; + getString(col.getName()));
			System.out.println(&quot;Value : &quot; + getString(col.getValue()));
        }
        
        private byte[] getUTF8(String s) { 
        	try {
				return s.getBytes(&quot;utf-8&quot;);
			} catch (UnsupportedEncodingException e) {
				return null;
			}
        }
        
        private String getString(byte[] b) {
        	try {
				return new String(b, &quot;utf-8&quot;);
			} catch (UnsupportedEncodingException e) {
				return null;
			}        	
        }
        
        public static void main(String[] args) {
        	try {
        		CassandraTest ct = new CassandraTest();
        		ct.open();
        		ct.insert();
        		ct.get();
        		ct.close();
        	} catch(Exception e) {
        		e.printStackTrace();
        	}
        }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
이렇게 하고 나면 아마 keyspace가 존재하지 않는다는 예외가 발생합니다. keyspace를 만들지 않았기 때문인데요. cassandra-cli를 실행하여 keyspace 및 column family를 생성하면 됩니다.&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 677px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/157F3D594D60302924&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F157F3D594D60302924&quot; width=&quot;677&quot; height=&quot;442&quot; filename=&quot;cassandra-cli.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
connect localhost/9160;&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
create keyspace ggungs;&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
use ggungs;&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
create column family friend;&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
로컬호스트에 연결하여 ggungs keyspace를 생성하고 생성한 keyspace를 이용합니다. 그리고 friend라는 column family를 생성하는 것입니다.&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
이렇게 keyspace와 column family를 생성하고 나면 예외없이 주소에 대한 값이 출력될 것입니다.&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
cli에서는 어떻게 보일까요? list 명령어로 확인하면 아래와 같이 내용이 나옵니다.&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 677px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/12030C394D6031F319&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F12030C394D6031F319&quot; width=&quot;677&quot; height=&quot;442&quot; filename=&quot;cassandra-cli2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
첫번째 컬럼은 주소, 두번째 컬럼은 핸드폰에 대한 내용이겠군요!!&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
      <category>삽질</category>
      <category>Cassandra</category>
      <category>Cassandra 0.7</category>
      <category>Cassandra example</category>
      <category>nosql</category>
      <category>카산드라</category>
      <category>카산드라 예제</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/94</guid>
      <comments>https://ggungs.com/entry/Cassandra-07x-%EC%98%88%EC%A0%9C#entry94comment</comments>
      <pubDate>Sun, 20 Feb 2011 05:59:01 +0900</pubDate>
    </item>
    <item>
      <title>WTL 최근 소식</title>
      <link>https://ggungs.com/entry/WTL-%EC%B5%9C%EA%B7%BC-%EC%86%8C%EC%8B%9D</link>
      <description>오랜만에 WTL(Windows Template Library)의 공식 Yahoo Groups 에 방문해 보니 WTL의 최신 릴리즈에 대한 질문에 WTL을 만든 Microsoft의&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); font-family: sans-serif; font-size: 13px; line-height: 19px; &quot;&gt;Nenad Stefanovic의 글을 보았습니다.&lt;/span&gt;&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); font-family: sans-serif; font-size: 13px; line-height: 19px; &quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); font-family: sans-serif; font-size: 13px; line-height: 19px; &quot;&gt;&lt;a href=&quot;http://tech.groups.yahoo.com/group/wtl/message/16446&quot;&gt;http://tech.groups.yahoo.com/group/wtl/message/16446&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://tech.groups.yahoo.com/group/wtl/message/16449&quot;&gt;&lt;span style=&quot;font-size: 10pt; &quot;&gt;http://tech.groups.yahoo.com/group/wtl/message/16449&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
WTL의 마지막 릴리즈가 나온지 3년이 넘었습니다. (&lt;a href=&quot;http://wtl.sourceforge.net/&quot;&gt;http://wtl.sourceforge.net/&lt;/a&gt;) 사실 잊혀지나 생각했는데 위의 글을 보니 반갑네요. 딱히 차후 계획또 없고 빠뀐다 라는 말이 잘못된다고 하는거 보니 리본지원과 약간의 향상과 같은 소소한 업데이트 인거 같습니다. 계속 꾸준히 업데이트 되었으면 좋겠네요.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
사실 WTL을 예전부터 사용하면서 정말 좋다고 생각했습니다. MFC에 비해서 뛰어난 점이 많다고 생각합니다. WinAPI 를 객체지향으로 구현하하여 MFC에 비하여 속도가 빠를 뿐 아니라 컴파일 후의 바이너리 크기 또한 작고 동작속도도 빠릅니다. 또한 MFC의 편리한 기능인 DDX나 메시지 맵등을 구현하고 있을 뿐 아니라 WinAPI를 이용한 오픈소스 이기 때문에 상속받아 또다른 클래스를 만들거나 커스터마이징을 하기 쉽습니다. 다만 오픈소스인 만큼 Microsoft의 전폭적인 지원이 없고 문서가 거의 전무한 것이 단점입니다. 하지만 WinAPI와 MFC에 능통한 개발자라면 쉽게 WTL의 기능을 사용할 수 있습니다. 이외에도 ATL(Active Template Library)를 기반으로 만들어진 만큼 COM을 쉽게 사용할 수 있습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이러한 장점에도 불구하고 Microsoft의 .NET 전략에 밀려 지원이 없는것이 정말 아쉽습니다. WTL의 장점을 알고있는 여러 윈도우즈 프로그래머들은 업데이트가 없음에도 스스로 새로운 클래스를 기존 WinAPI를 이용하여 만들어 사용하고 있습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
안타깝네요. WTL을 Microsoft가 전폭적으로 지원하였으면 버전별로 필요한 MFC의 DLL 문제에서 벗어날 수 있을 뿐만아니라 성능과 바이너리 크기또한 최적화된 많은 프로그램이 나왔을텐데요.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
      <category>생각</category>
      <category>ATL</category>
      <category>MFC</category>
      <category>Microsoft</category>
      <category>WinAPI</category>
      <category>WTL</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/91</guid>
      <comments>https://ggungs.com/entry/WTL-%EC%B5%9C%EA%B7%BC-%EC%86%8C%EC%8B%9D#entry91comment</comments>
      <pubDate>Tue, 23 Nov 2010 22:24:23 +0900</pubDate>
    </item>
    <item>
      <title>플랫폼에 대처하는 자세</title>
      <link>https://ggungs.com/entry/%ED%94%8C%EB%9E%AB%ED%8F%BC%EC%97%90-%EB%8C%80%EC%B2%98%ED%95%98%EB%8A%94-%EC%9E%90%EC%84%B8</link>
      <description>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
&lt;meta http-equiv=&quot;Content-Style-Type&quot; content=&quot;text/css&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;meta name=&quot;Generator&quot; content=&quot;Cocoa HTML Writer&quot;&gt;
&lt;meta name=&quot;CocoaVersion&quot; content=&quot;1038.32&quot;&gt;
&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 15.0px Arial}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; min-height: 17.0px}
&lt;/style&gt;


&lt;p class=&quot;p1&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p1&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;요즈음 IT기술의&amp;nbsp;발전에 플랫폼이&amp;nbsp;중심에 있고&amp;nbsp;이들간의&amp;nbsp;경쟁이&amp;nbsp;치열합니다. 대표적으로&amp;nbsp;모바일&amp;nbsp;분야에서는&amp;nbsp;Google의&amp;nbsp;Android와&amp;nbsp;Apple의&amp;nbsp;iOS, SNS(소셜네트워크서비스)에서는&amp;nbsp;Facebook의&amp;nbsp;F8, Google의&amp;nbsp;OpenSocial이&amp;nbsp;있습니다. 신문기사나&amp;nbsp;블로그들을&amp;nbsp;보면&amp;nbsp;이러한&amp;nbsp;각&amp;nbsp;분야의&amp;nbsp;플랫폼에&amp;nbsp;대한&amp;nbsp;글이&amp;nbsp;많은&amp;nbsp;수를&amp;nbsp;차지하고&amp;nbsp;있고&amp;nbsp;각&amp;nbsp;회사들도&amp;nbsp;많은&amp;nbsp;투자를&amp;nbsp;하며&amp;nbsp;그들만의&amp;nbsp;생태계를&amp;nbsp;늘려가려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p class=&quot;p1&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p1&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;/p&gt;
&lt;table width=&quot;673&quot; border=&quot;0&quot; bgcolor=&quot;#ffffff&quot; style=&quot;border-collapse:collapse&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td style=&quot;border:0px solid #dadada&quot; width=&quot;50%&quot;&gt;&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;charset=UTF-8&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/172FDC194CD81AA658&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F172FDC194CD81AA658&quot; width=&quot;250&quot; height=&quot;257&quot; alt=&quot;&quot; filename=&quot;coldwar.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;border:0px solid #dadada&quot; width=&quot;50%&quot;&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/162FDC194CD81AA657&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F162FDC194CD81AA657&quot; width=&quot;250&quot; height=&quot;218&quot; alt=&quot;&quot; filename=&quot;cfile30.uf@162FDC194CD81AA657F9D4.jpg&quot; filemime=&quot;&quot;/&gt;&lt;/div&gt;
&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p2&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;컴퓨터에서의&amp;nbsp;플랫폼이란&amp;nbsp; 하드웨어나&amp;nbsp;소프트웨어의&amp;nbsp;중간&amp;nbsp;계층으로&amp;nbsp;하부의&amp;nbsp;기술들을&amp;nbsp;쉽게&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;지원해&amp;nbsp;주는&amp;nbsp;기술들입니다. 많은&amp;nbsp;사용자들이&amp;nbsp;사용하는 OS(Operating System 즉&amp;nbsp;윈도우즈)역시&amp;nbsp;플랫폼입니다. 하드웨어와&amp;nbsp;소프트웨어의&amp;nbsp;중간에서&amp;nbsp;하드웨어의&amp;nbsp;복잡함을&amp;nbsp;숨기고&amp;nbsp;사용자들이&amp;nbsp;편리하게&amp;nbsp;이용할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해주기&amp;nbsp;때문입니다. 이러한&amp;nbsp;의미에서&amp;nbsp;위에서&amp;nbsp;사례로&amp;nbsp;든&amp;nbsp;모바일, SNS&amp;nbsp;마찬가지로 모바일 기기, SNS서비스를 사용자들이 편리하게 사용할 수 있도록 하는데 있습니다. 요즈음은 소비자들의 기대가 높아져 더욱더 많은 기능을 요구하게 되었습니다.&lt;/p&gt;
&lt;p class=&quot;p3&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p2&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;사용자들은 특정 플랫폼을 선택하면 되지만 개발자의 입장은&amp;nbsp;&amp;nbsp;다릅니다. 소프트웨어 개발자체가 진입장벽이 있는 편이고(없다고 생각하는건 정말 기본이 없는 프로그래머라고 생각합니다.) 날마다 새로운 기술이 쏟아지는 현장에서 모든 플랫폼을 마스터하는것은 불가능합니다. 어쩔수 없이 선택이 필요하고 그러한 선택은 보통 가장 유망한 혹은 인기있는 플랫폼을 선택하게 마련입니다. 혹여나 자신이 선택한 플랫폼이 시장에서 인기가 시들해지면 재빨리 다른 플랫폼의 학습을 하거나 혹은 퇴보를 받아들일 수 밖에 없습니다.&lt;/p&gt;
&lt;p class=&quot;p3&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p2&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;플랫폼을 제공하는 회사들은 플랫폼을 강화하는데 많은 노력을 하기 때문에 사용자들의 기대치를 모두 해결해 주지 못합니다. 그래서 그들은 플랫폼으로 개발자들을 모으고 그들에게 그러한 역할을 위임하였습니다. 그저 플랫폼을 제공한다고 해서 개발자들이 개발을 하는 것은 아닙니다. 플랫폼 제공회사들 또한 자신의 플랫폼이 매력적이고 상업적으로 성공할 수 있다고 끊임없이 광고, 세미나등 다양한 방법을 통해서 광고하고 지원을 하여 자신들만의 생태계를 늘리고 있습니다.&lt;/p&gt;
&lt;p class=&quot;p3&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p2&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;왜 이렇게 생태계를 늘리는 걸까요? 답은 간단하게 생각할 수 있습니다. 제가 좋아하는 스타워즈에 대해 말해보겠습니다. 저는 이러한 문화컨텐츠인 스타워즈도 하나의 플랫폼 이라고 생각합니다. 스타워즈영화, 만화등에 나오는 지금의 우리와는 다른 세계와 관객을 이어주기 때문입니다. 더욱이 관객들에게 재미를 선사도 합니다. 스타워즈의 예를 보면 스타워즈 세계관에 대한 플랫폼을 구축함으로 인해서 피규어, 게임, 만화, 영화등 수십만명의 팬을 거느리고 있으며 이러한 세계관을 만들어가는 것은 스타워즈를 처음생각한 조지루카스 혼자서는 불가능합니다. 그러기에 각 분야에 다양한 사람들이 스타워즈 소설을 적기도하고 만화를 그리기도 하고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;p3&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p3&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/11300A174CD819E426&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F11300A174CD819E426&quot; width=&quot;632&quot; height=&quot;673&quot; alt=&quot;&quot; filename=&quot;starwars.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot;&gt;&amp;lt; 스타워즈 영화 포스터들 &amp;gt;&lt;/font&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p class=&quot;p3&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p3&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p2&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;이러한 예에서 볼때 플랫폼 업체들이 플랫폼을 무료로 공개하고 어마어마한 돈을 들이면서 플랫폼을 홍보하는 이유는 바로 스타워즈의 피규어와 같은 부가 이익 입니다. 물론 각 회사마다의 목표는 다르겠지만 공통된 목표는 바로 사용자들의 증가입니다. 이러한 사용자들의 증가를 플랫폼업체들도 노력하지만 플랫폼을 개발하는 개발자들 또한 그들의 목표에 지대한 영향을 미치게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;p3&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p2&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;하지만 플랫폼을 단지 사용만 해서는 절대 그들의 손에서 벗어날 수가 없습니다. 주도권은 플랫폼 제공업체가 가지고 있습니다. 당장에라도 Android를 Google이 포기한다면?? iPhone AppStore이 개인이 아닌 기업만 개발에 참여할 수 있도록 한다면?? 개발자들은 또 다른 플랫폼을 향해가고 또 다른 플랫폼에 종속적이 될 뿐입니다. 어떻게 보면 영원히 벗어날 수 없는 족쇄라고 할까요? 단지 족쇄가 바뀔뿐 정말로 자유로울 수는 없을 것 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;p3&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p class=&quot;p2&quot; style=&quot;color: rgb(51, 51, 51); font-family: 굴림; font-size: 9pt; line-height: 1.5; &quot;&gt;플랫폼을 직접 만들어 보면 어떨까요? 외국에 비해 앞서 설명한 플랫폼이 정말 부족한 우리나라에 삼성전자는 바다 라는 모바일 플랫폼을 선보였습니다. 아직까지 반응은 솔직히 좋지 못하더군요. 삼성전자는 바다 무료교육을 하는거 같기는 하지만 그것으로는 많이 부족한 것 같습니다. 제2의 Android, 제2의 바다를 위해 창의적으로 직접 플랫폼을 개발하는 개발자가 되고 싶습니다. 왜냐하면 저는 자유롭고 싶으니까요.&lt;/p&gt;</description>
      <category>생각</category>
      <category>플랫폼</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/90</guid>
      <comments>https://ggungs.com/entry/%ED%94%8C%EB%9E%AB%ED%8F%BC%EC%97%90-%EB%8C%80%EC%B2%98%ED%95%98%EB%8A%94-%EC%9E%90%EC%84%B8#entry90comment</comments>
      <pubDate>Tue, 9 Nov 2010 00:37:22 +0900</pubDate>
    </item>
    <item>
      <title>Chrome to Phone 의 원리는 C2DM</title>
      <link>https://ggungs.com/entry/Chrome-to-Phone-%EC%9D%98-%EC%9B%90%EB%A6%AC%EB%8A%94-C2DM</link>
      <description>&lt;br /&gt;
구글 Chrome to Phone : &lt;A href=&quot;http://techjun.com/1258&quot;&gt;http://techjun.com/1258&lt;/A&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;A href=&quot;http://code.google.com/p/chrometophone/&quot;&gt;http://code.google.com/p/chrometophone/&lt;/A&gt;&lt;br /&gt;
&lt;br /&gt;Chrome to Phone 2.0이 몇일전 정식으로 마켓에 등록되었습니다.&lt;br /&gt;
&lt;br /&gt;아직 한국 마켓에서 보이지 않아 우회해서 (My Market등 사용) 다운받아야 합니다.&lt;br /&gt;
&lt;br /&gt;사용해보니 웹브라우저상에 있는 다양한 정보들을 별도의 수고 없이 바로 핸드폰으로 보낼 수 있다는 점이&lt;br /&gt;
&lt;br /&gt;굉장히 편리했습니다. 예전같으면 필요한 정보를 똑같이 핸드폰에 타이핑하거나, 파일로 만들어서 핸드폰에 복사하거나&lt;br /&gt;
&lt;br /&gt;하는 불편함이 있었는데 Chrome to Phone 을 사용하면 간단하게 핸드폰으로 정보를 push 가능합니다.&lt;br /&gt;
&lt;br /&gt;다음과 같은기능을 지원합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;LI&gt;Send links to browser &lt;/LI&gt;
&lt;LI&gt;Google Maps links launch the Google Maps app. &lt;/LI&gt;
&lt;LI&gt;YouTube links launch the YouTube app. &lt;/LI&gt;
&lt;LI&gt;Selecting phone numbers in Web pages, launches the dialer with the number pre-populated. &lt;/LI&gt;
&lt;LI&gt;Selected text populates the Android clipboard (long-press on text boxes to get paste option). &lt;br /&gt;
&lt;br /&gt;이 같은 서비스를 하기 위하여 2.2 Froyo부터 추가된 C2DM(Cloud to Device Messaging) Service를 사용합니다. &lt;/LI&gt;
&lt;P&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/180316174C6B460941&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F180316174C6B460941&quot; width=&quot;139&quot; height=&quot;103&quot; alt=&quot;&quot; filename=&quot;c2dm.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://android-developers.blogspot.com/2010/08/powering-chrome-to-phone-with-android.html&quot;&gt;http://android-developers.blogspot.com/2010/08/powering-chrome-to-phone-with-android.html&lt;/A&gt;&lt;br /&gt;
&lt;A href=&quot;http://code.google.com/android/c2dm/index.html&quot;&gt;http://code.google.com/android/c2dm/index.html&lt;/A&gt;&lt;br /&gt;
&lt;br /&gt;구글의 AppEngine을 사용하여 다양한 Push서비스를 만들 수 있으리라고 생각합니다.&lt;br /&gt;
&lt;br /&gt;이를 이용한 하나의 오픈소스를 찾았는데요.&lt;br /&gt;
&lt;br /&gt;바로 Push Contacts 입니다.&lt;br /&gt;
&lt;br /&gt;&lt;A href=&quot;http://github.com/macbuntu/Push-Contacts&quot;&gt;http://github.com/macbuntu/Push-Contacts&lt;/A&gt;&lt;br /&gt;
&lt;br /&gt;안드로이드 어플리케이션, Appengine, 크롬 익스텐션 소스코드가 모두 공개되어있습니다. &lt;br /&gt;
&lt;br /&gt;아직 C2DM을 개발에 사용하기 위해서는 등록해야하고 기간도 오래걸린다고 하지만 ( 아무래도 푸쉬 서비스다 보니 무분별하게 사용됨을 방지하기 위해서 인거같습니다.) 무궁무진하게 쓰임세가 많을것 같습니다.&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;</description>
      <category>생각</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/88</guid>
      <comments>https://ggungs.com/entry/Chrome-to-Phone-%EC%9D%98-%EC%9B%90%EB%A6%AC%EB%8A%94-C2DM#entry88comment</comments>
      <pubDate>Wed, 18 Aug 2010 11:35:06 +0900</pubDate>
    </item>
    <item>
      <title>Windows Mobile HTML 컨트롤 DTM_BROWSERDISPATCH 문제</title>
      <link>https://ggungs.com/entry/Windows-Mobile-HTML-%EC%BB%A8%ED%8A%B8%EB%A1%A4-DTMBROWSERDISPATCH-%EB%AC%B8%EC%A0%9C</link>
      <description>Windows Mobile 6 SDK로&amp;nbsp;IE 임베딩된 어플리케이션을 개발하는 도중 &lt;br /&gt;
&lt;br /&gt;웹브라우저의 이벤트에 맞춰 프로그램을 할일 이있어서 웹브라우저 COM 객체에 Advise 하려고 했다.&lt;br /&gt;
&lt;br /&gt;DTM_BROWSERDISPATCH 메시지로 브라우저 컨트롤의 Dispatch 인터페이스를 얻을 수 있다고 MSDN에 나와있어서&lt;br /&gt;
&lt;br /&gt;적용해 보았다. (&lt;A href=&quot;http://msdn.microsoft.com/en-us/library/bb415471.aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/bb415471.aspx&lt;/A&gt;)&lt;br /&gt;
&lt;PRE class=brush:cpp&gt;
		CComQIPtr&lt;IDispatch&gt; m_spDispatch;
		CComQIPtr&lt;IWebBrowser2&gt; m_spWebBrowser;
		this-&gt;m_view.GetBrowserDispatch(&amp;m_spDispatch);
		HRESULT hr = m_spDispatch-&gt;QueryInterface(IID_IWebBrowser2, (void **)&amp;m_spWebBrowser);
&lt;/PRE&gt;
&lt;br /&gt;당연히 웹브라우저 인터페이스를 얻을 거라는 예상과 달리&lt;br /&gt;
&lt;br /&gt;hr 의 값은 E_NOINTERFACE 였다.&lt;br /&gt;
&lt;br /&gt;그래서 구글신께 여쭈어 보았더니 나와 같은 문제를 겪고 있는사람이 아주 많았다. 그리고 뚜렷한 해결책도 없었다.&lt;br /&gt;
&lt;br /&gt;고민하던 중 다행이 HTML 컨트롤이 제공하는 몇가지 Notify 메세지를 이용하여 처리를 하긴 했지만, 그래도 좀&lt;br /&gt;
&lt;br /&gt;마음에 걸린다. &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;</description>
      <category>삽질</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/82</guid>
      <comments>https://ggungs.com/entry/Windows-Mobile-HTML-%EC%BB%A8%ED%8A%B8%EB%A1%A4-DTMBROWSERDISPATCH-%EB%AC%B8%EC%A0%9C#entry82comment</comments>
      <pubDate>Thu, 11 Mar 2010 17:38:37 +0900</pubDate>
    </item>
    <item>
      <title>Java에서 JSON을 이용한 OpenAPI</title>
      <link>https://ggungs.com/entry/Java%EC%97%90%EC%84%9C-JSON%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-OpenAPI</link>
      <description>&lt;br /&gt;
JSON 라이브러리중 &lt;A title=&quot;[http://code.google.com/p/json-simple/]로 이동합니다.&quot; href=&quot;http://code.google.com/p/json-simple/&quot; target=_blank&gt;json-simple&lt;/A&gt;를 사용했습니다.&lt;br /&gt;
&lt;br /&gt;다음 도서 검색 OpenAPI를 사용하는 예입니다.&lt;br /&gt;
&lt;PRE class=brush:java&gt;URL url = new URL(&quot;http://apis.daum.net/search/book?q=Java&amp;amp;apikey=OEPNAPI_KEY&amp;amp;searchType=title&amp;amp;output=json&amp;amp;result=5pageno=1&quot;);
// 한글 처리를 위해 InputStreamReader를 UTF-8 인코딩으로 감싼다.
InputStreamReader isr = new InputStreamReader(url.openConnection().getInputStream(), &quot;UTF-8&quot;);

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

for(int i = 0 ; i &amp;lt; items.size(); i++) {
	JSONObject obj1 = (JSONObject)items.get(i);			
	System.out.println(obj1.get(&quot;title&quot;).toString());
}
&lt;/PRE&gt;json-simple 은 그 이름 자체로&amp;nbsp;간단하게 json을 사용할 수 있었습니다. 한글 처리 때문에 삽질을 좀 하긴 했지만.....</description>
      <category>삽질</category>
      <author>꿍스</author>
      <guid isPermaLink="true">https://ggungs.com/78</guid>
      <comments>https://ggungs.com/entry/Java%EC%97%90%EC%84%9C-JSON%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-OpenAPI#entry78comment</comments>
      <pubDate>Wed, 30 Sep 2009 09:41:57 +0900</pubDate>
    </item>
  </channel>
</rss>