{"id":759,"date":"2018-09-19T18:32:59","date_gmt":"2018-09-19T09:32:59","guid":{"rendered":"http:\/\/www.charlezz.com\/?p=759"},"modified":"2018-09-19T20:18:10","modified_gmt":"2018-09-19T11:18:10","slug":"%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%97%90%ec%84%9c-dynamic-proxy-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=759","title":{"rendered":"\uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c Dynamic Proxy \uc0ac\uc6a9\ud558\uae30"},"content":{"rendered":"<h1>Proxy\ub780?<\/h1>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/800px-Proxy_pattern_diagram.svg_.png\" alt=\"\" width=\"800\" height=\"446\" class=\"aligncenter size-full wp-image-765\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/800px-Proxy_pattern_diagram.svg_.png 800w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/800px-Proxy_pattern_diagram.svg_-300x167.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/800px-Proxy_pattern_diagram.svg_-768x428.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>\uc77c\ubc18\uc801\uc73c\ub85c \ub300\ub9ac\uc790\/\ub300\ub9ac\uc778\uc744 \uc758\ubbf8\ud558\uba70, \uc790\ubc14\uc5d0\uc11c\ub294 \ud0c0\uac9f\uc744 \uac10\uc2f8\uc11c \ud0c0\uac9f\uc744 \uc694\uccad\uc744 \ub300\uc2e0 \ubc1b\uc544\uc8fc\ub294 Wrapping Object\ub97c \ub73b\ud569\ub2c8\ub2e4. Proxy \ud328\ud134\uc740 \ub514\uc790\uc778 \ud328\ud134\uc758 \uc77c\uc885\uc73c\ub85c \uc790\ubc14\uc758 Reflect \ud328\ud0a4\uc9c0\uc5d0 \uc788\ub294 Proxy\ub97c \uc774\uc6a9\ud558\uc5ec \uc6d0\ub798 \uac1d\uccb4\uc758 \ubcc0\uacbd \uc5c6\uc774 \uae30\ub2a5\uc744 \ud2b9\uc815 \ubc29\uc2dd\uc73c\ub85c \uc81c\uc5b4 \ud558\ub294 \uad6c\uc870\ub97c \uc81c\uc548\ud569\ub2c8\ub2e4.<\/p>\n<p>Reflection(\ub9ac\ud50c\ub809\uc158)\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\ub824\uba74 \uc774\uc804 <a href=\"http:\/\/www.charlezz.com\/?p=756\">\ud3ec\uc2a4\ud2b8<\/a>\ub97c \ucc38\uace0\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<h3>\ud504\ub85d\uc2dc \ud328\ud134\uc758 \uc7a5\uc810<\/h3>\n<ul>\n<li>\ubaa9\ud45c \uae30\ub2a5 \uc218\ud589 \uc804\/\ud6c4\uc5d0 \ucd94\uac00\uc801\uc778 \uae30\ub2a5 \uc218\ud589(\ub85c\uae45, \ud2b8\ub79c\uc7ad\uc158, \ubcf4\uc548 \ub4f1)<\/li>\n<li>\ubaa9\ud45c \uae30\ub2a5 \uc218\ud589 \uacfc\uc815\uc5d0\uc11c \ubc1c\uc0dd\ud55c \uc608\uc678\uc5d0 \ub300\ud55c \ucc98\ub9ac\/\uc870\uc791<\/li>\n<li>\ud2b9\ubcc4\ud55c \uc870\uac74\uc5d0 \ubd80\ud569\ub418\ub294 \uacbd\uc6b0 \ubaa9\ud45c \uae30\ub2a5 \uc218\ud589 \ubc29\uc9c0<\/li>\n<li>\ubaa9\ud45c \uae30\ub2a5 \uc218\ud589 \uc2dc\uc810 \ubcc0\uacbd<\/li>\n<\/ul>\n<h3>AOP( Aspect-Oriented Programming)\ub780?<\/h3>\n<p>AOP\ub294 \ud55c\uad6d\ub9d0\ub85c \uad00\uc810(\uad00\uc2ec) \uc9c0\ud5a5 \ud504\ub85c\uadf8\ub798\ubc0d\uc785\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\uc758 \uad6c\uc870\ub97c \ubc14\ub77c\ubcf4\ub294 \uad00\uc810\uc744 \ubc14\uafb8\uc5b4 \ud504\ub85c\uadf8\ub798\ubc0d\ud569\ub2c8\ub2e4.<\/p>\n<p>\uae30\ub2a5\uc744 \ud575\uc2ec \ube44\uc9c0\ub2c8\uc2a4 \ub85c\uc9c1\uacfc \uacf5\ud1b5 \ubaa8\ub4c8\ub85c \uad6c\ubd84\ud558\uace0, \ud575\uc2ec \ub85c\uc9c1\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce58\uc9c0 \uc54a\uace0 \uadf8 \uc0ac\uc774\uc0ac\uc774\uc5d0 \uacf5\ud1b5 \ubaa8\ub4c8\uc744 \ud6a8\uacfc\uc801\uc73c\ub85c \uc798 \ub07c\uc6cc\ub123\ub3c4\ub85d \ud558\ub294 \uac1c\ubc1c \ubc29\ubc95\ub860\uc785\ub2c8\ub2e4<\/p>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc804\uccb4\uc5d0 \uac78\uccd0 \uc0ac\uc6a9\ub418\ub294 \uae30\ub2a5\uc744 \uc7ac\uc0ac\uc6a9\ud558\ub3c4\ub85d \ud558\uba70,\u00a0\ud504\ub85c\uc81d\ud2b8\uc758 \uad6c\uc870\ub97c \ubc14\ub77c\ubcf4\ub294 \uad00\uc810\uc744 \ubc14\uafb8\uc5b4 \ud504\ub85c\uadf8\ub798\ubc0d\ud55c\ub2e4\ub294 \uc810 \uc785\ub2c8\ub2e4.<\/p>\n<p>Proxy\ub97c \uc774\uc6a9\ud558\uc5ec AOP\ub97c \uad6c\ud604\ud574 \ubcf4\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\uc790\ubc14\uc5d0\uc11c\uc758 Proxy \ud074\ub798\uc2a4<\/h3>\n<p>java.lang.reflect.Proxy\ud074\ub798\uc2a4\ub294 \ub3d9\uc801 \ud504\ub85d\uc2dc \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uae30 \uc704\ud55c \uc815\uc801 \uba54\uc18c\ub4dc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">public static Object newProxyInstance(\r\n    ClassLoader loader,\r\n    Class&lt;?&gt;[] interfaces, \r\n    InvocationHandler h\r\n)<\/pre>\n<ul>\n<li>loader : \uc774 \ud074\ub798\uc2a4 \ub85c\ub354\ub294 \ub3d9\uc801 \ud504\ub85d\uc2dc \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4. \ud074\ub798\uc2a4 \ub85c\ub354\ub294 \ub3d9\uc801 \ud504\ub85d\uc2dc\uac00 \uc0dd\uc131\ub418\ub294 \ud074\ub798\uc2a4 \ub610\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \uc758\ud574\uc11c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608) MyClass.class.getClassLoader()<\/li>\n<li>interfaces : \ub450 \ubc88\uc9f8 \ud30c\ub77c\ubbf8\ud130\ub294 \ub3d9\uc801 \ud504\ub85d\uc2dc \ud074\ub798\uc2a4\uc5d0 \uc758\ud574 \uad6c\ud604 \ub420 \ubaa8\ub4e0 \uc778\ud130\ud398\uc774\uc2a4\uc758 \ubc30\uc5f4\uc785\ub2c8\ub2e4.<\/li>\n<li>h(andler) : InvocationHandler\ub97c \uad6c\ud604\ud558\uace0 \uc788\ub294 \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h3>\uc790\ubc14\uc5d0\uc11c\uc758 InvocationHandler<\/h3>\n<p>InvocationHandler\ub294 \uc790\ubc14 Reflect \ud328\ud0a4\uc9c0\uc5d0 \ud3ec\ud568\ub41c \uc778\ud130\ud398\uc774\uc2a4\uc911 \ud558\ub098\ub85c \uc0ac\uc6a9\uc790\uc5d0 \uc758\ud574 \uad6c\ud604\ub418\uc5b4, \ub3d9\uc801 \ud504\ub85d\uc2dc \ud074\ub798\uc2a4\uc758 \uba54\uc18c\ub4dc\ub97c invoke(\ud638\ucd9c) \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \">Object invoke(Object proxy, Method m, Object[] args)<\/pre>\n<ul>\n<li>proxy : \uba54\uc18c\ub4dc\uac00 \ud638\ucd9c\ub420 \ud504\ub85d\uc2dc \uc778\uc2a4\ud134\uc2a4\uc785\ub2c8\ub2e4.<\/li>\n<li>m(ethod) :\u00a0\ud504\ub85d\uc2dc \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \ud638\ucd9c\ub418\ub294 \uc778\ud130\ud398\uc774\uc2a4 \uba54\uc18c\ub4dc\uc5d0 \ud574\ub2f9\ud569\ub2c8\ub2e4.<\/li>\n<li>args : \uba54\uc18c\ub4dc \ud638\ucd9c\uc5d0\uc11c \uc804\ub2ec\ub41c \uc778\uc790\ub4e4\uc744 \ud3ec\ud568\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h1>\uac04\ub2e8\ud55c Dynamic Proxy \uc548\ub4dc\ub85c\uc774\ub4dc \uc608\uc81c\u00a0<\/h1>\n<pre class=\"lang:java decode:true\">public class MainActivity extends AppCompatActivity{\r\n\r\n    public static final String TAG = MainActivity.class.getSimpleName();\r\n    @Override\r\n    protected void onCreate(@Nullable Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        Multiplier multiplier = new Multiplier2x();\r\n        Multiplier multiplierProxy = (Multiplier) Proxy.newProxyInstance(getClassLoader(), new Class[]{Multiplier.class}, new MyProxyHandler(multiplier));\r\n        int result = multiplierProxy.multiply(3);\r\n        Log.e(TAG,\"result = \"+result);\r\n    }\r\n}<\/pre>\n<pre class=\"lang:java decode:true\">public interface Multiplier {\r\n    int multiply(int value);\r\n}<\/pre>\n<pre class=\"lang:java decode:true\">public class Multiplier2x implements Multiplier {\r\n    @Override\r\n    public int multiply(int value) {\r\n        return value * 2;\r\n    }\r\n}\r\n<\/pre>\n<p><em>Note:\uc548\ub4dc\ub85c\uc774\ub4dc \ud504\ub808\uc784\uc6cc\ud06c\uac00 \ud544\uc694\ud55c \uc608\uc81c\ub294 \uc544\ub2c8\uc9c0\ub9cc \uc548\ub4dc\ub85c\uc774\ub4dc \ud504\ub85c\uc81d\ud2b8\ub85c \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4.<\/em><\/p>\n<p>\uc815\uc218\ub97c \ud558\ub098 \uc778\uc790\ub85c \uc785\ub825 \ubc1b\uc544 multiply(\uacf1\uc148)\ub97c \ud558\ub294 \uac04\ub2e8\ud55c \uc608\uc81c\uc785\ub2c8\ub2e4.<br \/>\nMultiplier\uc778\ud130\ud398\uc774\uc2a4\ub97c \uc815\uc758\ud558\uc600\uace0 Multipler2x\uac00 \uc774\ub97c \uad6c\ud604\ud558\uc5ec \uc785\ub825\ub41c \uac12\uc758 2\ubc30\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc790\uc138\ud788 \ubcf4\uc2dc\uba74 Multiplier2x\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \ub9cc\ub4e4\uc5c8\uc9c0\ub9cc multiply() \ud638\ucd9c\uc740 \ud504\ub85d\uc2dc\ub97c \ud1b5\ud574\uc11c \ud558\uace0 \uc788\ub294\uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">public class MyProxyHandler implements InvocationHandler {\r\n    public static final String TAG = MyProxyHandler.class.getSimpleName();\r\n    private Object target;\r\n    public MyProxyHandler(Object target){\r\n        this.target = target;\r\n    }\r\n    @Override\r\n    public Object invoke(Object o, Method method, Object[] objects) throws Throwable {\r\n        Log.e(TAG,\"\uba54\uc18c\ub4dc invoke \ud558\uae30 \uc804\");\r\n        int result = (int) method.invoke(target, objects);\r\n        Log.e(TAG,\"\uba54\uc18c\ub4dc invoke \ud55c \ud6c4\");\r\n        return result;\r\n    }\r\n}<\/pre>\n<p>MyProxyHandler\ub294 InvocationHandler\ub97c \uad6c\ud604\ud55c \ud074\ub798\uc2a4\ub85c \ud0c0\uac9f \uc624\ube0c\uc81d\ud2b8\uc758 \uc774\ubca4\ud2b8\ub97c \ubc1b\uc544 \ub300\uc2e0 invoke() \ud574\uc90d\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc640 \uac19\uc774 \uc2e4\uc81c \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd\ud558\uae30 \uc774\uc804\/\uc774\ud6c4\uc5d0 \ud2b9\uc815 \uc561\uc158\uc744 InvocationHandler\ub97c \ud1b5\ud574 \ub07c\uc6cc\ub123\uc744\uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud2b9\uc815\uc561\uc158\uc740 \uc11c\ub450\uc5d0 \ub9d0\ud588\ub4ef\uc774 \ub85c\uae45\uc774\ub098\u00a0 \ud2b8\ub79c\uc7ad\uc158, Validation \ub4f1\uc774 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h1>\uc0ac\uc6a9\uc790\uc758 \uc774\uc6a9 \ud328\ud134 \ubd84\uc11d \uc608\uc81c<\/h1>\n<h3><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537348593-576x1024.png\" alt=\"\" width=\"576\" height=\"1024\" class=\"alignleft wp-image-764 size-large\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537348593-576x1024.png 576w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537348593-169x300.png 169w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537348593-768x1365.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537348593.png 1080w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><\/h3>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\ud504\ub85d\uc2dc\uc758 \uc0ac\uc6a9 \uc774\ud574\ub97c \ub3d5\uae30\uc704\ud574\ub9cc\ub4e0 \uc608\uc81c\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc0ac\uc6a9\uc790\ub4e4\uc758 \uc571 \uc774\uc6a9 \ud328\ud134\uc744 \uc54c\uc544\ubcf4\uace0\uc790 \uac04\ub2e8\ud788 \ub9ac\uc2f8\uc774\ud074\ub7ec\ubdf0\ub97c \uc774\uc6a9\ud558\uc5ec \ud654\uba74\uc744 \uad6c\uc131\ud558\uc600\uace0, \uc5b4\ub5a4 \uc544\uc774\ud15c\uc744 \ud074\ub9ad\ud558\uc600\uc744 \ub54c \ud504\ub85d\uc2dc\ub97c \ud1b5\ud574 \uc9c4\uc785\uc810\uacfc \uc720\uc800\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \uc11c\ubc84\ub85c \uc804\uc1a1\ud558\ub294 \ubaa8\uc758 \uc608\uc81c\uc785\ub2c8\ub2e4.<\/p>\n<p>Google Analytics\ub4f1\uacfc \ud568\uaed8 \uc0ac\uc6a9 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \">public class MainInvocationHandler implements InvocationHandler {\r\n    public static final String TAG = MainInvocationHandler.class.getSimpleName();\r\n\r\n    private Object target;\r\n    public MainInvocationHandler(Object object){\r\n        target =object;\r\n    }\r\n\r\n    @Override\r\n    public Object invoke(Object o, Method method, Object[] objects) throws Throwable {\r\n        sendPointToEntryToServer();\r\n        Object result = method.invoke(target, objects);\r\n\r\n        return result;\r\n    }\r\n    private void sendPointToEntryToServer(){\r\n        \/\/ TODO \uc9c4\uc785\uc810 \ud074\ub9ad\uc815\ubcf4\ub97c \uc11c\ubc84\ub85c \uc804\uc1a1\r\n    }\r\n}\r\n<\/pre>\n<h1>Conclusion<\/h1>\n<p>AOP\ub97c \uc704\ud55c Proxy\ud328\ud134\uc740 \ub300\ud45c\uc801\uc73c\ub85c \uc11c\ubc84\ucabd \uc2a4\ud504\ub9c1 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \uae30\ubcf8\uc774 \ub418\ub294 \uac1c\ub150\uc774\uba70, \ud604\ub300 \ud504\ub808\uc784\uc6cc\ud06c\uc5d0\uc11c \ub9e4\uc6b0 \uc911\uc694\ud55c \uc5ed\ud560\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a href=\"http:\/\/www.charlezz.com\/?p=428\">Dagger2<\/a>, <a href=\"http:\/\/www.charlezz.com\/?p=730\">Koin<\/a>\uacfc \uac19\uc740 Dependency Injection \ud504\ub808\uc784\uc6cc\ud06c\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud55c\ub2e4\uba74 \ubaa8\ub4c8\ud654\ub97c \ud1b5\ud55c \uacf5\ud1b5\ub41c \uae30\ub2a5\uc758 \uc7ac\uc0ac\uc6a9\uc131 \uc99d\uac00\ub85c \uc778\ud574 \ud070 \ud6a8\uacfc\ub97c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\ud574\uac00 \uc798 \uc548\ub418\ub354\ub77c\ub3c4 \uae30\uc874 \uc18c\uc2a4\ub97c \ud06c\uac8c \uc218\uc815\ud558\uc9c0 \uc54a\uace0 \uac1d\uccb4\uc758 \ud589\ub3d9\uc744 \ub2e4\uc591\ud55c \ubc29\uc2dd\uc73c\ub85c \uc81c\uc5b4 \ud560 \uc218 \uc788\ub2e4\ub294 \uc810\ub9cc \uae30\uc5b5\ud558\uc2dc\uba74 \ub420 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ubcf8\ubb38\uc758 \uc608\uc81c\ub294 <a href=\"https:\/\/github.com\/Charlezz\/ReflectionTest\">github<\/a>\uc5d0\uc11c \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Proxy\ub780? \uc77c\ubc18\uc801\uc73c\ub85c \ub300\ub9ac\uc790\/\ub300\ub9ac\uc778\uc744 \uc758\ubbf8\ud558\uba70, \uc790\ubc14\uc5d0\uc11c\ub294 \ud0c0\uac9f\uc744 \uac10\uc2f8\uc11c \ud0c0\uac9f\uc744 \uc694\uccad\uc744 \ub300\uc2e0 \ubc1b\uc544\uc8fc\ub294 Wrapping Object\ub97c \ub73b\ud569\ub2c8\ub2e4. Proxy \ud328\ud134\uc740 \ub514\uc790\uc778 \ud328\ud134\uc758 \uc77c\uc885\uc73c\ub85c \uc790\ubc14\uc758 Reflect \ud328\ud0a4\uc9c0\uc5d0 \uc788\ub294 Proxy\ub97c \uc774\uc6a9\ud558\uc5ec \uc6d0\ub798 \uac1d\uccb4\uc758 \ubcc0\uacbd \uc5c6\uc774 \uae30\ub2a5\uc744 \ud2b9\uc815 \ubc29\uc2dd\uc73c\ub85c \uc81c\uc5b4 \ud558\ub294 \uad6c\uc870\ub97c \uc81c\uc548\ud569\ub2c8\ub2e4. Reflection(\ub9ac\ud50c\ub809\uc158)\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\ub824\uba74 \uc774\uc804 \ud3ec\uc2a4\ud2b8\ub97c \ucc38\uace0\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. \ud504\ub85d\uc2dc \ud328\ud134\uc758 \uc7a5\uc810 \ubaa9\ud45c \uae30\ub2a5 \uc218\ud589 \uc804\/\ud6c4\uc5d0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[25],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/759"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=759"}],"version-history":[{"count":2,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/759\/revisions"}],"predecessor-version":[{"id":767,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/759\/revisions\/767"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}