{"id":1773,"date":"2014-12-16T18:33:52","date_gmt":"2014-12-16T18:33:51","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1773"},"modified":"2020-10-15T19:00:05","modified_gmt":"2020-10-16T02:00:05","slug":"sasl-memcached-now-available","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/sasl-memcached-now-available\/","title":{"rendered":"SASL Memcached\uac00 \ucd9c\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4!"},"content":{"rendered":"<p>\uc774\ub2c8\uc15c \ub4a4\uc5d0 <a href=\"https:\/\/blogs.sun.com\/trond\/entry\/sasl_support_in_memcached\">\uacf5\uc9c0 \uc0ac\ud56d<\/a> \uc5d0 \ub530\ub974\uba74 \uba64\uce90\uc2dc\ub4dc \uc11c\ubc84\uac00 \uc774\uc81c SASL\uc744 \uc9c0\uc6d0\ud55c\ub2e4\uace0 \ud569\ub2c8\ub2e4(\uc774\ub294 \uc0c8\ub85c \ucd9c\uc2dc\ub41c 1.4.3\uc758 \uae30\ub2a5\uc785\ub2c8\ub2e4). <a title=\"memcached.org \uc7ac\uc124\uacc4\" href=\"https:\/\/memcached.org\/\">\uc624\ub298\ub9cc<\/a>) \uc9c0\ub09c \uc8fc\uc5d0\ub294 \ud2b9\ud788 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc601\uc5ed\uc5d0\uc11c \ub2e4\ub978 \ub9ce\uc740 \ubc1c\uc804\uc774 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba87 \uc8fc \uc804 Dustin\uc740 spymemcached(Java)\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc744 \ucd94\uac00\ud588\uc73c\uba70, \uc774\ubc88 \uc8fc\ubd80\ud130 Trond Norbye. <a href=\"https:\/\/blogs.sun.com\/trond\/\">libmemcached\uc5d0 \ub300\ud55c \uc9c0\uc6d0 \ucd94\uac00<\/a>\ub97c \ucd94\uac00\ud558\uc5ec \uba64\uce90\uc2dc\ub97c \uc0ac\uc6a9\ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ub300\ud55c \uba64\uce90\uc2dc\ub4dc \uc11c\ubc84\uc758 \uc9c0\uc6d0\uc744 \ud65c\uc6a9\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4! \uc774\uc81c \uad81\uae08\ud558\uc2e4 \uac81\ub2c8\ub2e4: \"\uc774 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc744 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub098\uc694?\"\ub77c\uace0\uc694? \uc774 \uae00\uc5d0\uc11c\ub294 <span style=\"font-weight: 400;\">\uc774 \uc9c8\ubb38\uc5d0 \ub2f5\ud558\uae30<\/span>\ub97c \uc0b4\ud3b4\ubcf4\uace0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc704\ud55c \uba64\uce90\uc2dc\ub4dc \ubc0f SASL \uc778\uc99d\uc758 \uba54\ucee4\ub2c8\uc998\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<h4>SASL\uc774\ub780 \ubb34\uc5c7\uc778\uac00\uc694?<\/h4>\n<p>SASL\uc740 \ub2e8\uc21c \uc778\uc99d \ubc0f \ubcf4\uc548 \uacc4\uce35\uc758 \uc57d\uc790\ub85c, \uc774 \uacbd\uc6b0 \uba64\uce90\uc2dc\ub41c \ud074\ub77c\uc774\uc5b8\ud2b8 \ubc14\uc774\ub108\ub9ac \ud504\ub85c\ud1a0\ucf5c\uacfc \uac19\uc740 \uc5f0\uacb0 \uae30\ubc18 \ud504\ub85c\ud1a0\ucf5c\uc5d0 \uc778\uc99d \uc9c0\uc6d0\uc744 \ucd94\uac00\ud560 \uc218 \uc788\ub294 \uc218\ub2e8\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub294 \ud2b9\uc815 \uc0ac\uc6a9\uc790\ub97c \uc2dd\ubcc4\ud558\uace0 \uc778\uc99d\ud558\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \ucd94\uac00\ub418\ub294 \ud568\uc218(API) \ud638\ucd9c\uc744 \ud1b5\ud574 \uc791\ub3d9\ud569\ub2c8\ub2e4. \ub610\ud55c \uc804\uccb4 \uc5f0\uacb0\uc5d0 \uac78\uccd0 \ubcf4\ud638 \uae30\ub2a5\uc744 \uad6c\ud604\ud560 \uc218 \uc788\ub294 \uc218\ub2e8\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\uac00 \uc2dd\ubcc4\ub418\uace0 \uc778\uc99d\ub418\uba74 \uc2dc\uc2a4\ud15c\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8 \ud504\ub85c\ud1a0\ucf5c\uacfc \uc5f0\uacb0 \uc0ac\uc774\uc5d0 \ubcf4\uc548 \uacc4\uce35\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<h4>\uba64\uce90\uc2dc\ub4dc\uc5d0 SASL\uc740 \uc5b4\ub5bb\uac8c \uad6c\ud604\ub418\ub098\uc694?<\/h4>\n<p>\ubc14\uc774\ub108\ub9ac \ud504\ub85c\ud1a0\ucf5c\uc774 \ucd94\uac00\ub418\uace0 SASL\uc774 \uad6c\ud604\ub418\uae30 \uc804\uae4c\uc9c0\ub294 \uba64\uce90\uc2dc\ub4dc\uc5d0\ub294 \uc778\uc99d \uacc4\uce35\uc774 \uc804\ud600 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. \ubaa8\ub4e0 \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 \uba64\uce90\uc2dc\uc5d0 \uc5f0\uacb0\ud558\uc5ec \ub9c8\uc74c\ub300\ub85c \ubaa8\ub4e0 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \ub124\ud2b8\uc6cc\ud06c\uac00 \uc7a0\uaca8 \uc788\ub294\uc9c0, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc548\uc804\ud558\uac8c \uc124\uacc4\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud558\ub294 \uac83\uc740 \uba64\uce90\uc2dc\ub4dc \uc0ac\uc6a9\uc790(\ubcf4\ud1b5 \uc6f9 \uac1c\ubc1c\uc790)\uc758 \ubaab\uc774\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8 \ud6c4, \uba64\uce90\uc2dc\uc5d0 \ubc14\uc774\ub108\ub9ac \ud504\ub85c\ud1a0\ucf5c\uc774 \ucd94\uac00\ub418\uc5b4 \ubcf4\ub2e4 \ud6a8\uc728\uc801\uc774\uace0 \uac04\uacb0\ud55c \ud074\ub77c\uc774\uc5b8\ud2b8-\uc11c\ubc84 \uc5f0\uacb0\uc774 \uac00\ub2a5\ud574\uc84c\uc2b5\ub2c8\ub2e4.<\/p>\n<p>SASL\uc744 \uc9c0\uc6d0\ud558\uba74\uc11c \uc11c\ubc84\uc5d0 \uae30\ub2a5\uc774 \ucd94\uac00\ub418\uc5b4 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc5f0\uacb0\uc774 \uac15\uc81c\ub85c \uc778\uc99d\ub418\uc5b4\uc57c\ub9cc \uc644\uc804\ud55c \uc5f0\uacb0\uc744 \uacc4\uc18d\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ubb3c\ub860 \uc774\ub97c \uc704\ud574\uc11c\ub294 \uc778\uc99d \uc815\ubcf4\ub97c \uc804\uc1a1\ud558\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud588\uc2b5\ub2c8\ub2e4. \ucc98\uc74c\uc5d0\ub294 \uc2a4\ud30c\uc774\uba64\uce90\uc2dc\ub4dc \ud074\ub77c\uc774\uc5b8\ud2b8(\uc790\ubc14)\ub9cc \uc9c0\uc6d0\ub418\uc5c8\uc9c0\ub9cc, \uc18c\uac1c\uc5d0\uc11c \uc774\ubbf8 \uc5b8\uae09\ud588\ub4ef\uc774 \uc774\uc81c libmemcached\ub3c4 \uc9c0\uc6d0\ub429\ub2c8\ub2e4.<\/p>\n<p>\uae30\ubcf8\uc801\uc73c\ub85c SASL\uc740 \uc0ac\uc6a9\uc790 \uc790\uaca9 \uc99d\uba85\uc744 \uc704\ud574 \uc800\uc7a5\uc18c\ub97c \uc0ac\uc6a9\ud558\uba70, LDAP \ub610\ub294 SQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc608\uc81c\uc5d0\uc11c\ub294 \uc0ac\uc6a9\uc790 \uc790\uaca9 \uc99d\uba85\uc774 \uba64\uce90\uc2dc\uac00 \uc2e4\ud589\ub420 \uc11c\ubc84\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\uac00 \uc5f0\uacb0\ud560 \uc218 \uc788\uc73c\ub824\uba74 \uba64\uce90\uc2dc\ub4dc \uc11c\ubc84\ub294 \uc0ac\uc6a9\uc790\uac00 \uc790\uaca9 \uc99d\uba85\uc744 \uc81c\uacf5\ud558\uc9c0 \uc54a\uc73c\uba74 \uc5f0\uacb0\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc73c\uba70, \ud574\ub2f9 \uc790\uaca9 \uc99d\uba85\uc774 \uc800\uc7a5\ub41c \uc0ac\uc6a9\uc790 \uc790\uaca9 \uc99d\uba85\uacfc \uc77c\uce58\ud574\uc57c \ud569\ub2c8\ub2e4. \uba64\uce90\uc2dc\ub4dc \uad6c\ud604\uc758 \uc138\ubd80 \uc0ac\ud56d\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/code.google.com\/p\/memcached\/wiki\/SASLAuthProtocol\">\uc5ec\uae30<\/a>.<\/p>\n<h4>Memcached\ub85c SASL\uc744 \uc124\uce58\ud558\ub824\uba74 \uc5b4\ub5bb\uac8c \ud558\ub098\uc694?<\/h4>\n<p>\uac00\uc7a5 \uba3c\uc800 \ud574\uc57c \ud560 \uc77c\uc740 \ucd5c\uc2e0 \uba64\uce90\uc2dc\ub4dc \uc11c\ubc84\ub97c \uad6c\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774\ub97c \ucc3e\uc744 \uc218 \uc788\ub294 \uacf3 \uc911 \ud558\ub098\ub294 \uba64\uce90\uc2dc\ub4dc GitHub\uc785\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/memcached\/memcached\">\uc800\uc7a5\uc18c<\/a> \ub610\ub294 <a href=\"https:\/\/github.com\/memcached\">memcached.org<\/a>\ub97c \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4(\ub2e4\uc74c \ub2e8\uacc4\uc5d0\uc11c \uc124\uba85\ud569\ub2c8\ub2e4). \ub610\ud55c \uc11c\ubc84\uc5d0 \uac1c\ubc1c \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \uac19\uc740 \uba87 \uac00\uc9c0 \uc804\uc81c \uc870\uac74\uacfc saslpasswd\uc640 \uac19\uc740 \uc720\ud2f8\ub9ac\ud2f0\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \uc6b0\ubd84\ud22c\uc5d0\uc11c\ub294 \ud328\ud0a4\uc9c0\uac00 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uce58\ub429\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">sudo apt-get -f \uc124\uce58 libsasl2-2 sasl2-bin libsasl2-2 libsasl2-dev libsasl2-modules<\/div>\n<\/div>\n<p>\uc78a\uc9c0 \ub9c8\uc138\uc694, \uba64\uce90\uc2dc\ub4dc\uc758 \uc77c\ubc18\uc801\uc778 \uc694\uad6c \uc0ac\ud56d: \uc0ac\uc6a9 \uc911\uc778 \uc6b4\uc601\uccb4\uc81c\uc5d0 \ub530\ub77c \ud328\ud0a4\uc9c0\ub97c \uc801\uc808\ud788 \uac80\uc0c9\ud558\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<h4>SASL Memcached\ub294 \uc5b4\ub5bb\uac8c \uc124\uc815\ud558\ub098\uc694?<\/h4>\n<p>\uc774\uc81c SASL \uba64\uce90\uc2dc\ub97c \uc5bb\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc774 \ucf54\ub4dc\ub294 \uc774\uc81c \ub2e4\uc74c\uc5d0\uc11c \uacf5\uc2dd\uc801\uc73c\ub85c \ub9b4\ub9ac\uc2a4\ub429\ub2c8\ub2e4. <a href=\"https:\/\/memcached.org\">memcached.org<\/a> <span style=\"font-family: Courier;\">wget https:\/\/memcached.googlecode.com\/files\/memcached-1.4.3.tar.gz<\/span> <span style=\"font-family: Courier;\">tar xvzf memcached-1.4.3.tar.gz<\/span> \ub610\ub294 \ud56d\uc0c1 \uadf8\ub807\ub4ef\uc774 \ub2e4\uc74c\uc744 \ud1b5\ud574 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/memcached\">Github<\/a><\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">git clone git:\/\/github.com\/memcached\/memcached.git<\/div>\n<\/div>\n<p>\uc774\uc81c \ucef4\ud30c\uc77c\ud558\uace0 \uc124\uce58\ud569\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">cd memcached-1.4.3<br \/>\n.\/configure -enable-sasl<br \/>\n\ud14c\uc2a4\ud2b8 \ub9cc\ub4e4\uae30<br \/>\nsudo make \uc124\uce58<\/div>\n<\/div>\n<p>\ub2e4\uc74c\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \uba64\uce90\uc2dc \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uad6c\uc131 \ud30c\uc77c\uc744 \uc124\uc815\ud569\ub2c8\ub2e4. \uc2dc\uc2a4\ud15c \uc804\uccb4 \ub610\ub294 \ud2b9\uc815 \uc0ac\uc6a9\uc790\uc5d0 \ub300\ud574 \ub450 \uac00\uc9c0 \ubc29\ubc95\uc73c\ub85c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h4>\uc2dc\uc2a4\ud15c \uc804\uccb4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c:<\/h4>\n<p>\uc2dc\uc2a4\ud15c \uc804\uccb4 \uc124\uc815\uc758 \uacbd\uc6b0, \uc0ac\uc6a9\uc790 \ubc0f \ube44\ubc00\ubc88\ud638 \uc815\ubcf4\uac00 \ud3ec\ud568\ub41c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc744 \uac00\ub9ac\ud0a4\ub3c4\ub85d memcached.conf \ud30c\uc77c\uc744 \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. <code>\/usr\/lib\/sasl2\/memcached.conf<\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc560\ud50c\ub9ac\ucf00\uc774\uc158\ubcc4\ub85c \uc774\ub984\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">mech_list: plainlog_level: 5<\/div>\n<\/div>\n<p>\ucc38\uace0: \uc6b0\ubd84\ud22c\uc5d0\uc11c\ub294 \uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc774 \uc774\ubbf8 \uc874\uc7ac\ud569\ub2c8\ub2e4. \uc0c8\ub85c \ub9cc\ub4e4\uc5b4\uc57c \ud558\ub294 \uacbd\uc6b0 \ub2e4\uc74c \uba85\ub839\uc744 \uc2e4\ud589\ud558\uae30 \uc804\uc5d0 sasl \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uc704\uce58\ub85c \uc9c0\uc815\ud55c \ub514\ub809\ud130\ub9ac\uac00 \uc874\uc7ac\ud558\ub294\uc9c0 \ud655\uc778\ud558\uc138\uc694) \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc5d0 \uc0ac\uc6a9\uc790\ub97c \ucd94\uac00\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ud558\uc138\uc694:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">sudo saslpasswd2 -c -a memcached<\/div>\n<\/div>\n<p>\ubcf4\uc2dc\ub2e4\uc2dc\ud53c <code>-a<\/code> \ub294 \uc774\uc804 \ub2e8\uacc4 'memcached.conf'\uc5d0\uc11c conf \ud30c\uc77c\uc5d0 \uc9c0\uc815\ud55c \uc774\ub984\uacfc \uc77c\uce58\ud574\uc57c \ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc778 'memcached'\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc774 saslpasswd2 \uba85\ub839\uc744 \uc2e4\ud589\ud558\uba74 \uc544\ub798\uc640 \uac19\uc774 \ube44\ubc00\ubc88\ud638\uc640 \ube44\ubc00\ubc88\ud638 \ud655\uc778\uc744 \uc694\uccad\ud558\ub294 \uba54\uc2dc\uc9c0\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">patg@ishvara:~\/code-dev\/memcached-dustin$ sudo saslpasswd2 -c -a memcached capttofu \ube44\ubc00\ubc88\ud638:\ub2e4\uc2dc(\ud655\uc778\uc6a9):<\/div>\n<\/div>\n<p>\uc774\uc81c \uc0dd\uc131\ud55c \uc0ac\uc6a9\uc790\uac00 \uc874\uc7ac\ud558\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud655\uc778\ud558\ub824\uba74 \uc2e4\ud589\ud569\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">sudo sasldblistusers2<\/div>\n<\/div>\n<p>-\ub610\ub294-<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">sudo sasldblistusers2 -f \/etc\/sasldb2<\/div>\n<\/div>\n<p>\ub2e4\uc74c\uacfc \uac19\uc740 \ucd9c\ub825\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">patg@ishvara:~\/code-dev\/memcached-dustin$ sudo sasldblistusers2test1@ishvara: userPassword<\/div>\n<\/div>\n<h4>\uc0ac\uc6a9\uc790\ubcc4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c:<\/h4>\n<p>\uac00\uc7a5 \uba3c\uc800 \ud655\uc778\ud574\uc57c \ud560 \uac83\uc740 \ub9e4\uc6b0 \uc911\uc694\ud55c \ud658\uacbd \ubcc0\uc218\ub97c \uc124\uc815\ud558\ub294 \uac83\uc785\ub2c8\ub2e4, <code>SASL_CONF_PATH<\/code> \ub85c \uc124\uc815\ud569\ub2c8\ub2e4. \uc774 \uc608\uc81c\uc5d0\uc11c\ub294 \uc774 \uacbd\ub85c\uac00 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ub429\ub2c8\ub2e4. <code>\/home\/patg\/sasl<\/code>.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">\ub0b4\ubcf4\ub0b4\uae30 SASL_CONF_PATH=\/home\/patg\/sasl<\/div>\n<\/div>\n<p>\uc9c0\uc815\ud55c \ub514\ub809\ud130\ub9ac \uacbd\ub85c\ub97c \ub9cc\ub4e4\uc5b4\uc57c \ud569\ub2c8\ub2e4! \ub2e4\uc74c\uc73c\ub85c memcached.conf \ud30c\uc77c\uc744 \uc124\uc815\ud569\ub2c8\ub2e4(\uc560\ud50c\ub9ac\ucf00\uc774\uc158\ubcc4\ub85c \uc774\ub984 \uc9c0\uc815). \uc774 \uc608\uc2dc\uc758 \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">mech_list: plainlog_level: 5sasldb_path: \/home\/patg\/sasl\/sasldb2<\/div>\n<\/div>\n<p>\ub2e4\uc74c\uc73c\ub85c \uc774\uc804 \ub2e8\uacc4\uc5d0\uc11c \ubc29\uae08 \uc9c0\uc815\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc744 memcached.conf \ud30c\uc77c\uc5d0 \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">sudo saslpasswd2 -c -a memcached -f \/home\/patg\/sasl\/sasldb2 \ucea1\ud1a0\ud478<\/div>\n<\/div>\n<p>\ud50c\ub798\uadf8\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc774\ub984\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. <em>\uba64\uce90\uc2dc\ub4dc<\/em>\ub97c \uc785\ub825\ud558\uba70, \uc774 \uc774\ub984\uc740 \uc704\uc758 \uc774\uc804 \uc608\uc81c\uc5d0\uc11c \uc9c0\uc815\ud55c \uad6c\uc131 \ud30c\uc77c\uc758 \uc774\ub984\uacfc \uc77c\uce58\ud574\uc57c \ud569\ub2c8\ub2e4, <span style=\"font-family: Courier;\">memcached.conf<\/span>. \ub610\ud55c \uc774 \uc608\uc81c\uc5d0\uc11c\ub294 -f \ud50c\ub798\uadf8\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc744 \uc9c0\uc815\ud574\uc57c \ud558\ubbc0\ub85c \uc2dc\uc2a4\ud15c \uc804\uccb4 \uc608\uc81c\uc640 \ub2e4\ub974\ub2e4\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694. saslpasswd2\ub97c \uc2e4\ud589\ud558\uba74 \uc544\ub798 \uc608\uc640 \uac19\uc774 \ube44\ubc00\ubc88\ud638 \ubc0f \ube44\ubc00\ubc88\ud638 \ud655\uc778\uc744 \uc785\ub825\ud558\ub77c\ub294 \uba54\uc2dc\uc9c0\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">patg@ishvara:~$ saslpasswd2 -c -a memcached -f \/home\/patg\/sasl\/sasldb2 \ucea1\ud1a0\ud478\ud328\uc2a4\uc6cc\ub4dc:\ub2e4\uc2dc(\ud655\uc778\uc6a9):<\/div>\n<\/div>\n<p>\uc774\uc81c sasldblistusers2\ub97c \uc2e4\ud589\ud558\uc5ec \uc2e4\uc81c\ub85c \uc0ac\uc6a9\uc790\ub97c \ucd94\uac00\ud588\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4. saslpasswd2\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc744 \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">patg@ishvara:~$ sasldblistusers2 -f \/home\/patg\/sasl\/sasldb2capttofu@ishvara: userPassword<\/div>\n<\/div>\n<h4>SASL \uc9c0\uc6d0 \uba64\uce90\uc2dc\ub4dc \uc2e4\ud589<\/h4>\n<p>\uc2dc\uc2a4\ud15c \uc804\uccb4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c \ub610\ub294 \uc0ac\uc6a9\uc790 \uc218\uc900 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uc801\uc808\ud55c \ud50c\ub798\uadf8\ub97c \uc0ac\uc6a9\ud558\uc5ec memcached\ub97c \uc2dc\uc791\ud574\uc57c \ud569\ub2c8\ub2e4. SASL\uc774 \ud65c\uc131\ud654\ub41c \uc0c1\ud0dc\uc5d0\uc11c memcached\uac00 \uc2e4\ud589\ub418\uba74 \ubc14\uc774\ub108\ub9ac \ud504\ub85c\ud1a0\ucf5c\uc774 \uc0ac\uc6a9\ub418\uba70 \ud14d\uc2a4\ud2b8 \ud504\ub85c\ud1a0\ucf5c\uc740 \uaebc\uc9d1\ub2c8\ub2e4. \uc774 \uc608\uc5d0\uc11c\ub294 \uc0ac\uc6a9\uc790 \uc218\uc900 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc0ac\uc6a9\uc790 'patg'\ub85c\uc11c \ub2e4\uc74c\uc744 \uc218\ud589\ud588\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">\ub0b4\ubcf4\ub0b4\uae30 SASL_CONF_PATH=\/home\/patg\/sasl\/usr\/local\/bin\/memcached -S -vvv<\/div>\n<\/div>\n<p>\uc774\uc81c memcached\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \uc774 \uae00\uc5d0\uc11c \ubc1c\ud45c\ud55c \ub300\ub85c \ud65c\uc131\ud654\ub41c \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud558\uba70, \ud604\uc7ac spymemcached(Java) \ubc0f libmemcached\uac00 \uc9c0\uc6d0\ub429\ub2c8\ub2e4. (\uc801\uc5b4\ub3c4 \uc800\uc5d0\uac8c\ub294!) \uac04\ub2e8\ud558\uac8c \ud558\uae30 \uc704\ud574 memcached\uc640 \ud568\uaed8 \uc81c\uacf5\ub418\ub294 \ud14c\uc2a4\ud2b8 \uc911 \ud558\ub098\uc778 binary-sasl.t\ub97c \ud574\ud0b9\ud558\uc5ec patg.t\ub85c \uc774\ub984\uc744 \ubcc0\uacbd\ud588\uc2b5\ub2c8\ub2e4(Cache::Memcached\uc5d0 \uc9c0\uc6d0\uc744 \ucd94\uac00\ud574\uc57c \ud55c\ub2e4\ub294 \uac83\uc744 \uc0c1\uae30\uc2dc\ucf1c \uc90d\ub2c8\ub2e4!) \ub610\ud55c \ud14c\uc2a4\ud2b8 \uc2a4\uc704\ud2b8 \ucf54\ub4dc\uc5d0\uc11c \uae30\uc874\uc5d0 \uc2e4\ud589 \uc911\uc778 memcached \uc11c\ubc84\ub97c \uc0ac\uc6a9\ud55c\ub2e4\uace0 \uba85\uc2dc\ud558\ub294 \ud658\uacbd \ubcc0\uc218\ub3c4 \ub0b4\ubcf4\ub0b4\uc57c \ud588\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">\ub0b4\ubcf4\ub0b4\uae30 T_MEMD_USE_DAEMON=localhost:11211<\/div>\n<\/div>\n<p>\uadf8\ub7f0 \ub2e4\uc74c \ud14c\uc2a4\ud2b8\ub97c \uc2e4\ud589\ud588\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">patg@ishvara:~\/code-dev\/memcached-dustin$ perl t\/patg.t1.20returning handleok 1 - \uc11c\ubc84 \uc2dc\uc791ok 2 - \uc62c\ubc14\ub978 \ubc84\uc804: 0ok 3 - list_mechs CRAM-MD5 PLAINok 4 - \uc778\uc99d \uc2e4\ud328ok 5 - \uc624\ub958 \ucf54\ub4dc \uc77c\uce58ok 6 - \uc778\uc99d \uc2e4\ud328ok 7 - \uc624\ub958 \ucf54\ub4dc \uc77c\uce58ok 8 - \uc778\uc99d \uc2e4\ud328ok 9 - \uc624\ub958 \ucf54\ub4dc \uc77c\uce58ok 10 - \uc778\uc99d \uc2e4\ud328ok 11 - \uc624\ub958 \ucf54\ub4dc \uc77c\uce58ok 12 - \ub098\uc05c \uba54\ud06cok 13 - \ub098\uc05c \uc778\uc99dok 14 - \uc778\uc99d\ub428ok 15ok 16 - \uc77c\ubd80 \uac12 = \uc77c\ubd80 \uac12ok 17ok 18ok 19 - \uc77c\ubd80 \uac12 = \uc77c\ubd80 \uac12ok 20<\/div>\n<\/div>\n<p>\ud765\ubbf8\ub86d\uace0 \uc8fc\ubaa9\ud560 \ub9cc\ud55c \uac83\uc740 list_mechs \ud14c\uc2a4\ud2b8\uc785\ub2c8\ub2e4. \uc774 \ud14c\uc2a4\ud2b8\ub294 \uc11c\ubc84\uc5d0 \uad6c\uc131\ub41c \uc778\uc99d \uba54\ucee4\ub2c8\uc998\uc744 \ub098\uc5f4\ud569\ub2c8\ub2e4. \uc5ec\uae30\uc11c \ud765\ubbf8\ub85c\uc6b4 \uc810\uc740 -vvv\ub85c \ud14c\uc2a4\ud2b8\ub97c \uc2dc\uc791\ud588\uae30 \ub54c\ubb38\uc5d0 \uc2e4\ud589 \uc911\uc778 \uc11c\ubc84\uac00 \uc778\uc99d\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4. \uc778\uc99d\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">&lt;30 0x00 0x00 0x00 0x00authenticated() in cmd 0x21 is true30: going from conn_parse_cmd to conn_nreadmech: &#8220;PLAIN&#8221; with 23 bytes of datasasl result code: -13Unknown sasl response: -13&gt;30 Writing an error: Auth failure.<\/div>\n<\/div>\n<p>\uc778\uc99d\uc5d0 \uc131\uacf5\ud588\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">authenticated() in cmd 0x21 is true30: going from conn_parse_cmd to conn_nreadmech: &#8220;PLAIN&#8221; with 16 bytes of datasasl result code: 0<\/div>\n<\/div>\n<p>\uc778\uc99d\uc744 \uc0ac\uc6a9\ud558\uc5ec GET\uc5d0 \uc131\uacf5\ud588\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">cmd 0x00\uc5d0\uc11c authenticated()\uac00 true30: conn_parse_cmd\uc5d0\uc11c conn_nread FOUND KEY xL 0 9somevalueofu&gt;30 \ube48 \uc751\ub2f5\uc744 \uc791\uc131\ud569\ub2c8\ub2e4:<\/div>\n<\/div>\n<p>\uc11c\ubc84\uac00 \uc791\ub3d9\ud569\ub2c8\ub2e4! \uc774\uc81c libmemcached\ub97c \uc0ac\uc6a9\ud558\uc5ec SASL memcached\ub97c \uc0ac\uc6a9\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h4>Libmemcached \uc124\uce58<\/h4>\n<p>\ud2b8\ub860\ub4dc\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc774 \ud3ec\ud568\ub41c libmemcached\ub97c \uc124\uce58\ud558\ub824\uba74 \uba3c\uc800 \ub7f0\uce58\ud328\ub4dc\uc5d0\uc11c \ud2b8\ub9ac\ub97c \ubcf5\uc81c\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574\uc11c\ub294 \ubc14\uc790 \ub9ac\ube44\uc804 \uc81c\uc5b4 \uc2dc\uc2a4\ud15c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uc6b0\ubd84\ud22c\uc758 \uacbd\uc6b0 \uadf8\ub807\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">apt-get \uc124\uce58 bzr<\/div>\n<\/div>\n<p>\ub2e4\uc74c\uc73c\ub85c \ud2b8\ub9ac\ub97c \ubcf5\uc81c\ud569\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">bzr \ubcf5\uc81c lp:~trond-norbye\/libmemcached\/sasl_rfe_462250cd sasl_rfe_462250\/sh config\/bootstrap.\/configure # \ucc38\uace0, SASL\uc774 \uae30\ubcf8\uc801\uc73c\ub85c \ucef4\ud30c\uc77c\ub418\ubbc0\ub85c -enable-sasl\uc744 \uc0ac\uc6a9\ud560 \ud544\uc694 \uc5c6\uc74cmake testsudo make \uc124\uce58\ud558\uc2ed\uc2dc\uc624.<\/div>\n<\/div>\n<p>\uc774\ub807\uac8c \ud558\uba74 libmemcached\uac00 \uc124\uce58\ub429\ub2c8\ub2e4. \uc774\uc81c \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud560\uae4c\uc694? \uae00\uc384\uc694, \uc774\ub97c \ud65c\uc6a9\ud558\ub824\uba74 \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \uc800\ub294 \uc7ac\ubbf8\ub97c \uc704\ud574 \ud2b8\ub860\ub4dc\uac00 \uac8c\uc2dc\ubb3c\uc5d0\uc11c \uc81c\uacf5\ud55c \uc815\ubcf4\ub97c \uc0ac\uc6a9\ud558\ub294 \uac04\ub2e8\ud55c C \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4. \uc800\ub294 \uc774 \ud504\ub85c\uadf8\ub7a8\uc744 <a href=\"https:\/\/patg.net\/sasl_test.c\">sasl_test.c<\/a> \ub178\uc2a4\ucf00\uc77c \ub2e4\uc6b4\ub85c\ub4dc\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc5d0 \ud3ec\ud568\ub41c \uae30\ub2a5\uc758 \ud575\uc2ec\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. \uc8fc\uc694 \uae30\ub2a5\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uc911\uc694\ud55c \ub0b4\uc6a9\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">\n<p>\/* SASL\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud074\ub77c\uc774\uc5b8\ud2b8 \uc5f0\uacb0\uc744 \ucd08\uae30\ud654\ud569\ub2c8\ub2e4 *\/ if (sasl_client_init(NULL) != SASL_OK) { fprintf(stderr, \"sasl \ub77c\uc774\ube0c\ub7ec\ub9ac \ucd08\uae30\ud654\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4!n\"); return 1; }<\/p>\n<p>memcached_st *memc = memcached_create(NULL); \/* sasl \uc778\uc99d\uc5d0 \ub300\ud55c sasl \ucf5c\ubc31 \uc124\uc815 *\/ memcached_set_sasl_callbacks(memc, sasl_\ucf5c\ubc31); memcached_server_st *servers = memcached_servers_parse(servers_list); memcached_server_push(memc, \uc11c\ubc84); memcached_server_list_free(servers);<\/p>\n<p>\/* SASL\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \ubc14\uc774\ub108\ub9ac \ud504\ub85c\ud1a0\ucf5c\uc744 \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4 *\/ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1);<\/p>\n<p>\/* \uac12 \uc124\uc815 *\/ rc= memcached_set(memc, key, keylen, value, vallen, 0, 0); if (rc == MEMCACHED_SUCCESS) printf(\"\uc124\uc815 \ud0a4 %s \uac12 %sn\", key, value); assert(rc == MEMCACHED_SUCCESS);<\/p>\n<p>\/* \uac12 \uac00\uc838\uc624\uae30 *\/ retval= memcached_get(memc, key, keylen, &amp;retlen, (uint32_t)0, &amp;rc); if (rc == MEMCACHED_SUCCESS) printf(\"fetched key %s value %sn\", key, retval); assert(rc == MEMCACHED_SUCCESS);<\/p>\n<p>\/* \uc5f0\uacb0 \ud574\uc81c *\/ memcached_free(memc); sasl_done();<\/p>\n<\/div>\n<\/div>\n<p>\uadf8\ub7f0 \ub2e4\uc74c Trond\uc758 \uc9c0\uce68\uc5d0 \ub530\ub77c (\uadf8\uc758 \ud398\uc774\uc9c0\uc5d0\uc11c \uac00\uc838\uc628) \ucf5c\ubc31\uc744 \ucd94\uac00\ud558\uace0 \ub0b4\uac00 \uac00\uc9c0\uace0\uc788\ub294 \ub2e4\ub978 \ud30c\uc77c\uc5d0 \uc120\uc5b8\ud569\ub2c8\ub2e4. <a href=\"https:\/\/patg.net\/sasl_test.h\">sasl_test.h<\/a><\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">\n<p>static int get_username(void *context, int id, const char **result, \ubd80\ud638 \uc5c6\ub294 int *len);static int get_password(sasl_conn_t *conn, void *context, int id, sasl_secret_t **psecret);<\/p>\n<p>static sasl_\ucf5c\ubc31_t sasl_\ucf5c\ubc31[] = {{ SASL_CB_USER, &amp;get_username, NULL}, { SASL_CB_AUTHNAME, &amp;get_username, NULL}, { SASL_CB_PASS, &amp;get_password, NULL}, { SASL_CB_LIST_END, NULL, NULL}}\uc785\ub2c8\ub2e4;<\/p>\n<\/div>\n<\/div>\n<p>\uadf8\ub7f0 \ub2e4\uc74c \uc774\ub97c \ucf5c\ubc31\uc5d0 \uc815\uc758\ud588\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/patg.net\/sasl_test.c\">sasl_test.c<\/a> (\ube44\ubc00\ubc88\ud638\ub294 sasl db \ud30c\uc77c\uc5d0 \ucd94\uac00\ub41c \ub0b4\uc6a9\uc5d0 \ub530\ub77c \uc124\uc815\ub429\ub2c8\ub2e4):<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">\n<p>\uc815\uc801 \ubb38\uc790 *\uc0ac\uc6a9\uc790\uba85 = \"\ucea1\ud1a0\ud478\";\uc815\uc801 \ubb38\uc790 *\ud328\uc2a4\uc6cc\ub4dc = \"s3kr1t\";<\/p>\n<p>static int get_username(void *context, int id, const char **result, unsigned int *len){ if (!result || (id != SASL_CB_USER &amp;&amp; id != SASL_CB_AUTHNAME)) { return SASL_BADPARAM; }<\/p>\n<p>*result= username; if (len) { *len= (username == NULL) ? 0 : (\ubd80\ud638 \uc5c6\ub294 int)strlen(username); }<\/p>\n<p>\ubc18\ud658 SASL_OK;}<\/p>\n<p>static int get_password(sasl_conn_t *conn, void *context, int id, sasl_secret_t **psecret){ static sasl_secret_t* x;<\/p>\n<p>if (!conn || ! psecret || id != SASL_CB_PASS) { return SASL_BADPARAM; }<\/p>\n<p>if (passwd == NULL) { *psecret = NULL; return SASL_OK; } size_t len = strlen(passwd); x = realloc(x, sizeof(sasl_secret_t) + len); if (!x) { return SASL_NOMEM; }<\/p>\n<p>x-&gt;len = len; strcpy((void *)x-&gt;data, passwd);<\/p>\n<p>*psecret = x; \ubc18\ud658 SASL_OK;}<\/p>\n<\/div>\n<\/div>\n<p>\ub2e4\uc74c \uba85\ub839\uc73c\ub85c \ucef4\ud30c\uc77c\ud569\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">gcc -g -O0 -I\/usr\/local\/include\/libmemcached -lmemcached -lmemcachedutil -o sasl_test sasl_test.c<\/div>\n<\/div>\n<p>\uadf8\ub7ec\uba74 \ud14c\uc2a4\ud2b8\ub97c \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4!<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">.\/sasl_test localhost:11211 \ud14c\uc2a4\ud2b8 \ud0a4 \ud14c\uc2a4\ud2b8 \uac12<\/div>\n<\/div>\n<p>SASL\uc774 \ud65c\uc131\ud654\ub41c \uba64\uce90\uc2dc\ub4dc \uc11c\ubc84\ub97c \uad00\ucc30\ud558\uba74 \uc778\uc99d\uc774 \uc791\ub3d9\ud558\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5f0\uacb0:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">&lt;30 \uc0c8\ub85c\uc6b4 \ubc14\uc774\ub108\ub9ac \ud074\ub77c\uc774\uc5b8\ud2b8 \uc5f0\uacb0.30: conn_new_cmd\uc5d0\uc11c conn_waiting\uc73c\ub85c \uc774\ub3d930: conn_waiting\uc5d0\uc11c conn_read\ub85c \uc774\ub3d930: conn_read\uc5d0\uc11c conn_parse_cmd\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<\/div>\n<\/div>\n<p>\uc778\uc99d:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">&lt;30 \ubc14\uc774\ub108\ub9ac \ud504\ub85c\ud1a0\ucf5c \ub370\uc774\ud130 \uc77d\uae30:&lt;30 0x80 0x20 0x00 0x00 0x00&lt;30 0x00 0x00 0x00 0x00 0x00&lt;30 0x00 0x00 0x00 0x00&lt;30 0x00 0x00 0x00 0x00&lt;30 0x00 0x00 0x00 0x00&lt;30 0x00 0x00 0x00 0x00&lt;30 0x00 0x20\uc5d0\uc11c \uc778\uc99d\ub41c()\uc774 \ucc38\uc785\ub2c8\ub2e4.<\/div>\n<\/div>\n<p>\uc124\uc815, \uc778\uc99d\ub428:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">30: conn_read\uc5d0\uc11c conn_parse_cmd&lt;30\uc73c\ub85c \uc774\ub3d9 \ubc14\uc774\ub108\ub9ac \ud504\ub85c\ud1a0\ucf5c \ub370\uc774\ud130 \uc77d\uae30:&lt;30 0x80 0x01 0x00 0x07&lt;30 0x08 0x00 0x00 0x00&lt;30 0x00 0x00 0x00 0x18&lt;30 0x00 0x00 0x00 0x00&lt;30 0x00 0x00 0x00 0x00&lt;30 0x00 0x01\uc758 \uc778\uc99d()\uc774 true30\uc785\ub2c8\ub2e4: conn_parse_cmd\uc5d0\uc11c conn_nread FOUND KEY testkey0 0 10test valueofu<\/div>\n<\/div>\n<p>\uac00\uc838\uc624\uae30, \uc778\uc99d:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace;\">30: conn_read\uc5d0\uc11c conn_parse_cmd&lt;30\uc73c\ub85c \uc774\ub3d9 \ubc14\uc774\ub108\ub9ac \ud504\ub85c\ud1a0\ucf5c \ub370\uc774\ud130 \uc77d\uae30:&lt;30 0x80 0x0c 0x00 0x07&lt;30 0x00 0x00 0x00 0x00&lt;30 0x00 0x00 0x00 0x07&lt;30 0x00 0x00 0x00 0x00&lt;30 0x00 0x0c\uc758 \uc778\uc99d()\uc774 true30\uc785\ub2c8\ub2e4: conn_parse_cmd\uc5d0\uc11c conn_nread FOUND KEY testkey0 0 9testvaluettofu&gt;30 \ube48 \uc751\ub2f5\uc744 \uc791\uc131 \uc911\uc785\ub2c8\ub2e4:<\/div>\n<\/div>\n<p>\uadf8\ub9ac\uace0 \uc791\ub3d9\ud569\ub2c8\ub2e4! \uc774\uc81c \ub2e4\ub978 libmemcached \uae30\ubc18 \ud504\ub85c\uadf8\ub7a8\ub3c4 \uadf8\uc5d0 \ub9de\uac8c \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubb3c\ub860 \uc2a4\ud30c\uc774\uba64\uce90\uc2dc\ub97c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h4>\uc694\uc57d<\/h4>\n<p>\uc774 \ud3ec\uc2a4\ud305\uc744 \ud1b5\ud574 SASL\uc774 \ubb34\uc5c7\uc774\uace0 \uc5b4\ub5bb\uac8c memcached\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uc9c0 \ub354 \uc798 \uc774\ud574\ud558\uac8c \ub418\uc5c8\uc744 \uac83\uc785\ub2c8\ub2e4. \uc774\uc81c \uba64\uce90\uc2dc\ub4dc \uc11c\ubc84\uc640 \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \ubaa8\ub450 \uad6c\ud558\uace0, \ucef4\ud30c\uc77c\ud558\uace0, \uc124\uce58\ud558\uace0, SASL\uc774 \ud65c\uc131\ud654\ub41c libmemcached\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc744 \ubfd0\ub9cc \uc544\ub2c8\ub77c libmemcached\ub97c \uc0ac\uc6a9\ud558\ub294 \uba64\uce90\uc2dc\ub4dc \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc791\uc131\ud560 \uc218 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc990\uaca8\ubcf4\uc138\uc694!<\/p>","protected":false},"excerpt":{"rendered":"<p>After the initial announcement by Dustin Sallings that the memcached server now has SASL support, (which is a feature in the newly released 1.4.3, announced just today) this past week has also resulted in a flurry of other developments, particularly [&hellip;]<\/p>","protected":false},"author":40,"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":[8984],"class_list":["post-1773","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 v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SASL Memcached Now Available! - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Learn the advantages of SASL support in memcached, as well as the detailed mechanics of memcached and SASL authentication for your applications.\" \/>\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\/sasl-memcached-now-available\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SASL Memcached Now Available!\" \/>\n<meta property=\"og:description\" content=\"Learn the advantages of SASL support in memcached, as well as the detailed mechanics of memcached and SASL authentication for your applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/sasl-memcached-now-available\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T18:33:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-10-16T02:00:05+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=\"Patrick Galbraith\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Patrick Galbraith\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/\"},\"author\":{\"name\":\"Patrick Galbraith\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f5f72f2c97ee554b0f43ddd3726ec82c\"},\"headline\":\"SASL Memcached Now Available!\",\"datePublished\":\"2014-12-16T18:33:51+00:00\",\"dateModified\":\"2020-10-16T02:00:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/\"},\"wordCount\":2307,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#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\/sasl-memcached-now-available\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/\",\"name\":\"SASL Memcached Now Available! - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T18:33:51+00:00\",\"dateModified\":\"2020-10-16T02:00:05+00:00\",\"description\":\"Learn the advantages of SASL support in memcached, as well as the detailed mechanics of memcached and SASL authentication for your applications.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#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\/sasl-memcached-now-available\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SASL Memcached Now Available!\"}]},{\"@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\/f5f72f2c97ee554b0f43ddd3726ec82c\",\"name\":\"Patrick Galbraith\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/6f163bf0bc012232ca7875624e23b1b2\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/12ac594c0da897f5fb7bb17d4b6ab93fb913370e6ea82eb8f812c62562d6552f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/12ac594c0da897f5fb7bb17d4b6ab93fb913370e6ea82eb8f812c62562d6552f?s=96&d=mm&r=g\",\"caption\":\"Patrick Galbraith\"},\"description\":\"Patrick Galbraith is a Software Engineer at Couchbase. His work is doing R&amp;D, prototyping and development of Linux and Windows product build systems.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/patrick-galbraith\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SASL Memcached Now Available! - The Couchbase Blog","description":"Learn the advantages of SASL support in memcached, as well as the detailed mechanics of memcached and SASL authentication for your applications.","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\/sasl-memcached-now-available\/","og_locale":"ko_KR","og_type":"article","og_title":"SASL Memcached Now Available!","og_description":"Learn the advantages of SASL support in memcached, as well as the detailed mechanics of memcached and SASL authentication for your applications.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/sasl-memcached-now-available\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T18:33:51+00:00","article_modified_time":"2020-10-16T02:00:05+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":"Patrick Galbraith","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Patrick Galbraith","Est. reading time":"12\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/"},"author":{"name":"Patrick Galbraith","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f5f72f2c97ee554b0f43ddd3726ec82c"},"headline":"SASL Memcached Now Available!","datePublished":"2014-12-16T18:33:51+00:00","dateModified":"2020-10-16T02:00:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/"},"wordCount":2307,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#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\/sasl-memcached-now-available\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/","url":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/","name":"SASL Memcached Now Available! - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T18:33:51+00:00","dateModified":"2020-10-16T02:00:05+00:00","description":"Learn the advantages of SASL support in memcached, as well as the detailed mechanics of memcached and SASL authentication for your applications.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/sasl-memcached-now-available\/#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\/sasl-memcached-now-available\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SASL Memcached Now Available!"}]},{"@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\/f5f72f2c97ee554b0f43ddd3726ec82c","name":"\ud328\ud2b8\ub9ad \uac24\ube0c\ub808\uc774\uc2a4","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/6f163bf0bc012232ca7875624e23b1b2","url":"https:\/\/secure.gravatar.com\/avatar\/12ac594c0da897f5fb7bb17d4b6ab93fb913370e6ea82eb8f812c62562d6552f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/12ac594c0da897f5fb7bb17d4b6ab93fb913370e6ea82eb8f812c62562d6552f?s=96&d=mm&r=g","caption":"Patrick Galbraith"},"description":"\ud328\ud2b8\ub9ad \uac24\ube0c\ub808\uc774\uc2a4\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. \uadf8\ub294 R&amp;D, \ud504\ub85c\ud1a0\ud0c0\uc774\ud551, Linux \ubc0f Windows \uc81c\ud488 \ube4c\ub4dc \uc2dc\uc2a4\ud15c \uac1c\ubc1c\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/patrick-galbraith\/"}]}},"authors":[{"term_id":8984,"user_id":40,"is_guest":0,"slug":"patrick-galbraith","display_name":"Patrick Galbraith","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/12ac594c0da897f5fb7bb17d4b6ab93fb913370e6ea82eb8f812c62562d6552f?s=96&d=mm&r=g","first_name":"Patrick","last_name":"Galbraith","user_url":"","author_category":"","description":"\ud328\ud2b8\ub9ad \uac24\ube0c\ub808\uc774\uc2a4\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. \uadf8\ub294 R&amp;D, \ud504\ub85c\ud1a0\ud0c0\uc774\ud551, Linux \ubc0f Windows \uc81c\ud488 \ube4c\ub4dc \uc2dc\uc2a4\ud15c \uac1c\ubc1c\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1773","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\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1773"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1773\/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=1773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1773"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}