{"id":1710,"date":"2017-10-02T19:27:13","date_gmt":"2017-10-02T10:27:13","guid":{"rendered":"http:\/\/now0930.tk\/wordpress\/?p=1710"},"modified":"2018-01-16T18:30:23","modified_gmt":"2018-01-16T09:30:23","slug":"%ea%b0%9c%ec%9d%b8%ed%99%94-%ec%a0%84%ec%9e%90-%ec%95%a1%ec%9e%90-%eb%a7%8c%eb%93%a4%ea%b8%b0with-%ec%82%bc%ec%84%b1-%eb%85%b8%ed%8a%b81","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/%ea%b0%9c%ec%9d%b8%ed%99%94-%ec%a0%84%ec%9e%90-%ec%95%a1%ec%9e%90-%eb%a7%8c%eb%93%a4%ea%b8%b0with-%ec%82%bc%ec%84%b1-%eb%85%b8%ed%8a%b81\/","title":{"rendered":"\uac1c\uc778 \uc804\uc790 \uc561\uc790 \ub9cc\ub4e4\uae30(with \uc0bc\uc131 \ub178\ud2b81)"},"content":{"rendered":"<h2>\uc804\uc790 \uc561\uc790 \ub9cc\ub4e4\uae30.<\/h2>\n<p>\uad6c\uae00 \ud50c\ub808\uc774\uc5d0 \uc804\uc790 \uc561\uc790\ub85c \ucc3e\uc544\ubcf4\uba74 &#8220;\ud6a8\ub3c4 \uc561\uc790&#8221;\uac00 \uc788\ub2e4. \uc798 \ub9cc\ub4e4\uc5b4\uc84c\uc9c0\ub9cc, \uc571\uc774 \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc811\uadfc, \uc800\uc7a5\ub41c \uc0ac\uc9c4\uc744 \ubcf4\uc5ec\uc900\ub2e4.<\/p>\n<p>\ub098\ub294 \ud074\ub77c\uc6b0\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc544, \uc774 \uc571\uc744 \uadf8\ub9ac \ub9e4\ub825\uc801\uc73c\ub85c \ubcf4\uc9c0 \uc54a\uc558\ub2e4. \uc81c\uc791\ub41c \uc18c\uc2a4 \ucf54\ub4dc \ub610\ud55c, \uc81c\uc791\uc790\uac00 \uacf5\uac1c\ud558\uc9c0 \uc54a\uc558\ub2e4. \uadf8\ub798\uc11c \ud5c8\uc811\ud558\ub098\ub9c8 \ud55c\ubc88 \ub9cc\ub4e4\uc5b4 \ubcf4\uc558\ub2e4.<\/p>\n<p>\ub0b4\uac00 \uac1c\uc778 \uc11c\ubc84\ub97c \uc6b4\uc6a9\ud558\uace0 \uc788\uace0, \uc0dd\uac01\ub0a0 \ub54c(\ube44\uc815\uae30\uc801) \uc0ac\uc9c4\uc744 \uc5c5\ub85c\ub4dc\ud558\uace0 \uc0ac\uc9c4 \uacbd\ub85c\ub97c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc5c5\ub370\uc774\ud2b8 \ud55c\ub2e4. \uc774 \uc0ac\uc9c4\ub4e4\uc774 \uc6f9\uc73c\ub85c \uc811\uadfc \uac00\ub2a5\ud558\ub098, \ub531\ud788 \ubcf4\ub294 \uc0ac\ub78c\uc774 \uc5c6\uc5b4 \uc800\uc7a5 \uacf5\uac04\ub9cc \ucd95\ub0b4\uace0 \uc788\ub2e4. \ubc84\ub9ac\ub294 \ud734\ub300\ud3f0\uc744 \ud558\ub098 \uc0ac\uc6a9\ud558\uc5ec, \uc218\uba85\uc774 \ub2e4 \ud560 \ub54c\uae4c\uc9c0 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ubcf4\uc5ec \uc8fc\ub294 \uac1c\ub150\uc744 \uc0dd\uac01\ud588\ub2e4.<\/p>\n<p>\ucc98\uc74c\uc5d4 \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c DB\uc5d0 \uc811\uadfc\uc744 \uc5b4\ub5bb\uac8c \ud560\uc9c0 \uc0dd\uac01\ud588\ub294\ub370, \ub354 \uc26c\uc6b4 \ubc29\ubc95\uc774 \uc0dd\uac01\ub0ac\ub2e4. \uc11c\ubc84\uc5d0\uc11c \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc791\uc131\ud558\uc5ec \uc6d0\ud558\ub294 \ubc14\ub97c \uc2e4\ud589\ud558\uba74 \ub41c\ub2e4! \uc774\ub7f0 \uc811\uadfc\uc774\uba74, \uc548\ub4dc\ub85c\uc774\ub4dc\uac00 \ud560 \uc77c\uc774 \uc5c6\ub2e4. \uc544\ub798\uc640 \uac19\uc774 \ud06c\uac8c \uc138 \ubd80\ubd84\uc73c\ub85c \ub098\ub204\uc5c8\ub2e4.<\/p>\n<h5>1. \uc11c\ubc84 \uae30\ub2a5(Bash)<\/h5>\n<ul>\n<li>\ud558\ub8e8\uc5d0 \ud55c\ubc88 \ucffc\ub9ac\uac00 \ud30c\uc77c\uc758 \uc704\uce58\ub97c \uc77c\uc815 \uac2f\uc218 \uc774\ud558\ub85c \ucc3e\uc74c.<\/li>\n<li>\uc9c0\uc815\ub41c \uc2dc\uac01\uc5d0 \ud2b9\uc815 \ub514\ub809\ud1a0\ub9ac \uc0ac\uc9c4\uc744 \ubaa8\ub450 \uc9c0\uc6c0.<\/li>\n<li>\ucc3e\uc740 \ud30c\uc77c\uc744 \ud2b9\uc815 \ub514\ub809\ud1a0\ub9ac\uc5d0 \ubcf5\uc0ac.<\/li>\n<li>\ubcf5\uc0ac \ud6c4, \uac15\uc81c\ub85c updated(\ub9c8\ucee4) \ud30c\uc77c\uc744 \ub9cc\ub4e6.<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\" title=\"Server_Bash\">#!\/bin\/bash\nsource ~\/.my.cnf\nmytemp=$(mktemp);\nmytemp2=$(mktemp);\nfilelist=$(mktemp);\nmysql -D myHome --user=\"$user\" --password=\"$password\" -e \"select \uacbd\ub85c from picture where \uacbd\ub85c like '%jpg' order by rand() limit 40\" &gt; .\/Filelist.txt\n\n\n#1\ubc88 \ud589\uc744 \uc0ad\uc81c..\nsed '1d' .\/Filelist.txt &gt; $mytemp\n#sed -i -e 's\/^\/\/var\/www\/html\/imageOtherPar\\\/\/g' $mytemp &gt; $mytemp2\n#cat $mytemp\nsed 's\/^\/\\\/var\\\/www\\\/html\/g' $mytemp &gt; $mytemp2\n#cat $mytemp2\n\n#~\/tempPhoto\uc758 \ud30c\uc77c\uc744 \uc0ad\uc81c..\nrm \/home\/now0930\/tempPhoto\/*\n\n#\ud55c\uc904\uc529 \ucc98\ub9ac..\nwhile read fileName\ndo\n    echo $fileName\n    cp $fileName \/home\/now0930\/tempPhoto\n    echo $fileName+\"\ubcf5\uc0ac\ub428\"\ndone &lt; $mytemp2\n\n\n\n#~\/tempPhoto\uc5d0 marker\ub97c \ub9cc\ub4e6..\ntouch \/home\/now0930\/tempPhoto\/updated\n\n\n#java \ud30c\uc77c\uc744 \uc2e4\ud589..\njava -jar \/home\/now0930\/scriptPhotosender\/PhotoSender.jar\n<\/pre>\n<h5>2. \uc11c\ubc84 \uae30\ub2a5(Java)<\/h5>\n<ul>\n<li>bash\uac00 \uc18c\ucf13\uc744 \uc81c\uc5b4\ud558\uba74 \uc88b\uc558\uaca0\uc73c\ub098, \ubabb\ucc3e\uc558\ub2e4.<\/li>\n<li>bash\uac00 \uc9c0\uc815\ub41c \uc2dc\uac01\uc5d0 java\ub97c \uc2e4\ud589.<\/li>\n<li>Java\uac00 \uc18c\ucf13 \uc11c\ubc84\ub85c \uc5f4\uc5b4 Listen.<\/li>\n<li>\ud2b9\uc815 \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c updated \ud30c\uc77c\uc744 \ucc3e\uc74c.<\/li>\n<li>updated\uac00 \uc788\uc73c\uba74, \ud30c\uc77c\uc774 \uc815\ud655\ud558\uac8c \uc5c5\ub370\uc774\ud2b8 \ub418\uc5c8\ub2e4\uace0 \ud310\ub2e8\ud558\uace0, \uc811\uc18d\ud560 \uc548\ub4dc\ub85c\uc774\ub4dc\ub85c \ubcf4\ub0bc \uc900\ube44.<\/li>\n<li>updated\uac00 \uc5c6\uc73c\uba74, \ud574\ub2f9 \ud504\ub85c\uc138\uc2a4 \uc885\ub8cc.<\/li>\n<li>socket\uc774 accept\uac00 \ub418\uba74, jpg \ud30c\uc77c\uc744 \uc804\uc1a1.<\/li>\n<li>\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uba74, updated \ud30c\uc77c \uc0ad\uc81c.<\/li>\n<li>\ud504\ub85c\uc138\uc2a4 \uc885\ub8cc, \ub2e4\uc74c \ud134 \ub300\uae30.<\/li>\n<\/ul>\n<pre class=\"lang:java decode:true \" title=\"\uc11c\ubc84_java\">package photoSender;\n\nimport java.io.BufferedInputStream;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\nimport java.io.OutputStream;\nimport java.net.ServerSocket;\nimport java.net.Socket;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.concurrent.TimeUnit;\n\n\n\npublic class Main {\n    public static void main(String[] args){\n                \n        ServerSocket serverSocket = null;\n        final String FILE_TO_SEND = \"\/home\/now0930\/tempPhoto\/1234.jpg\";\n        byte[] myFileByteArray;\n        FileInputStream fis;\n        BufferedInputStream bis;\n        File myFileToSend;\n        File myPhotoDirectory;\n        File[] myFiles;\n        int i=0;\n        \n        boolean myDirectoryWasUpdated=false;\n\n        try{\n            serverSocket = new ServerSocket(9998);\n            System.out.println(getTime()+\"\uc11c\ubc84\uac00 \uc900\ube44\ub418\uc5c8\uc74c.\");\n\n        }\/\/try\n        catch(IOException e){\n            e.printStackTrace();\n        }\/\/catch\n\n        \/\/myFileToSend = new File(FILE_TO_SEND);\n        \/\/myFileByteArray = new byte[(int)myFileToSend.length()];\n\n            while(true){\n                \/\/\uc11c\ubc84\uc5d0\uc11c \uc2e4\ud589 \ubc29\ubc95..\n                \/\/script \uc2e4\ud589 \ubd84.\n                \/\/\uc11c\ubc84\uac00 \ud2b9\uc815 \ub514\ub809\ud1a0\ub9ac\uc5d0 \ud2b9\uc815 \uc2dc\uac01\uc5d0 jpg file\uc744 \uad50\uccb4, \uae30\uc874 \ud30c\uc77c\uc744 \uc0ad\uc81c \n                \/\/\uc885\ub8cc \ud6c4, updated\ub780 \ud30c\uc77c\uc744 \ub9cc\ub4e6.\n                \/\/\ud2b9\uc815 \uc2dc\uac01\uc5d0 cron\uc774 \uc2e4\ud589\n                \n                \/\/java \uc2e4\ud589 \ubd84..\n                \/\/\ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c updated\ub97c \ucc3e\uc74c..\n                \/\/updated\ub780 \ud30c\uc77c\uc744 \ucc3e\uc73c\uba74,\n                \/\/socket.accept()\ub85c \uc77c\uc815\uc2dc\uac04 \uae30\ub2e4\ub9b0 \ud6c4,\n                \/\/\uc751\ub2f5.\n                \/\/\ud30c\uc77c 1\ud68c \uc804\uc1a1\ud6c4 process \uc885\ub8cc.\n                \/\/updated \ud30c\uc77c \uc0ad\uc81c\n                \n                \/\/updated \ud30c\uc77c\uc774 \uc5c6\uc73c\uba74\n                \/\/\ud504\ub85c\uc138\uc2a4 \uc885\ub8cc..\n\n                \n                \/\/file \uc785\ucd9c\ub825..\n                \/\/\ub514\ub809\ud1a0\ub9ac\uc758 \ud30c\uc77c\uc744 \ub9ac\uc2a4\ud2b8\ub85c \ub9cc\ub4dc\ub294 \ubd80\ubd84.\n                \/\/directory\uc758 \ud30c\uc77c \ucc3e\uae30\n\n                myPhotoDirectory = new File(\"\/home\/now0930\/tempPhoto\");\n                myFiles = myPhotoDirectory.listFiles();\n                System.out.println(\"\ucd9c\ub825\"+myFiles.length);\n\n                myDirectoryWasUpdated=false;\n                \/\/updated \ud30c\uc77c \ud655\uc778..\n                for(int j=0;j&lt; myFiles.length;j++ ){\n                    if(myFiles[j].getName().equals(\"updated\")){\n                        myDirectoryWasUpdated=true;\n                        System.out.println(\"\ud30c\uc77c\uc774 \uc5c5\ub370\uc774\ud2b8 \ub418\uc5c8\uc74c\");\n                        \n                        break;\n                    }\n                    else\n                        myDirectoryWasUpdated=false;\n                }\n                \n                \/\/\ud30c\uc77c\uc774 \uc5c5\ub370\uc774\ud2b8 \ub418\uc9c0 \uc54a\uc73c\uba74, while\ub97c \ube60\uc838 \ub098\uac10..\n                if(myDirectoryWasUpdated==false)\n                    break;\n\n                \n                \n                if(i&gt;=myFiles.length){\n                    \/\/\ubaa8\ub4e0 \ud30c\uc77c\uc774 \uc804\uc1a1\ub418\uc5c8\uc74c..\n                    \/\/\uc77c\uc815 \uc2dc\uac04\ub3d9\uc548 \ub300\uae30..\n                    \/\/\uc77c\uc815 \uc2dc\uac04 \uc0ac\uc774\uc5d0 bash\uac00 \ud30c\uc77c\uc744 \uc0c8\ub86d\uac8c \ubcc0\uacbd..\n                    \/\/\uc5ec\uae30\uc5d0\uc11c \ub2e4\uc2dc \uc77d\uc5b4 \ub4e4\uc5ec \ucc98\uc74c\ubd80\ud130 \ub2e4\uc2dc \uc2dc\uc791..\n                    myFiles = myPhotoDirectory.listFiles();\n                    i=0;\n                    try{\n                        TimeUnit.SECONDS.sleep(100);\n                    }\n                    catch(Exception e){\n                        e.printStackTrace();\n                    }\n                    \n                    \n                }\n                \n                \n                \n                do{\n                    \n                    if(i&gt;=myFiles.length)\n                        myFileByteArray = null;\n                    else\n                        myFileByteArray = new byte[(int)myFiles[i].length()];\n                    \/*\n                    try{\n                        if(myFileToSend.exists() &amp;&amp; myFileToSend.isDirectory())\n                            ;\n                    }\/\/try\n                    catch(NullPointerException e){\n                        e.printStackTrace();\n                    }\/\/catch\n                    *\/\n                    \/*\n                    try{\n                        if(myFiles[i].exists() &amp;&amp; !myFiles[i].isDirectory())\n                            ;\n                    }\/\/try\n                    catch(NullPointerException e){\n                        e.printStackTrace();\n                    }\/\/catch\n                    \n                    catch(ArrayIndexOutOfBoundsException e){\n                        e.printStackTrace();\n                    }\n                    *\/\n                \n                    \n    \/\/              for(int i=0; i&lt;myFiles.length; i++)\n                    \n                    System.out.println(getTime()+\"\uc11c\ubc84\uac00 \ub300\uae30\uc911\");\n                        try{\n\n                            Socket socket = serverSocket.accept();\n                            System.out.println(getTime()+socket.getInetAddress()+\"\ub85c\ubd80\ud130 \uc5f0\uacb0\uc774 \ub4e4\uc5b4\uc62e\");\n                            \/\/fis = new FileInputStream(myFileToSend);\n                            \/\/myFiles.length \uac00 0\uc77c \uacbd\uc6b0, myFiles[i]\uac00 arrayOutOfBoundsException\uc774 \uc788\uc74c..\n                            \n                            if(myFiles.length !=0 &amp;&amp; myFiles[i].exists()&amp;&amp;\n                                    \/\/updated\ub780 \ud30c\uc77c\uc744 \uc548\ubcf4\ub0b4\uac8c \uc81c\uc678..\n                                    myFiles[i].getName()!=\"updated\" &amp;&amp;\n                                    \/\/\ud655\uc7a5\uc790\uac00 jpg\ub9cc \ubcf4\ub0c4..\n                                    myFiles[i].getName().matches(\".*\\\\.jpg\")){\n\n                                fis = new FileInputStream(myFiles[i].getPath());\n                                bis = new BufferedInputStream(fis);\n                                \/\/bis.read(myFileByteArray,0,myFileByteArray.length);\n                                bis.read(myFileByteArray,0,myFileByteArray.length);\n                                OutputStream out = socket.getOutputStream();\n                                out.write(myFileByteArray,0,myFileByteArray.length);\n                                System.out.println(getTime()+myFiles[i].getPath()+\"\ub97c \ubcf4\ub0c5\ub2c8\ub2e4.\");\n                                out.flush();\n                            }   \/\/if\n                            socket.close();\n\n                            \/\/TimeUnit.SECONDS.sleep(5);\n                        }\/\/try\n                        catch(IOException e){\n                            e.printStackTrace();\n                        }\/\/catch\n                        \n                        \n                        catch(Exception e){\n                            e.printStackTrace();\n\n                        }\/\/catch\n                        \n                    \/\/\ub2e4\uc74c \ud30c\uc77c\ub85c \uc774\ub3d9..\n                    i++;\n                    System.out.println(\"\ucd9c\ub825\"+myFiles.length);\n                }while(i&lt;myFiles.length);\n                \n            \/\/\ud30c\uc77c \uc0ad\uc81c \ud655\uc778..\n            \/\/j\uac12\uc744 \uae30\uc5b5\ud558\uace0 \uc788\ub2e4, \ub098\uc911\uc5d0 \uc0ad\uc81c..\n            for(int j=0;j&lt; myFiles.length;j++ ){\n                if(myFiles[j].getName().equals(\"updated\")){\n                    myDirectoryWasUpdated=false;\n                    myFiles[j].delete();\n                    System.out.println(\"\ud30c\uc77c\uc774 \uc0ad\uc81c\ub418\uc5c8\uc74c\");\n                    break;\n                }\/\/if\n            }\/\/for\n            \n                \n            }\/\/ while\n\n            \n\n        }\/\/main\n\n    private static String getTime() {\n        \/\/ TODO Auto-generated method stub\n        SimpleDateFormat f = new SimpleDateFormat(\"[hh:mm:ss]\");\n        return f.format(new Date());\n    }\/\/getTime\n\n}<\/pre>\n<h5>3. \uc548\ub4dc\ub85c\uc774\ub4dc<\/h5>\n<ul>\n<li>Thread\ub97c \ub9cc\ub4e4\uc5b4, \uc11c\ubc84\uc5d0 \uc9c0\uc18d\uc801\uc73c\ub85c \uc811\uc18d.<\/li>\n<li>\ud604\uc7ac \uc2dc\uac01 \ud655\uc778 \ud6c4, \uc0c8\ubcbd 1\uc2dc\uc5d0 \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0 \uc800\uc7a5\ub41c \uc0ac\uc9c4\uc744 \ubaa8\ub450 \uc9c0\uc6c0.<\/li>\n<li>\uc784\uc758\uc758 \uc774\ub984\uc73c\ub85c \ucd5c\ub300 50\uac1c \ud30c\uc77c \uc218\uc2e0.<\/li>\n<li>\uc5f0\uacb0\uc774 \ub04a\uae30\uba74, \ub2e4\uc2dc 0\ubc88\ubd80\ud130 \ubc1b\ub3c4\ub85d \ubc88\ud638 \uc7ac\uc124\uc815.<\/li>\n<li>\ud0c0\uc774\uba38\uac00 \uc5ec\ub7ec \uac1c \uc0ac\uc9c4\uc744 \ub3cc\uc544\uac00\uba70 \ubcf4\uc5ec \uc90c.<\/li>\n<li>\ud0c0\uc774\uba381: \ud734\ub300\ud3f0\uc758 \uc0ac\uc9c4 \uc0ad\uc81c.<\/li>\n<li>\ud0c0\uc774\uba382: \ud0c0\uc774\uba381\uc774 \uc8fd\uc73c\uba74, \uc77c\uc815 \uc2dc\uac04 \ub4a4 \uc2e4\ud589, \uc11c\ubc84\uc5d0\uc11c \ud30c\uc77c\uc744 \uc218\uc2e0<\/li>\n<li>\ud0c0\uc5b4\uba383: \ud0c0\uc774\uba382\uac00 \uc8fd\uc73c\uba74, \uc77c\uc815 \uc2dc\uac04 \ub4a4 \uc2e4\ud589, \ud734\ub300\ud3f0\uc758 \uc0ac\uc9c4\uc744 1\ubd84 \ub2e8\uc704\ub85c \ud45c\uc2dc. \ud558\ub8e8\uac00 \uc9c0\ub098 \ud0c0\uc774\uba381 \ub3d9\uc791 \uc2dc\uac04\uc804\uc5d0 cancel<\/li>\n<\/ul>\n<p>\ubd88\ud589\ud788 \uace0\ud654\uc9c8 \uc774\ubbf8\uc9c0\uac00 \ub514\uc2a4\ud50c\ub808\uc774\uc5d0 \ud45c\uc2dc\ub418\uc9c0 \uc54a\ub294\ub2e4. <a href=\"https:\/\/developer.android.com\/topic\/performance\/graphics\/load-bitmap.html\">\uc774\ubbf8\uc9c0\uac00 \ud074 \uacbd\uc6b0, resample\uc774 \ud544\uc694\ud558\ub2e4.<\/a><\/p>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/27579749\/high-resolution-image-not-display-in-imageview-android\/27579930\">\uc5ec\uae30<\/a>\ub3c4 \uc720\uc6a9\ud588\ub2e4.<\/p>\n<p>\ud0c0\uc774\uba38 \uc801\uc6a9\uc73c\ub85c Thread\uac00 \ub3cc\ub9ac\ub294 \uc0ad\uc81c, \uc218\uc2e0, \ud45c\uc2dc\ub97c \uc815\ub9ac\ud588\ub2e4.<del> Thread\ub85c \uc5ec\ub7ec \uc791\uc5c5\uc744 \uc5f0\uc18d\uc73c\ub85c \ud558\ub2e4 \ubcf4\ub2c8, \ud30c\uc77c\uc744 \ubc1b\ub294 \uc2dc\uac01, \uc9c0\uc6b0\ub294 \uc2dc\uac01, \ubcf4\uc5ec\uc904 \ud30c\uc77c\uc744 \ubcc0\uacbd\ud560 \uc2dc\uac01\uc774 \uc11e\uc5ec\uc788\uc5b4, \uad00\ub9ac\ud558\uae30 \ud798\ub4e4\uc5c8\ub2e4.<\/del><\/p>\n<p>handler\ub97c \ud558\ub098 \ub9cc\ub4e4\uc5b4\uc11c message\ub97c \ubcf4\ub0b4, \uc6d0\ud558\ub294 \ub2e8\uacc4\uc5d0 \uc0ac\uc9c4\uc774 \ud45c\uc2dc\ub418\uc9c0 \uc54a\ub3c4\ub85d \ud588\ub2e4. NullPointerException\uc73c\ub85c.. \uc544\ub798 \uadf8\ub9bc\uacfc \uac19\uc774 \ud55c \uc2dc\uc810\uc5d0 \ud55c \uac1c\uc758 \uba54\uc138\uc9c0\ub9cc \ub098\uac00\ub3c4\ub85d \uc815\uc758\ud588\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-large wp-image-1729\" src=\"http:\/\/now0930.tk\/wordpress\/wp-content\/uploads\/2017\/09\/\uc0c8-\ud30c\uc77c-2017-09-23_1-1024x710.jpg\" alt=\"\" width=\"474\" height=\"329\" srcset=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/09\/\uc0c8-\ud30c\uc77c-2017-09-23_1-1024x710.jpg 1024w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/09\/\uc0c8-\ud30c\uc77c-2017-09-23_1-300x208.jpg 300w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/09\/\uc0c8-\ud30c\uc77c-2017-09-23_1-768x533.jpg 768w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/p>\n<p>\uc704 \uadf8\ub9bc\uc744 \ubcf4\uba74, \ud2b9\uc815 \uc2dc\uac04\uc5d0 message \ubcf4\ub0b4\uc9c0 \ub9d0\uc544\uc57c \ud55c\ub2e4. JAVA \ud0c0\uc774\uba38\ub97c \ud2b9\uc815 \uc2dc\uac01\uc5d0 \uc2e4\ud589\ud558\uace0 \ub09c \ub2e4\uc74c, \ub2e4\ub978 \uc2dc\uac01\uc5d0 \ub3c4\ucc29\ud558\uba74 \uc8fd\uc5ec\uc57c \ud558\ub294\ub370, \uc798 \ub418\uc9c0 \uc54a\uc558\ub2e4. <a href=\"https:\/\/stackoverflow.com\/questions\/15894731\/how-to-stop-the-timer-after-certain-time\">\uc5ec\uae30<\/a>\uc5d0 \ubcf4\uba74 TimerTask\uc548\uc758 run \ubd80\ubd84\uc5d0 cancel()\uc744 \uc815\uc758\ud588\ub2e4. <a href=\"https:\/\/stackoverflow.com\/questions\/11550561\/pause-the-timer-and-then-continue-it\">\ud0c0\uc774\uba38\uac00 \ud55c\ubc88 cancel\ub418\uba74 \ub2e4\uc2dc \uc368\uba39\uc744 \uc218 \uc5c6\ub2e4.<\/a> \uc0c8\ub85c\uc6b4 \ud0c0\uc774\uba38\ub97c \ub9cc\ub4e4\uc5b4\uc57c \ud55c\ub2e4. TimerTask\uac00 thread\ub85c \uc5b4\ub5a4 \uc791\uc5c5\uc744 \uc2e4\ud589\ud560\uc9c0 \uacb0\uc815\ud558\ub294\ub370, cancel()\uc774 \uc2e4\ud589\ub418\uba74 run\uc73c\ub85c \uc815\uc758\ub41c \ubd80\ubd84\uc774 \uc544\uc608 \uc2e4\ud589\uc774 \uc548\ub41c\ub2e4.<\/p>\n<p>\ub2e4\uc74c \uadf8\ub9bc\uacfc \uac19\uc774 cancel()\uc744 \uc2e4\ud589\ud55c \ud0c0\uc774\uba38\ub97c \uc8fd\uc774\uace0, \uc0c8\ub85c \ub9cc\ub4e4\uc5c8\ub2e4. thread\uac00 \ub9cc\ub4e4\ub2e4 \ubcf4\ub2c8, \ubb34\uc9c0\ub9c9\uc9c0\ud558\uac8c \ub9cc\ub4e4\uc5b4 OutOfMemory\ub85c \uc571\uc774 \ubed7\uc5b4\ubc84\ub9ac\ub294\ub370, \ubc29\uc9c0\ud558\uae30 \uc704\ud574 Flag\ub97c \uc124\uc815\ud588\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-large wp-image-1744\" src=\"http:\/\/now0930.tk\/wordpress\/wp-content\/uploads\/2017\/10\/\ud0c0\uc774\uba38\ub3d9\uc791\uad00\uacc4-1024x704.jpg\" alt=\"\" width=\"474\" height=\"326\" srcset=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/\ud0c0\uc774\uba38\ub3d9\uc791\uad00\uacc4-1024x704.jpg 1024w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/\ud0c0\uc774\uba38\ub3d9\uc791\uad00\uacc4-300x206.jpg 300w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/\ud0c0\uc774\uba38\ub3d9\uc791\uad00\uacc4-768x528.jpg 768w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><br \/>\n\uc774 \uadf8\ub9bc\uc774 \ub9de\uae30\ub97c \ubc14\ub77c\uba70. \uc18c\uc2a4 \ucf54\ub4dc\ub294..\uc9c0\uc9c0..<\/p>\n<h5>v0 \ub9b4\ub9ac\uc988 \ubc0f \ud6c4\uae30.<\/h5>\n<p>\uba70\uce60\uac04\uc758 \uc0bd\uc9c8\ub85c \ud5c8\uc811\ud55c \uc561\uc790\ub97c \ub9cc\ub4e4\uc5c8\ub2e4.<img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-large wp-image-1747\" src=\"http:\/\/now0930.tk\/wordpress\/wp-content\/uploads\/2017\/10\/20171002_141351-1024x576.jpg\" alt=\"\" width=\"474\" height=\"267\" srcset=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/20171002_141351-1024x576.jpg 1024w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/20171002_141351-300x169.jpg 300w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/20171002_141351-768x432.jpg 768w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/p>\n<p>.\u3160\u3160\ud55c \uc0ac\uc774\ud074\uc744 \uc548\ub3cc\ub824\ubcf4\uc544, \uc798 \ub420\uc9c0 \ubaa8\ub974\uaca0\ub2e4. \ub514\uc2a4\ud50c\ub808\uc774\ub3c4 \ud558\ub8e8\uc885\uc77c \ucf1c\ub193\ub3c4\ub85d \uc124\uc815\ud558\uc5ec \uc870\ub9cc\uac04 \ud654\uba74\uc774 \ub098\uac08\ub4ef \ud558\ub2e4. \uc0ac\uc9c4\uc744 \uc798 \ub3cc\ub824\uc57c \ub418\ub294\ub370, \uc0ac\uc9c4\ub9c8\ub2e4 \ud2b9\uc131\uc774 \uc788\uc5b4, \ubaa8\ub4e0 \uacbd\uc6b0\ub97c \ub123\uc9c0\ub3c4 \ubabb\ud588\ub2e4. \ubcf4\uc548\uc740 \uc544\uc608 \uc124\uc815 \ud558\uc9c0\ub3c4 \uc54a\uc558\uace0..\ud30c\uc77c \uc774\ub984\uc774 \uac19\uc774 \uc804\uc1a1\ub418\uc5b4\uc57c \ud558\ub294\ub370, \uae09\ud55c\uae40\uc5d0 \ubc1b\ub294\ucabd\uc5d0\uc11c \uc54c\uc544\uc11c \uc774\ub984\uc744 \ubd99\uc600\ub2e4. \uadf8\ub7ec\ub2e4 \ubcf4\ub2c8, \ud06c\uae30\uac00 0\uc778 \ud30c\uc77c\ub3c4\uc804\uc1a1\ub418\uc5b4 \ud654\uba74\uc5d0 \ud45c\uc2dc\uac00 \uc548\ub41c\ub2e4. \ud45c\uc2dc\ud560 \uc218 \uc5c6\ub294 \ud30c\uc77c\uc77c \uacbd\uc6b0, \uae30\uc874 \ud654\uba74\uc744 \uc720\uc9c0\ud574\uc57c \ud558\ub294\ub370, \uad6c\ud604\ud558\uc9c0 \uc54a\uc558\ub2e4. \uadf8\ub0e5 \uc5b4\ub450\uc6b4 \ud30c\uc77c..\uc5d0\ub7ec\ub85c \uc8fd\uc9c0\ub9cc \uc54a\uc744\ubfd0..<\/p>\n<p>\uacb0\uacfc\uc801\uc73c\ub85c \uc2dc\uc911\uc5d0 \ud30c\ub294 \uc804\uc790\uc561\uc790\uac00 \ub9ce\uc774 \uc2f8\ub2e4..14\uc778\uce58 \uc81c\ud488\uc774 170,000\uc6d0\uc774\uba74 \uc0b4 \ub4ef\ud558\ub2e4. \ub2e4\ub9cc \uc0ac\uc9c4\uc744 \uc804\uc790 \uc561\uc790\ub85c \ub123\uc5b4\uc8fc\uae30\uac00 \uadc0\ucc2e\uc544 \uc548 \uc4f8\ub4ef\ud55c\ub370..\ubc18\uc81c\ud488 \ub9cc\ub4e4\uc5b4 \ud30c\ub294 \uc81c\ud488\uc774 \uc5c6\ub294\uc9c0..\uc561\uc815, \ud1b5\uc2e0, \ud0c0\uc774\uba38, \ud30c\uc77c \uc785\ucd9c\ub825 \ub4f1 \ub2e8\uc9c0 \uba87 \uac00\uc9c0 \uae30\ub2a5\ub9cc \uc0ac\uc6a9\ud558\ub294\ub370 \uc5d0\ub7ec\uac00 \uc774\ub807\uac8c \ub9ce\uc73c\ub2c8&#8230;<\/p>\n<h5>\ucc38\uc870 \uc0ac\uc774\ud2b8.<\/h5>\n<p>100% \ubaa8\ub4e0 \ucf54\ub4dc\uac00 \uc778\ud130\ub137 \ucd9c\ucc98(\ub300\ubd80\ubd84 stack overflow)\uc774\uace0, \uc544\ub798 \ub9c1\ud06c\uc5d0\uc11c \ucc38\uc870 \ud588\ub2e4.<\/p>\n<p><a href=\"http:\/\/www.rgagnon.com\/javadetails\/java-0542.html\">JAVA, SOCKET\uc73c\ub85c \ud30c\uc77c \uc804\uc1a1<\/a> <a href=\"https:\/\/stackoverflow.com\/questions\/5694385\/getting-the-filenames-of-all-files-in-a-folder\">\ub514\ub809\ud1a0\ub9ac \uc548\uc758 \ud30c\uc77c \uac2f\uc218\uc640 \uc774\ub984\ub4e4<\/a><\/p>\n<p>socket\uc774 \uc11c\ubc84\uc5d0 \ub3cc \uacbd\uc6b0, \uae30\uc874 \ud504\ub85c\uc138\uc2a4\uac00 \ud574\ub2f9 \ud3ec\ud2b8\ub97c \uc810\uc720\ud558\uc5ec, nullPointerException\uc744 \ub9cc\ub4e0\ub2e4.<br \/>\nBindException\uac00 \uc6d0\uc778\uc778\ub370, <a href=\"http:\/\/yadw.tistory.com\/306\">\uc5ec\uae30\ub97c \ucc38\uc870\ud558\uc5ec<\/a> \ud574\ub2f9 \ud3ec\ud2b8\uac00 \uc5f4\ub824\uc788\ub294\uc9c0 \ud655\uc778 \ud6c4, \uc0ac\uc6a9\ud558\uace0 \uc788\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 kill\ud588\ub2e4.<br \/>\nbash\uc5d0 \uc774 \ubd80\ubd84\ub3c4 \ub123\uc5b4\uc57c \ud560\ub4ef..<\/p>\n<p><a href=\"http:\/\/www.41post.com\/2744\/programming\/android-loading-images-from-a-remote-sever-sd-card-and-from-the-resources-folder\">DrawView\ub85c canvas\ub85c \uc774\ubbf8\uc9c0 \ud45c\uc2dc<\/a><\/p>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/2591036\/how-to-hide-the-title-bar-for-an-activity-in-xml-with-existing-custom-theme\">TitleBar \uc5c6\uc560\uae30<\/a><\/p>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/3440690\/rotating-a-bitmap-using-matrix\">canvas\uc640 bitmap image\uc758 \uad00\uacc4<\/a><\/p>\n<p><a href=\"http:\/\/www.anddev.org\/resize_and_rotate_image_-_example-t621.html\">Bitmap \uc0ac\uc6a9\ud558\uae30.<\/a><\/p>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/22399289\/android-createbitmap-on-ondraw\">onDraw\uc5d0\uc11c bitmap.create\ub97c \uc0ac\uc6a9\ud558\uae30<\/a>..\uba54\ubaa8\ub9ac \ub204\uc218\ub97c \ubc29\uc9c0\ud558\uae30 \uc704\ud574, null\uc77c \uacbd\uc6b0\uc5d0\ub9cc \uc0ac\uc6a9..<\/p>\n<p>Bitmap\uc758 decodeFile\uc0ac\uc6a9\uc2dc, <a href=\"http:\/\/www.androidpub.com\/2242534\">outOfMemory \ubb38\uc81c \ud574\uacb0<\/a>..<br \/>\n\ud558\ub098\uc758 bitmap\ub9cc \uc0ac\uc6a9..<\/p>\n<p><a href=\"http:\/\/arabiannight.tistory.com\/entry\/331\">message \uac04\ub2e8 \uc0ac\uc6a9\ubc29\ubc95<\/a><\/p>\n<p><a href=\"http:\/\/codedb.tistory.com\/entry\/Android-Message%EC%97%90-Stirng-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%8B%B4%EC%95%84-%ED%95%B8%EB%93%A4%EB%9F%AC%EC%97%90-sendMessage-%ED%95%98%EA%B8%B0\">message\uc5d0 String\uc744 \uc2e4\uc5b4 \ubcf4\ub0b4\uae30.<\/a><\/p>\n<p><a href=\"https:\/\/www.codota.com\/android\/methods\/android.os.Handler\/sendMessage\">Message \uc0ac\uc6a9 open source<\/a><\/p>\n<p><a href=\"http:\/\/hyunssssss.tistory.com\/292\">OnDraw\uc5d0 handleMessage \uad6c\ud604<\/a><\/p>\n<p><a href=\"http:\/\/blog.naver.com\/PostView.nhn?blogId=highkrs&amp;logNo=220283709171\">Timer\uc0ac\uc6a9 \ubc29\ubc95<\/a><\/p>\n<p>\ud0c0\uc774\uba38 \uc815\uc758<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/now0930.tk\/wordpress\/wp-content\/uploads\/2017\/10\/20180116_172317-1024x545.jpg\" alt=\"\" width=\"474\" height=\"252\" class=\"alignleft size-large wp-image-1962\" srcset=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/20180116_172317-1024x545.jpg 1024w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/20180116_172317-300x160.jpg 300w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/20180116_172317-768x408.jpg 768w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc804\uc790 \uc561\uc790 \ub9cc\ub4e4\uae30. \uad6c\uae00 \ud50c\ub808\uc774\uc5d0 \uc804\uc790 \uc561\uc790\ub85c \ucc3e\uc544\ubcf4\uba74 &#8220;\ud6a8\ub3c4 \uc561\uc790&#8221;\uac00 \uc788\ub2e4. \uc798 \ub9cc\ub4e4\uc5b4\uc84c\uc9c0\ub9cc, \uc571\uc774 \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc811\uadfc, \uc800\uc7a5\ub41c \uc0ac\uc9c4\uc744 \ubcf4\uc5ec\uc900\ub2e4. \ub098\ub294 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1746,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[],"tags":[99,14,219,98,220,218],"class_list":["post-1710","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-android","tag-bash","tag-diy","tag-java","tag-script","tag-socket"],"jetpack_featured_media_url":"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2017\/10\/20171002_184221.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1710","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=1710"}],"version-history":[{"count":25,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1710\/revisions"}],"predecessor-version":[{"id":1963,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1710\/revisions\/1963"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media\/1746"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=1710"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=1710"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=1710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}