{"id":1997,"date":"2015-10-28T02:31:44","date_gmt":"2015-10-28T02:31:43","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1997"},"modified":"2019-03-04T06:13:47","modified_gmt":"2019-03-04T14:13:47","slug":"couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/","title":{"rendered":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ube0c \ub274\uc695: Couchbase Mobile 103 - Couchbase Mobile\ub85c \ud53c\uc5b4 \ud22c \ud53c\uc5b4 \uc571 \uad6c\ucd95\ud558\uae30"},"content":{"rendered":"<p style=\"text-align: center;\"><a href=\"https:\/\/bit.ly\/CBNYC2015\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/october\/couchbase-live-new-york-couchbase-mobile-103---building-a-peer-to-peer-app-with-couchbase-mobile\/events.cbliveny.bannerheader.lockup.png\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">103 \uc138\uc158\uc758 <a href=\"https:\/\/bit.ly\/couchbaseNYC01\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ube0c \ub274\uc695 \ubaa8\ubc14\uc77c \ud2b8\ub799<\/a>\uc5d0\uc11c \ub450 \uac1c \uc774\uc0c1\uc758 \uc7a5\uce58 \uac04\uc5d0 \ud53c\uc5b4 \ud22c \ud53c\uc5b4 \ub3d9\uae30\ud654\ub97c \ud65c\uc131\ud654\ud560 \uc218 \uc788\ub294 Couchbase Lite\uc758 \uae30\ub2a5\uc744 \uc0b4\ud3b4\ubd24\uc2b5\ub2c8\ub2e4.  \uc5d0\uc11c <a href=\"https:\/\/www.slideshare.net\/Couchbase\/couchbase-mobile-101-couchbase-live-new-york?\">\"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c 103: <\/a><a href=\"https:\/\/www.slideshare.net\/Couchbase\/couchbase-mobile-103-building-a-peer-topeer-app-with-couchbase-mobile-couchbase-connect-2015?qid=50d65718-e15f-4427-8051-dbb09b56d8c6&amp;v=default&amp;b=&amp;from_search=1\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\ub85c P2P \uc571 \uad6c\ucd95\ud558\uae30<\/a><a href=\"https:\/\/www.slideshare.net\/Couchbase\/couchbase-mobile-101-couchbase-live-new-york?\">\" \uc2ac\ub77c\uc774\ub4dc<\/a>\uc5d0\uc11c \uc0ac\uc9c4 \uacf5\uc720 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 P2P \uae30\ub2a5\uc744 \ud1b5\ud574 Couchbase Lite\ub97c \uc2e4\ud589\ud558\ub294 \ub2e4\ub978 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc7a5\uce58\uc640 \uc0ac\uc9c4\uc744 \uad50\ud658\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \ucf54\ub4dc\uc640 \uad6c\uc131 \uc694\uc18c\ub97c \uc790\uc138\ud788 \uc0b4\ud3b4\ubd24\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\">P2P PhotoDrop \uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \ub2e4\uc74c\uc6a9 GitHub \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/couchbaselabs\/photo-drop\/tree\/master\/ios\">iOS<\/a> \uadf8\ub9ac\uace0 <a href=\"https:\/\/github.com\/couchbaselabs\/photo-drop\/tree\/master\/android\">Android<\/a>.  \uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 103 \uc138\uc158\uc5d0\uc11c \uc18c\uac1c\ub41c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8\uc758 \uae30\ub2a5 \ubc0f API\uc640 \uc0ac\uc9c4 \uacf5\uc720 \uc0d8\ud50c\uc5d0 \uc788\ub294 \uc77c\ubd80 \ucf54\ub4dc\ub97c \uac1c\uad04\uc801\uc73c\ub85c \uc694\uc57d\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.  Couchbase \ubaa8\ubc14\uc77c <a href=\"https:\/\/bit.ly\/CBNYC2015_101\">101<\/a> \uadf8\ub9ac\uace0 <a href=\"https:\/\/bit.ly\/CBNYC2015_102\">102<\/a> \ube14\ub85c\uadf8\uc5d0\uc11c \uc2dc\uc791\ud558\uae30 \uc704\ud55c \uc9c0\uce68\uc744 \ud655\uc778\ud558\uc138\uc694.<\/p>\n<p style=\"text-align: justify;\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/october\/couchbase-live-new-york-couchbase-mobile-103---building-a-peer-to-peer-app-with-couchbase-mobile\/photodrop_screens.png\" \/><\/p>\n<p style=\"text-align: justify;\">\ub2e4\uc74c\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc2a4\ud1a0\ub9ac\ubcf4\ub4dc\ub85c, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc2dc\uc791\uc810\uc774 \ub418\ub294 \uc138 \uac1c\uc758 \uac04\ub2e8\ud55c \ubdf0\ucee8\ud2b8\ub864\ub7ec\uac00 \uc788\uc2b5\ub2c8\ub2e4.  \ubc1c\uc2e0\uc790\uac00 \ud734\ub300\ud3f0\uc5d0\uc11c \uc0ac\uc9c4\uc744 \uc120\ud0dd\ud55c \ub2e4\uc74c \uc804\uc1a1\uc744 \ud074\ub9ad\ud558\uba74 UX \ud750\ub984\uc774 \uc2dc\uc791\ub429\ub2c8\ub2e4.  \uadf8\ub7ec\uba74 \uce74\uba54\ub77c\uac00 \uc5f4\ub824 \uc0c1\ub300\ubc29 \ud734\ub300\ud3f0\uc758 \uc218\uc2e0 QR \ucf54\ub4dc\ub97c \uc2a4\uce94\ud558\uc5ec \uc778\uc99d\ud558\uace0 \uc804\uc1a1\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4.  \ub2e4\uc74c\uc5d0\uc11c \ud53c\uc5b4 \ud22c \ud53c\uc5b4 \uae30\ub2a5\uc744 \ud65c\uc131\ud654\ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ucf54\ub4dc\uc758 \ud575\uc2ec \uad6c\uc131 \uc694\uc18c\ub97c \uc0b4\ud3b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.1.0\/get-started\/couchbase-lite-overview\/index.html\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8<\/a>.<\/p>\n<p style=\"text-align: justify;\"><strong>[1] \ub9ac\uc2a4\ub108 \uc2dc\uc791<\/strong><\/p>\n<p style=\"text-align: justify;\">ReceiveViewController\uc5d0\uc11c \ud3ec\ud2b8\ub97c 0\uc73c\ub85c \uc124\uc815\ud558\uc5ec \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8\uac00 \ubb34\uc5c7\uc744 \uc0ac\uc6a9\ud560\uc9c0 \uacb0\uc815\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4.  \uc989, \uc0ac\uc9c4\uc744 \uacf5\uc720\ud560 \ub54c\ub9c8\ub2e4 \uc804\uc1a1\uc744 \uc2dc\uc791\ud560 \ub54c\ub9c8\ub2e4 \ud3ec\ud2b8\uac00 \ubcc0\uacbd\ub429\ub2c8\ub2e4.  \uc778\uc99d\uc774 \ub2e4\uc774\uc81c\uc2a4\ud2b8\uc778 \uacbd\uc6b0 \uc778\uc99d\uc744 \ud65c\uc131\ud654\ud558\uace0 \uae30\ubcf8\uc801\uc73c\ub85c Couchbase Lite \ub9ac\uc2a4\ub108\uc5d0\uc11c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.  \uadf8\ub7f0 \ub2e4\uc74c \uc0ac\uc6a9\uc790 \uc774\ub984\uacfc \ube44\ubc00\ubc88\ud638\uac00 \uc788\uace0 \uc778\uc99d\uc744 \uc704\ud55c \uc0ac\uc6a9\uc790 \uc774\ub984\/\ube44\ubc00\ubc88\ud638\ub97c \uc124\uc815\ud569\ub2c8\ub2e4.  \uc774\uc81c \ub9ac\uc2a4\ub108\ub97c \uc2dc\uc791\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\"><strong>iOS<\/strong><\/p>\n<pre><code class=\"language-swift\">listener = CBLListener(manager: CBLManager.sharedInstance(), port: 0)\r\n\r\nlistener.requiresAuth = true\r\nlet username = secureGenerateKey(NSCharacterSet.URLUserAllowedCharacterSet())\r\nlet password = secureGenerateKey(NSCharacterSet.URLPasswordAllowedCharacterSet())\r\nlistener.setPasswords([username : password])\r\n\r\nvar success = listener.start(&amp;error)\r\n\r\nif (success) {\r\n  syncUrl = genearteSyncURL(listener.URL, username: username, password: password, \r\n  dbName: database.name)\r\n\r\n  startObserveDatabaseChange()\r\n}\r\n<\/code><\/pre>\n<p>\ub9ac\uc2a4\ub108\uac00 \uc2dc\uc791\ub418\uba74 \uc0ac\uc6a9\uc790 \uc774\ub984\/\ube44\ubc00\ubc88\ud638 \ubc0f \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc774\ub984\uacfc \ud568\uaed8 \ub9ac\uc2a4\ub108 URL\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc218\uc2e0\uc790 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud55c URL \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc758 \ub3d9\uae30\ud654 URL\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.  \uc774 URL\uc744 \ub3d9\uae30\ud654 URL \ubcc0\uc218\uc5d0 \uc124\uc815\ud558\uace0 \ub098\uc911\uc5d0 QR \ucf54\ub4dc\ub97c \uc0dd\uc131\ud560 \ub54c \uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec \uadf8\uc5d0 \ub530\ub77c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubcc0\uacbd \uc218\uc2e0\uae30\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\"><strong>[2] \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubcc0\uacbd \uc0ac\ud56d \uad00\ucc30<\/strong><\/p>\n<p>\uc0ac\uc9c4\uc774 \uc218\uc2e0\uae30 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub3d9\uae30\ud654\ub418\ub294 \uc2dc\uc810\uc744 \uc54c \uc218 \uc788\ub3c4\ub85d \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubcc0\uacbd \ub9ac\uc2a4\ub108\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4.  \uadf8\ub807\uac8c \ub418\uba74 \uacf5\uc720 \ubb38\uc11c\uc5d0\uc11c \uacf5\uc720\ub41c \uc0ac\uc9c4\uc744 \uac00\uc838\uc640\uc11c \uc7a5\uce58\ub85c \uac00\uc838\uc635\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\"><strong>iOS<\/strong><\/p>\n<pre><code class=\"language-swift\">func startObserveDatabaseChange() {\r\n  NSNotificationCenter.defaultCenter().addObserverForName(\r\n  kCBLDatabaseChangeNotification, object: database, queue: nil) { (notification) -&gt; Void in\r\n   if let changes = notification.userInfo![\"changes\"] as? [CBLDatabaseChange] {\r\n      for change in changes {\r\n        dispatch_async(dispatch_get_main_queue(), {\r\n          self.saveImageFromDocument(change.documentID)\r\n        })\r\n      }\r\n   }\r\n  }\r\n}<\/code><\/pre>\n<p><strong>[3] QR\ucf54\ub4dc \uc0dd\uc131 \ubc0f \ud45c\uc2dc<\/strong><\/p>\n<p style=\"text-align: justify;\">\uc218\uc2e0 \ubdf0 \ucee8\ud2b8\ub864\ub7ec\uc758 \ub9c8\uc9c0\ub9c9 \ub2e8\uacc4\uc5d0\uc11c\ub294 Couchbase Lite \ub9ac\uc2a4\ub108\uac00 \uc788\uc73c\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uacf5\uc720 \ub9ac\uc2a4\ub108\ub97c \uc124\uc815\ud55c \ub2e4\uc74c \ub3d9\uae30\ud654 URL\uc744 \uc124\uc815\ud569\ub2c8\ub2e4.  \ub3d9\uae30\ud654 URL\uc744 \uc0ac\uc6a9\ud558\uba74 QR \ucf54\ub4dc\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uc774\ub97c \uc704\ud574 iOS \ud575\uc2ec \uc774\ubbf8\uc9c0 \ud544\ud130\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.  QR\ucf54\ub4dc\uc5d0\ub294 \ub9ac\uc2a4\ub108 \ud3ec\ud2b8\uc640 \uc778\uc99d\uc744 \uc704\ud55c \ubc88\ub4e4 \uc0ac\uc6a9\uc790 \uc544\uc774\ub514\/\ube44\ubc00\ubc88\ud638\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/october\/couchbase-live-new-york-couchbase-mobile-103---building-a-peer-to-peer-app-with-couchbase-mobile\/qr-code-content.png\" \/><strong>[4] QR\ucf54\ub4dc \uc2a4\uce94<\/strong><\/p>\n<p style=\"text-align: justify;\">\uc774\uc81c SendViewController \ub0b4\uc5d0\uc11c \ucd9c\ub825 \uc720\ud615\uc774 AVMetadataObjectTypeQRCode\uc778 AV Foundation \ud504\ub808\uc784\uc6cc\ud06c\uc758 \uc77c\ubd80\uc778 iOS \ud074\ub798\uc2a4 AVCaptureSession\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.  \uc774\uc81c QR\ucf54\ub4dc \uc2a4\uce90\ub108\ub97c \uc0ac\uc6a9\ud558\uc5ec QR \ucf54\ub4dc\ub97c \uc2a4\uce94\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>[5] \ubb38\uc11c \ub9cc\ub4e4\uae30<\/strong><\/p>\n<p style=\"text-align: justify;\">\uc774\uc81c \uc218\uc2e0\uc790\uc5d0\uac8c \ubcf4\ub0bc \uc0ac\uc9c4\uc744 \ubc18\ubcf5\ud569\ub2c8\ub2e4.  \uac01 \uc0ac\uc9c4\uc5d0 \ub300\ud574 \ubb38\uc11c\ub97c \ub9cc\ub4e0 \ub2e4\uc74c \uc0ac\uc9c4\uc744 \ubb38\uc11c\uc5d0 \ucca8\ubd80\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.  \ub9c8\uc9c0\ub9c9 \uc2a4\ub2c8\ud3ab\uc5d0\uc11c\ub294 \ubb38\uc11c ID\ub97c \ub2e4\uc74c \ub2e8\uacc4\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc18d\uc131\uc778 docIds \ubcc0\uc218\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>iOS<\/strong><\/p>\n<pre><code class=\"language-swift\">var docIds: [String] = []\r\nfor asset in sharedAssets! {\r\n  \/\/...\r\n  var data = NSData(bytesNoCopy: imageBytes, length: buffered, freeWhenDone: true)\r\n\r\n  let doc = database.createDocument()\r\n  let rev = doc.newRevision()\r\n  rev.setAttachmentNamed(\"photo\", withContentType: \"application\/octet-stream\", content: data)\r\n  let saved = rev.save(&amp;error)\r\n\r\n  if saved != nil {\r\n    docIds.append(doc.documentID)\r\n  }\r\n}\r\n<\/code><\/pre>\n<p><strong>[6] \ubb38\uc11c \ubcf5\uc81c<\/strong><\/p>\n<p style=\"text-align: justify;\">\uc774\uc81c QR \ucf54\ub4dc\uc5d0\uc11c \uc5bb\uc740 \ub3d9\uae30\ud654 URL\uc774 \uc788\uc73c\ubbc0\ub85c \ub9c8\uc9c0\ub9c9 \ub2e8\uacc4\ub294 \uadf8\uc5d0 \ub530\ub77c \ubb38\uc11c\ub97c \ubcf5\uc81c\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.  \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc0ac\uc9c4 \ubb38\uc11c\ub97c \uac00\uc838\uc654\uace0 \ubc1c\uc2e0\uc790 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc7a5\uce58\uc5d0\uc11c \uc218\uc2e0\uc790 \uc7a5\uce58\ub85c \ubcf5\uc81c\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.  \uc5ec\uae30\uc11c \ub3d9\uae30\ud654 URL\ub85c \ud478\uc2dc \ubcf5\uc81c\ub97c \uc0dd\uc131\ud558\uc5ec \ubb38\uc11c ID\ub97c \ubcf5\uc81c\uae30\uc5d0 \uc804\uc1a1\ud558\uc5ec \ubcf5\uc81c\uae30\uac00 \ud574\ub2f9 ID\uc758 \ubb38\uc11c\ub97c \ud478\uc2dc\ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4.  \uadf8\ub9ac\uace0 \uc120\ud0dd\uc801 \ub2e8\uacc4\ub85c \ud604\uc7ac \uc0c1\ud0dc\ub97c \ucea1\ucc98\ud558\uae30 \uc704\ud574 \ubcf5\uc81c \ubcc0\uacbd \ub9ac\uc2a4\ub108\uc758 \uc0c1\ud0dc\ub97c \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>iOS<\/strong><\/p>\n<pre><code class=\"language-swift\">replicator = database.createPushReplication(url)\r\nreplicator.documentIDs = docIds\r\n\r\nNSNotificationCenter.defaultCenter().addObserverForName(kCBLReplicationChangeNotification, object: replicator, queue: nil) { (notification) -&gt; Void in\r\n  if self.replicator.lastError == nil {\r\n    var totalCount = self.replicator.changesCount\r\n    var completedCount = self.replicator.completedChangesCount\r\n    \r\n    if completedCount &gt; 0 &amp;&amp; completedCount == totalCount {\r\n      self.statusLabel.text = \"Sending Completed\u201d\r\n    }\r\n  } else {\r\n      self.statusLabel.text = \"Sending Abort\"\r\n    }\r\n}\r\n\r\nreplicator.start()\r\n\r\n<\/code><\/pre>\n<p><strong>\uc694\uc57d<\/strong><\/p>\n<p style=\"text-align: justify;\">\ud3ec\ud1a0\ub4dc\ub86d \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ud575\uc2ec \uad6c\ud604 \ud3ec\uc778\ud2b8\ub294 \uc778\uc99d\uc744 \uc704\ud574 \uc77c\ud68c\uc131 \uc0ac\uc6a9\uc790 \uc774\ub984\uacfc \ube44\ubc00\ubc88\ud638\ub97c \uc0dd\uc131\ud558\ub294 \ud53c\uc5b4 \uac80\uc0c9\uc5d0 QR \ucf54\ub4dc\ub97c \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uc810\uc785\ub2c8\ub2e4.  \uc0ac\uc9c4 \uc1a1\uc218\uc2e0\uc744 \uc704\ud55c \ud575\uc2ec \ucf54\ub4dc\ub294 \uc57d 100\uc904\uc758 \ucf54\ub4dc\uc774\uba70 \ub124\ud2b8\uc6cc\ud06c \ud1b5\uc2e0\uc5d0 \uc9c1\uc811\uc801\uc73c\ub85c \uad00\uc5ec\ud558\ub294 \ucf54\ub4dc\ub294 \ud3ec\ud568\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\">","protected":false},"excerpt":{"rendered":"<p>From the 103 session in the Couchbase LIVE New York mobile track, we went over the feature within Couchbase Lite that would allow us to enable peer-to-peer syncing between two or more devices.\u00a0 From the &#8220;Couchbase Mobile 103: Building a [&hellip;]<\/p>","protected":false},"author":30,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8983],"class_list":["post-1997","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Building a Peer-to-Peer App with Couchbase Mobile<\/title>\n<meta name=\"description\" content=\"Check out the feature within Couchbase Lite that would allow us to enable peer-to-peer syncing between two or more devices.\u00a0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase LIVE New York: Couchbase Mobile 103 - Building a Peer-to-Peer App with Couchbase Mobile\" \/>\n<meta property=\"og:description\" content=\"Check out the feature within Couchbase Lite that would allow us to enable peer-to-peer syncing between two or more devices.\u00a0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-28T02:31:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-03-04T14:13:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/\"},\"author\":{\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\"},\"headline\":\"Couchbase LIVE New York: Couchbase Mobile 103 &#8211; Building a Peer-to-Peer App with Couchbase Mobile\",\"datePublished\":\"2015-10-28T02:31:43+00:00\",\"dateModified\":\"2019-03-04T14:13:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/\"},\"wordCount\":761,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/\",\"name\":\"Building a Peer-to-Peer App with Couchbase Mobile\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-10-28T02:31:43+00:00\",\"dateModified\":\"2019-03-04T14:13:47+00:00\",\"description\":\"Check out the feature within Couchbase Lite that would allow us to enable peer-to-peer syncing between two or more devices.\u00a0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase LIVE New York: Couchbase Mobile 103 &#8211; Building a Peer-to-Peer App with Couchbase Mobile\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\",\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"caption\":\"William Hoang, Mobile Developer Advocate, Couchbase\"},\"description\":\"William was a Developer Advocate on the Mobile Engineering\/Developer Experience team at Couchbase. His love for coffee and code has transcended him into the world of mobile while appreciating the offline in-person experiences. Prior, William worked on the Developer Relations team over at Twitter, BlackBerry, and Microsoft while also having been a Software Embedded GPS engineer at Research In Motion. William graduated from McGill University in Electrical Software Engineering\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/william-hoang\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\ub85c P2P \uc571 \uad6c\ucd95\ud558\uae30","description":"Check out the feature within Couchbase Lite that would allow us to enable peer-to-peer syncing between two or more devices.\u00a0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/","og_locale":"ko_KR","og_type":"article","og_title":"Couchbase LIVE New York: Couchbase Mobile 103 - Building a Peer-to-Peer App with Couchbase Mobile","og_description":"Check out the feature within Couchbase Lite that would allow us to enable peer-to-peer syncing between two or more devices.\u00a0","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-10-28T02:31:43+00:00","article_modified_time":"2019-03-04T14:13:47+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"William Hoang, Mobile Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"William Hoang, Mobile Developer Advocate, Couchbase","Est. reading time":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/"},"author":{"name":"William Hoang, Mobile Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32"},"headline":"Couchbase LIVE New York: Couchbase Mobile 103 &#8211; Building a Peer-to-Peer App with Couchbase Mobile","datePublished":"2015-10-28T02:31:43+00:00","dateModified":"2019-03-04T14:13:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/"},"wordCount":761,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\ub85c P2P \uc571 \uad6c\ucd95\ud558\uae30","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-10-28T02:31:43+00:00","dateModified":"2019-03-04T14:13:47+00:00","description":"Check out the feature within Couchbase Lite that would allow us to enable peer-to-peer syncing between two or more devices.\u00a0","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-103-building-a-peer-to-peer-app-with-couchbase-mobile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase LIVE New York: Couchbase Mobile 103 &#8211; Building a Peer-to-Peer App with Couchbase Mobile"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32","name":"\uc70c\ub9ac\uc5c4 \ud638\uc559, \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc790 \uc639\ud638\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5","url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","caption":"William Hoang, Mobile Developer Advocate, Couchbase"},"description":"\uc70c\ub9ac\uc5c4\uc740 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ubaa8\ubc14\uc77c \uc5d4\uc9c0\ub2c8\uc5b4\ub9c1\/\uac1c\ubc1c\uc790 \uacbd\ud5d8 \ud300\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\uc600\uc2b5\ub2c8\ub2e4. \ucee4\ud53c\uc640 \ucf54\ub4dc\uc5d0 \ub300\ud55c \uadf8\uc758 \uc0ac\ub791\uc740 \uc624\ud504\ub77c\uc778 \ub300\uba74 \uacbd\ud5d8\uc744 \uc990\uae30\uba74\uc11c \ubaa8\ubc14\uc77c\uc758 \uc138\uacc4\ub85c \ub118\uc5b4\uc654\uc2b5\ub2c8\ub2e4. \uadf8 \uc804\uc5d0\ub294 Twitter, BlackBerry, Microsoft\uc5d0\uc11c \uac1c\ubc1c\uc790 \uad00\uacc4 \ud300\uc5d0\uc11c \uc77c\ud588\uc73c\uba70, Research In Motion\uc5d0\uc11c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc784\ubca0\ub514\ub4dc GPS \uc5d4\uc9c0\ub2c8\uc5b4\ub85c \uadfc\ubb34\ud558\uae30\ub3c4 \ud588\uc2b5\ub2c8\ub2e4. \uc70c\ub9ac\uc5c4\uc740 \ub9e5\uae38 \ub300\ud559\uad50\uc5d0\uc11c \uc804\uae30 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uacf5\ud559\uc744 \uc804\uacf5\ud588\uc2b5\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/william-hoang\/"}]}},"authors":[{"term_id":8983,"user_id":30,"is_guest":0,"slug":"william-hoang","display_name":"William Hoang, Mobile Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","author_category":"","last_name":"Hoang","first_name":"William","job_title":"","user_url":"","description":"\uc70c\ub9ac\uc5c4\uc740 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ubaa8\ubc14\uc77c \uc5d4\uc9c0\ub2c8\uc5b4\ub9c1\/\uac1c\ubc1c\uc790 \uacbd\ud5d8 \ud300\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\uc600\uc2b5\ub2c8\ub2e4. \ucee4\ud53c\uc640 \ucf54\ub4dc\uc5d0 \ub300\ud55c \uadf8\uc758 \uc0ac\ub791\uc740 \uc624\ud504\ub77c\uc778 \ub300\uba74 \uacbd\ud5d8\uc744 \uc990\uae30\uba74\uc11c \ubaa8\ubc14\uc77c\uc758 \uc138\uacc4\ub85c \ub118\uc5b4\uc654\uc2b5\ub2c8\ub2e4. \uadf8 \uc804\uc5d0\ub294 Twitter, BlackBerry, Microsoft\uc5d0\uc11c \uac1c\ubc1c\uc790 \uad00\uacc4 \ud300\uc5d0\uc11c \uc77c\ud588\uc73c\uba70, Research In Motion\uc5d0\uc11c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc784\ubca0\ub514\ub4dc GPS \uc5d4\uc9c0\ub2c8\uc5b4\ub85c \uadfc\ubb34\ud558\uae30\ub3c4 \ud588\uc2b5\ub2c8\ub2e4. \uc70c\ub9ac\uc5c4\uc740 \ub9e5\uae38 \ub300\ud559\uad50\uc5d0\uc11c \uc804\uae30 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uacf5\ud559\uc744 \uc804\uacf5\ud588\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1997"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1997\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=1997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1997"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}