<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>if else</title>
    <link>https://runicode.tistory.com/</link>
    <description>개발과 일상 사이에서, 틈틈이 글을 써보려 합니다.
</description>
    <language>ko</language>
    <pubDate>Tue, 7 Apr 2026 11:59:35 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>runicode</managingEditor>
    <image>
      <title>if else</title>
      <url>https://tistory1.daumcdn.net/tistory/165833/attach/b7e5806249c04fcd94a5a3b7fb04975a</url>
      <link>https://runicode.tistory.com</link>
    </image>
    <item>
      <title>curl --user 옵션을 사용했을 때 request</title>
      <link>https://runicode.tistory.com/entry/curl-user-%EC%98%B5%EC%85%98%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%96%88%EC%9D%84-%EB%95%8C-request</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Authlib&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;OAuth2 server 예제 ( &lt;a href=&quot;https://docs.authlib.org/en/latest/flask/2/index.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.authlib.org/en/latest/flask/2/index.html&lt;/a&gt; ) 를 테스트 하며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;curl -X POST --user &quot;&amp;lt;client_id&amp;gt;:&amp;lt;client_secret&amp;gt;&quot; 수행 시 request의 형태를 확인하고자 하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;515&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qX9ZX/btrMDy39RUD/s1vVntEW6ozoQySpDmmJlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qX9ZX/btrMDy39RUD/s1vVntEW6ozoQySpDmmJlK/img.png&quot; data-alt=&quot;authlib / example-oauth2-server 에 등록한 client info&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qX9ZX/btrMDy39RUD/s1vVntEW6ozoQySpDmmJlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqX9ZX%2FbtrMDy39RUD%2Fs1vVntEW6ozoQySpDmmJlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;515&quot; height=&quot;234&quot; data-origin-width=&quot;515&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;authlib / example-oauth2-server 에 등록한 client info&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1663715307095&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\WINDOWS\system32&amp;gt;curl -v -u oTzkmwz4qQdK9iP7qQhDcZSJ:KR1q4Phw4kHPVXlUmUd5700qZiEhkZYXvMpKgxMKm5Fpj2GU -XPOST http://127.0.0.1:5000/oauth/token -F grant_type=client_credentials
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 127.0.0.1:5000...
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
* Server auth using Basic with user 'oTzkmwz4qQdK9iP7qQhDcZSJ'
&amp;gt; POST /oauth/token HTTP/1.1
&amp;gt; Host: 127.0.0.1:5000
&amp;gt; Authorization: Basic b1R6a213ejRxUWRLOWlQN3FRaERjWlNKOktSMXE0UGh3NGtIUFZYbFVtVWQ1NzAwcVppRWhrWllYdk1wS2d4TUttNUZwajJHVQ==
&amp;gt; User-Agent: curl/7.83.1
&amp;gt; Accept: */*
&amp;gt; Content-Length: 163
&amp;gt; Content-Type: multipart/form-data; boundary=------------------------843139e3d3fc9f8b
&amp;gt;
* We are completely uploaded and fine
* Mark bundle as not supporting multiuse
* HTTP 1.0, assume close after body
&amp;lt; HTTP/1.0 200 OK
&amp;lt; Content-Type: application/json
&amp;lt; Cache-Control: no-store
&amp;lt; Pragma: no-cache
&amp;lt; Content-Length: 108
&amp;lt; Server: Werkzeug/1.0.1 Python/3.8.3
&amp;lt; Date: Tue, 20 Sep 2022 22:51:38 GMT
&amp;lt;
{&quot;access_token&quot;: &quot;hAiwGKom8KNoejH13Hfgi2HQPQOmsVJIeyW8DPzEZ9&quot;, &quot;expires_in&quot;: 864000, &quot;token_type&quot;: &quot;Bearer&quot;}* Closing connection 0

C:\WINDOWS\system32&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;--user&lt;/b&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;&amp;lt;client_id&amp;gt;:&amp;lt;client_secret&amp;gt;&quot;&lt;/b&gt;&lt;span&gt; 은 &lt;b&gt;base64로 인코딩되어 Authorization : Basic 과 함께 header에 적용&lt;/b&gt;됨을 확인하였으며&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;base64로 인코딩된 값을 구하기 위해 다음의 방법을 사용 할 수 있었다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1663715577440&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;D:\workspace_oauth2&amp;gt;copy con credentials.txt
oTzkmwz4qQdK9iP7qQhDcZSJ:KR1q4Phw4kHPVXlUmUd5700qZiEhkZYXvMpKgxMKm5Fpj2GU^Z
        1개 파일이 복사되었습니다.

D:\workspace_oauth2&amp;gt;certutil -encode credentials.txt credentials.asc
입력 길이 = 73
출력 길이 = 160
CertUtil: -encode 명령이 성공적으로 완료되었습니다.

D:\workspace_oauth2&amp;gt;type credentials.asc
-----BEGIN CERTIFICATE-----
b1R6a213ejRxUWRLOWlQN3FRaERjWlNKOktSMXE0UGh3NGtIUFZYbFVtVWQ1NzAw
cVppRWhrWllYdk1wS2d4TUttNUZwajJHVQ==
-----END CERTIFICATE-----

D:\workspace_oauth2&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ref : &lt;a href=&quot;https://stackoverflow.com/questions/36292406/what-does-user-mean-with-curl&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/36292406/what-does-user-mean-with-curl&lt;/a&gt;&lt;/p&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/270</guid>
      <comments>https://runicode.tistory.com/entry/curl-user-%EC%98%B5%EC%85%98%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%96%88%EC%9D%84-%EB%95%8C-request#entry270comment</comments>
      <pubDate>Wed, 21 Sep 2022 08:16:20 +0900</pubDate>
    </item>
    <item>
      <title>OAuth 2.0 스터디</title>
      <link>https://runicode.tistory.com/entry/OAuth-20-%EC%8A%A4%ED%84%B0%EB%94%94</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-pm-slice=&quot;3 7 [&amp;quot;expand&amp;quot;,{&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;__expanded&amp;quot;:true}]&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OAuth 2.0 주요 용어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Authentication : 인증, &lt;u&gt;접근 자격이 있는지 검증하는 단계&lt;/u&gt;를 말합니다.&lt;/li&gt;
&lt;li&gt;Authorization : 인가, &lt;u&gt;자원에 접근할 권한을 부여&lt;/u&gt;하는 것입니다. 인가가 완료되면 리소스 접근 권한이 담긴 Access Token이 클라이언트에게 부여됩니다.&lt;/li&gt;
&lt;li&gt;Access Token :&amp;nbsp;리소스 서버에게서 리소스 소유자의 보호된 자원을 획득할 때 사용되는 만료 기간이 있는 Token입니다.&lt;/li&gt;
&lt;li&gt;Refresh Token :&amp;nbsp;&amp;nbsp;Access Token 만료시 이를 갱신하기 위한 용도로 사용하는 Token입니다. Refresh Token은 일반적으로 Access Token보다 만료 기간이 깁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-pm-slice=&quot;3 7 [&amp;quot;expand&amp;quot;,{&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;__expanded&amp;quot;:true}]&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Roles - OAuth 2.0의 4가지 역할
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Resource Owner :&amp;nbsp;리소스 소유자 또는 사용자. 보호된 자원에 접근할 수 있는 자격을 부여해 주는 주체. OAuth2 프로토콜 흐름에서 클라이언트를 인증(Authorize)하는 역할을 수행합니다. 인증이 완료되면 권한 획득 자격(Authorization Grant)을 클라이언트에게 부여합니다. 개념적으로는 리소스 소유자가 자격을 부여하는 것이지만 일반적으로 권한 서버가 리소스 소유자와 클라이언트 사이에서 중개 역할을 수행하게 됩니다.&lt;/li&gt;
&lt;li&gt;Client :&amp;nbsp;보호된 자원을 사용하려고 접근 요청을 하는 애플리케이션입니다.&lt;/li&gt;
&lt;li&gt;Resource Server :&amp;nbsp;사용자의 보호된 자원을 호스팅하는 서버입니다.&lt;/li&gt;
&lt;li&gt;Authorization Server :&amp;nbsp;권한 서버. 인증/인가를 수행하는 서버로 클라이언트의 접근 자격을 확인하고 Access Token을 발급하여 권한을 부여하는 역할을 수행합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-pm-slice=&quot;3 7 [&amp;quot;expand&amp;quot;,{&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;__expanded&amp;quot;:true}]&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Obtaining Authorization
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Authorization Code Grant│ 권한 부여 승인 코드 방식&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NI2wJ/btrMvMvdJUH/OykngFJkgMOLkNTdZyrqLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NI2wJ/btrMvMvdJUH/OykngFJkgMOLkNTdZyrqLk/img.png&quot; data-alt=&quot;Authorization Code Flow&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NI2wJ/btrMvMvdJUH/OykngFJkgMOLkNTdZyrqLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNI2wJ%2FbtrMvMvdJUH%2FOykngFJkgMOLkNTdZyrqLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;383&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Authorization Code Flow&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;grant_type : &lt;span&gt;authorization_code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;code, redirect_uri, client_id REQUIRED&lt;/li&gt;
&lt;li&gt;권한 부여 승인을 위해 자체 생성한 Authorization Code를 전달하는 방식으로 많이 쓰이고 기본이 되는 방식입니다.&lt;/li&gt;
&lt;li&gt;간편 로그인 기능에서 사용되는 방식으로 클라이언트가 사용자를 대신하여 특정 자원에 접근을 요청할 때 사용되는 방식입니다. 보통 타사의 클라이언트에게 보호된 자원을 제공하기 위한 인증에 사용됩니다. Refresh Token의 사용이 가능한 방식입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Implicit Grant │ 암묵적 승인 방식&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PP83C/btrMrxywalu/md0Kofb7hbGnbLbvBUZiak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PP83C/btrMrxywalu/md0Kofb7hbGnbLbvBUZiak/img.png&quot; data-alt=&quot;Implicit Grant Flow&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PP83C/btrMrxywalu/md0Kofb7hbGnbLbvBUZiak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPP83C%2FbtrMrxywalu%2Fmd0Kofb7hbGnbLbvBUZiak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;487&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Implicit Grant Flow&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;grant_type 없음&lt;/li&gt;
&lt;li&gt;reponse_type, client_id REQUIRED&lt;/li&gt;
&lt;li&gt;자격증명을 안전하게 저장하기 힘든 클라이언트(ex: JavaScript등의 스크립트 언어를 사용한 브라우저)에게 최적화된 방식입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Resource Owner Password Credentials Grant │ 자원 소유자 자격증명 승인 방식&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;448&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDCkFp/btrMzQQnpqf/yRXWxwuaYVPfnNDWuNdkD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDCkFp/btrMzQQnpqf/yRXWxwuaYVPfnNDWuNdkD1/img.png&quot; data-alt=&quot;Resource Owner Password Credentials Flow&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDCkFp/btrMzQQnpqf/yRXWxwuaYVPfnNDWuNdkD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDCkFp%2FbtrMzQQnpqf%2FyRXWxwuaYVPfnNDWuNdkD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;448&quot; height=&quot;260&quot; data-origin-width=&quot;448&quot; data-origin-height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Resource Owner Password Credentials Flow&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;grant_type : &lt;span&gt;password&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;user_name, password REQUIRED&lt;/li&gt;
&lt;li&gt;간단하게 username, password로 Access Token을 받는 방식입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Client Credentials Grant │클라이언트 자격증명 승인 방식&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4sjEz/btrMrwzF0D7/8rOKgpep20KydQT4ccYOY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4sjEz/btrMrwzF0D7/8rOKgpep20KydQT4ccYOY1/img.png&quot; data-alt=&quot;Client Credentials Flow&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4sjEz/btrMrwzF0D7/8rOKgpep20KydQT4ccYOY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4sjEz%2FbtrMrwzF0D7%2F8rOKgpep20KydQT4ccYOY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;109&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client Credentials Flow&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;grant_type : &lt;span&gt;client_credentials&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;클라이언트의 자격증명만으로 Access Token을 획득하는 방식입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 출처&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc6749&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.rfc-editor.org/rfc/rfc6749&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - &lt;a href=&quot;https://blog.naver.com/mds_datasecurity/222182943542&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.naver.com/mds_datasecurity/222182943542&lt;/a&gt;&lt;/p&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/269</guid>
      <comments>https://runicode.tistory.com/entry/OAuth-20-%EC%8A%A4%ED%84%B0%EB%94%94#entry269comment</comments>
      <pubDate>Tue, 20 Sep 2022 08:33:04 +0900</pubDate>
    </item>
    <item>
      <title>JIRA 초급 교육 + 메모</title>
      <link>https://runicode.tistory.com/entry/JIRA-%EC%B4%88%EA%B8%89-%EA%B5%90%EC%9C%A1-%EB%A9%94%EB%AA%A8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. 수강 목적&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: JIRA가 어떤 것인지 궁금하고, 장단점이 무엇인지 기초를 배우고 싶어 수강&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;si sm 업무에 참여하면서 3~8인 정도의 소규모 사업장에 자주 근무함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현 사이트에서도 메신저, 메일, 개인별 메모, 삼바 파일서버 등으로 의사 소통&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 6개월 가량 레드마인을 이슈 관리, 업무 배분 등의 목적으로 사용한 적 있으나 모든 기능을 써보지는 못함.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레드마인 사용 당시 처음 사용자가 많아 아쉬움이 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;http://edu-jira.deprogworks.com&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;http://confluence.augkorea.org&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JIRA Service Desk 에서 SLA 에 대한 활용 가능한 부분 보임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;https://www.youtube.com/watch?v=ltPchPtnYCc&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bpmn 꽤 쓸만한듯&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;http://bpmn.io/&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;18:00 교육 끝&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;~ 20:00 식사, 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;~ 22:00 업무&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;~ 24:00&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 우선순위 기준&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 내가 하고싶은 것인지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 내게 도움 되는지? (업무 제외)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 발꿈치 각화증 치료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이력서 작성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- KOSTA 교육 받은 내용을 회사 사이트에 전파하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 나스 활용하기 + 아버지 요청사항&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 홈페이지, 도메인 활용하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 파이썬 공부하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 베란다 식물 재배 해보기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 오르골 제작&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 방 정리 + 베란다를 공방으로 만들까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 잔여업무 (2~7일 정도 분량)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 안드로이드 학습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 인수인계 문서 작성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 늑여 태블릿 / 안드 에뮬 등에 테스트 용으로 가능할지. 노트북이 필요할지도. 장비 요청 가능할지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 내 능력은 업무 분석 및 문서화에 특화되어 있을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 현재 조사 업무 프로세스&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;http://webdir.tistory.com/491?category=640070&lt;/p&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/264</guid>
      <comments>https://runicode.tistory.com/entry/JIRA-%EC%B4%88%EA%B8%89-%EA%B5%90%EC%9C%A1-%EB%A9%94%EB%AA%A8#entry264comment</comments>
      <pubDate>Sat, 9 Jun 2018 16:39:55 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 쉘 프로그래밍 교육 중 미정리 노트</title>
      <link>https://runicode.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%89%98-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B5%90%EC%9C%A1-%EC%A4%91-%EB%AF%B8%EC%A0%95%EB%A6%AC-%EB%85%B8%ED%8A%B8</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ubuntu160402-st.vmdk&lt;/p&gt;&lt;p&gt;vbox5.2.4.zip&amp;nbsp;&lt;/p&gt;&lt;p&gt;사용&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# runlevel 5 : gui&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 일반 파일 : regular 파일 이라는 표현을 쓴다&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 설치, 네트워크 설정, 삼바 연결 확인&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 콘솔에서 bash 를 쓰면 bash가 늘어남. 부모 쉘 - 자식 쉘&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# -bash : 로그인 쉘&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# shebang : 밑의 스크립트가 돌아갈 환경 기술&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;#!/bin/sh&amp;nbsp; &amp;nbsp;&amp;lt;- 첫 줄. sh을 지정할 수 있다고. 이 경우는 dash&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;#date&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;who&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;ls&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;pwd&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;sleep&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;# env : shell 환경변수들&amp;nbsp;&lt;/p&gt;&lt;p&gt;# set : shell 변수들&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# bash 의 subshell 이 필요한 이유 중 하나&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;- 공유하는 환경변수 등의 초기화, 공유 등 변수설정에 따른 환경차이도 이유 중 하나...&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;- 기존 환경변수를 해치지 않고 sh의 내용만 수행하고 싶을때도 괜찮을듯.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;- 독립된 환경설정 하 구동 같은 느낌&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;# 로그용 shell 스크립트&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;#!bin/bash&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;today=$(date +%y%m%d)&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;ls -al /usr/bin &amp;gt; usrbinlist.$today&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;이런 식으로 크론에 배치한다거나.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;# 리눅스에서 실행시키는 방법 세가지 (우분투 기준)&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;source abc.sh&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;. abc.sh&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;./abc.sh&amp;nbsp; &amp;nbsp;&amp;lt;- 이 경우만 서브 셸에서 수행&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;www.naver.com&lt;/p&gt;&lt;p&gt;allshare2016 / kosta2018 내게 쓴 메일함 - e북&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# /dev/null -&amp;gt; 휴지통&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;echo &quot;test&quot; &amp;gt; /dev/null 이런 식으로&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# IFS 를 이용한 행으로 이루어진 데이터 나누기 inter field seperator&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;교재 129페이지&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;이걸 이용하면&lt;/p&gt;&lt;p&gt;행공센 내에서 조사결과 압축 해제 후&lt;/p&gt;&lt;p&gt;mst.txt 파일을 분석하는 데 활용이 가능할 것 같다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;usage : 테스트.sh &amp;lt;mst file name&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;로 arg[1] 받고&amp;nbsp;&lt;/p&gt;&lt;p&gt;read 로 hshldmby, examin_id 등을 입력받고&lt;/p&gt;&lt;p&gt;IFS 를 | 로 변형시켜서&lt;/p&gt;&lt;p&gt;한 행씩 결과를 출력하게끔 처리, 한 행 출력하면 pause.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 콘솔에서 function add { echo $[$1 + $2]; }&amp;nbsp;&lt;/p&gt;&lt;p&gt;한 뒤 add 50 60&amp;nbsp;&lt;/p&gt;&lt;p&gt;쉘 펑션&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;function sub {&lt;/p&gt;&lt;p&gt;echo $[$1 - $2]&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# .bashrc (dos의 autoexec.bat 와 유사한 파일로 보임)&lt;/p&gt;&lt;p&gt;개인 쉘 펑션을 입력하여 배치 가능&lt;/p&gt;&lt;p&gt;이걸 cd 해서 home 간뒤 .bashrc 편집해서... 뒤에 넣으면 켜질때마다 반영&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# declare -f&amp;nbsp;&lt;/p&gt;&lt;p&gt;현재 등록된 쉘 펑션들의 목록을 죄다 받아올 수 있다&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# delemeter 기준 특정 문자 가져오기&lt;/p&gt;&lt;p&gt;variable=user:123;321:/home/dir&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;echo ${variable#*:}&lt;/p&gt;&lt;div&gt;&lt;p&gt;echo ${variable##*:}&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;echo ${variable%:*}&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;echo ${variable%%:*}&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/263</guid>
      <comments>https://runicode.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%89%98-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B5%90%EC%9C%A1-%EC%A4%91-%EB%AF%B8%EC%A0%95%EB%A6%AC-%EB%85%B8%ED%8A%B8#entry263comment</comments>
      <pubDate>Sat, 19 May 2018 16:26:34 +0900</pubDate>
    </item>
    <item>
      <title>오라클에서 isnumber isdate 함수 사용하기</title>
      <link>https://runicode.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4%EC%97%90%EC%84%9C-isnumber-isdate-%ED%95%A8%EC%88%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;a href=&quot;http://scidb.tistory.com/entry/오라클에서-isnumber-isdate-함수-사용하기&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://scidb.tistory.com/entry/오라클에서-isnumber-isdate-함수-사용하기&lt;/a&gt;&lt;/p&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/262</guid>
      <comments>https://runicode.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4%EC%97%90%EC%84%9C-isnumber-isdate-%ED%95%A8%EC%88%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0#entry262comment</comments>
      <pubDate>Wed, 15 Nov 2017 17:51:46 +0900</pubDate>
    </item>
    <item>
      <title>CentOS 7 설치, svn(https 적용)</title>
      <link>https://runicode.tistory.com/entry/CentOS-7-%EC%84%A4%EC%B9%98-svnhttps-%EC%A0%81%EC%9A%A9</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래는 virtual box에서 centos7 설치하여 테스트 한 내용을 기준으로 서술.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;1. virtualbox , centos 7 다운로드&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 683px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/275BD43F58E6EE121B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F275BD43F58E6EE121B&quot; width=&quot;683&quot; height=&quot;487&quot; filename=&quot;20170403_152913.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.virtualbox.org/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.virtualbox.org/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;- Download VirtualBox 5.1&amp;nbsp;&lt;/p&gt;&lt;p&gt;- Windows Hosts&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 683px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2110393F58E6EE1329&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2110393F58E6EE1329&quot; width=&quot;683&quot; height=&quot;490&quot; filename=&quot;20170403_153024.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.centos.org/download/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.centos.org/download/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;- minimal iso&amp;nbsp;&lt;/p&gt;&lt;p&gt;- &lt;a href=&quot;http://ftp.kaist.ac.kr/CentOS/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://ftp.kaist.ac.kr/CentOS/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. 설치&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;- 만약 마운트한 이미지에서 리눅스 설치가 진행도중 종료되거나 먹통이라면&amp;nbsp;&lt;/p&gt;&lt;p&gt;: Bios &amp;gt; Security 에서 Intel (R) Virtualization Technology, Intel (R) VT-d Feature 두개 옵션을 enabled로 변경&lt;/p&gt;&lt;p&gt;: 가상os 이미지를 64비트로 설정했는지 확인&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 466px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2452373F58E6EE1420&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2452373F58E6EE1420&quot; width=&quot;466&quot; height=&quot;385&quot; filename=&quot;20170403_153048.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;- 가상머신 호스트키 변경&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 550px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2534FA3F58E6EE142E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2534FA3F58E6EE142E&quot; width=&quot;550&quot; height=&quot;366&quot; filename=&quot;20170403_153114.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. 네트워크 설정&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// config 설정&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;cd /etc/sysconfig/network-scripts/&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// NAT&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;vi ifcfg-enp0s3&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;/p&gt;&lt;div style=&quot;background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;&quot;&gt;&lt;pre style=&quot;margin: 0; line-height: 125%&quot;&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;ONBOOT=yes&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// Bridge&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;vi ifcfg-enp0s3&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;/p&gt;&lt;div style=&quot;background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;&quot;&gt;&lt;pre style=&quot;margin: 0; line-height: 125%&quot;&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;ONBOOT=yes&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;IPADDR=[ip]&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;NETMASK=[netmask]&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;GATEWAY=[gateway]&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;DNS1=[dns]&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;DNS2=[dns]&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// network 재시작&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;service network restart&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;4. svn 설치&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 설치&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;yum install httpd subversion mod_dav_svn&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// config 설정&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;vi /etc/httpd/conf.modules.d/10-subversion.conf&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;/p&gt;&lt;div style=&quot;background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;&quot;&gt;&lt;pre style=&quot;margin: 0; line-height: 125%&quot;&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;LoadModule dav_svn_module modules/mod_dav_svn.so&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;LoadModule authz_svn_module modules/mod_authz_svn.so&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;LoadModule dontdothat_module modules/mod_dontdothat.so&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;

&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;&amp;lt;Location /svn&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;DAV svn&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;SVNParentPath /var/www/svn/&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;AuthType Basic&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;AuthName &quot;SVN Repository&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;AuthUserFile /etc/svn-auth-accounts&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;Require valid-user&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(136, 136, 136); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;&amp;lt;/Location&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 사용자 생성 및 비밀번호 설정&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;htpasswd -cm /etc/svn-auth-accounts [userid] // 최초&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;htpasswd -m /etc/svn-auth-accounts [userid] // 최초 이후&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// SVN 저장소 생성 및 설정&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;mkdir /var/www/svn&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;cd /var/www/svn/&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;svnadmin create [repositoryname]&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;chown [linuxuser].[linuxuser] [repositoryname]&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 권한 부여&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;chcon -R -t httpd_sys_content_t /var/www/svn/[repositoryname]&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;chcon -R -t httpd_sys_rw_content_t /var/www/svn/[repositoryname]&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 방화벽 설정&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;firewall-cmd --permanent --zone=public --add-port=80/tcp&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// apache(httpd) service 시작&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;systemctl restart httpd.service&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;systemctl enable httpd.service&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;5. svn에 https 적용&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// Mod SSL 설치&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;yum install mod_ssl&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 인증키 생성&lt;/p&gt;&lt;p&gt;// &amp;gt; &lt;a href=&quot;https://www.server-world.info/en/note?os=CentOS_7&amp;amp;p=ssl&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.server-world.info/en/note?os=CentOS_7&amp;amp;p=ssl&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;cd /etc/ssl/certs &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;// 기본 생성된 cert 경로&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;make housing.key&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;// key 생성&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;openssl rsa -in housing.key -out housing.key&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;// rsa 적용?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;make housing.csr&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;openssl x509 -in housing.csr -out housing.crt -req -signkey housing.key -days 3650&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// CentOS7 Apache - Configure SSL&amp;nbsp;&lt;/p&gt;&lt;p&gt;// &amp;gt; &lt;a href=&quot;http://serverworld.kr/585&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://serverworld.kr/585&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 수정부분은 링크 참고&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;vi /etc/httpd/conf.d/ssl.conf&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 아래 링크의 9.3 이후부분 적용&lt;/p&gt;&lt;p&gt;// &amp;gt; &lt;a href=&quot;http://uncle-code.iteye.com/blog/2257812&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://uncle-code.iteye.com/blog/2257812&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// vi /etc/httpd/conf.d/ssl.conf 은 위에서 했으니 무시&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;vi /etc/httpd/conf.modules.d/10-subversion.conf&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;vi /etc/httpd/conf/httpd.conf &amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 맨 아래에 다음줄 추가&lt;/p&gt;&lt;p&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;/p&gt;&lt;div style=&quot;background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;&quot;&gt;&lt;pre style=&quot;margin: 0; line-height: 125%&quot;&gt;&lt;span style=&quot;color: #888888&quot;&gt;LoadModule dav_svn_module modules/mod_dav_svn.so  &lt;/span&gt;
&lt;span style=&quot;color: #888888&quot;&gt;LoadModule authz_svn_module modules/mod_authz_svn.so  &lt;/span&gt;
&lt;span style=&quot;color: #888888&quot;&gt;LoadModule dontdothat_module modules/mod_dontdothat.so  &lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;systemctl restart httpd.service&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;?. X-Window 설치&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 683px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/215DB03F58E6EE162B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F215DB03F58E6EE162B&quot; width=&quot;683&quot; height=&quot;557&quot; filename=&quot;20170403_164817.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 설치&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;yum groupinstall &quot;X Window System&quot; &quot;Desktop&quot; &quot;Fonts&quot; &quot;Korean Support&quot;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;yum install gnome-classic-session gnome-terminal control-center&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 기존 default.target 해제&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;unlink /etc/systemd/system/default.target&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 새로운 default.target 연결&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 재부팅으로 확인&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;reboot&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;?. selinux on/off&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;setenforce 0 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;// 0 일 경우 disable, 1일경우 enable&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/260</guid>
      <comments>https://runicode.tistory.com/entry/CentOS-7-%EC%84%A4%EC%B9%98-svnhttps-%EC%A0%81%EC%9A%A9#entry260comment</comments>
      <pubDate>Fri, 31 Mar 2017 10:31:56 +0900</pubDate>
    </item>
    <item>
      <title>1일 프로젝트 : 구글 api 를 이용해서 음성인식 앱 만들기</title>
      <link>https://runicode.tistory.com/entry/1%EC%9D%BC-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B5%AC%EA%B8%80-api-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-%EC%9D%8C%EC%84%B1%EC%9D%B8%EC%8B%9D-%EC%95%B1-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;b&gt;&amp;gt;&amp;gt;&amp;gt; 09:00&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;계획짜기&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding: 10px;&quot;&gt;&lt;p&gt;&lt;b&gt;09:00 ~ 11:30&amp;nbsp;&lt;/b&gt;안드로이드 개발 따라하기 강좌 찾아 연습해보기&lt;/p&gt;&lt;p&gt;&lt;b&gt;13:00 ~ 15:00&amp;nbsp;&lt;/b&gt;아주 기본적인 형태의 앱을 만들어 내 폰에 얹어보기&lt;/p&gt;&lt;p&gt;&lt;b&gt;15:30 ~ 17:00&amp;nbsp;&lt;/b&gt;음성인식 api 연결해보기&lt;/p&gt;&lt;p&gt;&lt;b&gt;17:00 ~ 18:00&amp;nbsp;&lt;/b&gt;테스트&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;gt;&amp;gt;&amp;gt; 10:42&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;따라하기 강좌&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#footnote_258_1&quot; id=&quot;footnote_link_258_1&quot; onmouseover=&quot;tistoryFootnote.show(this, 258, 1)&quot; onmouseout=&quot;tistoryFootnote.hide(258, 1)&quot; style=&quot;color:#f9650d; font-family: Verdana, Sans-serif; display: inline;&quot;&gt;&lt;span style=&quot;display: none;&quot;&gt;[각주:&lt;/span&gt;1&lt;span style=&quot;display: none;&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; 하나 찾음.&lt;/p&gt;&lt;p&gt;갤럭시 s7이 인식이 안되서 블로그&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#footnote_258_2&quot; id=&quot;footnote_link_258_2&quot; onmouseover=&quot;tistoryFootnote.show(this, 258, 2)&quot; onmouseout=&quot;tistoryFootnote.hide(258, 2)&quot; style=&quot;color:#f9650d; font-family: Verdana, Sans-serif; display: inline;&quot;&gt;&lt;span style=&quot;display: none;&quot;&gt;[각주:&lt;/span&gt;2&lt;span style=&quot;display: none;&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;에서 해결방법 확인.&lt;/p&gt;&lt;p&gt;따라하면서 Hello World 앱에 올리는 거까지는 성공.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 540px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2343543458C2439C30&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2343543458C2439C30&quot; width=&quot;540&quot; height=&quot;960&quot; filename=&quot;KakaoTalk_20170310_151012552.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;실행화면&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;계획 변경&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding: 10px;&quot;&gt;&lt;p&gt;&lt;b&gt;09:00 ~ 11:30&amp;nbsp;&lt;/b&gt;아주 기본적인 형태의 앱을 만들어 내 폰에 얹어보기&lt;/p&gt;&lt;p&gt;&lt;b&gt;14:00 ~&amp;nbsp;&lt;/b&gt;&lt;b&gt;15:30&amp;nbsp;&lt;/b&gt;구글 음성인식 api 사용법 확인하기&lt;/p&gt;&lt;p&gt;&lt;b&gt;15:30 ~ 17:00&amp;nbsp;&lt;/b&gt;음성인식 api 연결해보기&lt;/p&gt;&lt;p&gt;&lt;b&gt;17:00 ~ 18:00&amp;nbsp;&lt;/b&gt;테스트&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;gt;&amp;gt;&amp;gt; 15:05&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;구글 스피치 사용 예 (코드 포함)&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#footnote_258_3&quot; id=&quot;footnote_link_258_3&quot; onmouseover=&quot;tistoryFootnote.show(this, 258, 3)&quot; onmouseout=&quot;tistoryFootnote.hide(258, 3)&quot; style=&quot;color:#f9650d; font-family: Verdana, Sans-serif; display: inline;&quot;&gt;&lt;span style=&quot;display: none;&quot;&gt;[각주:&lt;/span&gt;3&lt;span style=&quot;display: none;&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;위 소스 사용 중 추가 조사한 링크&lt;/p&gt;&lt;p&gt;&amp;nbsp; - FloatingActionButton 사용하기&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#footnote_258_4&quot; id=&quot;footnote_link_258_4&quot; onmouseover=&quot;tistoryFootnote.show(this, 258, 4)&quot; onmouseout=&quot;tistoryFootnote.hide(258, 4)&quot; style=&quot;color:#f9650d; font-family: Verdana, Sans-serif; display: inline;&quot;&gt;&lt;span style=&quot;display: none;&quot;&gt;[각주:&lt;/span&gt;4&lt;span style=&quot;display: none;&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; - R.menu.menu_main 의 menu 에러&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#footnote_258_5&quot; id=&quot;footnote_link_258_5&quot; onmouseover=&quot;tistoryFootnote.show(this, 258, 5)&quot; onmouseout=&quot;tistoryFootnote.hide(258, 5)&quot; style=&quot;color:#f9650d; font-family: Verdana, Sans-serif; display: inline;&quot;&gt;&lt;span style=&quot;display: none;&quot;&gt;[각주:&lt;/span&gt;5&lt;span style=&quot;display: none;&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 540px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2145063458C2439D17&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2145063458C2439D17&quot; width=&quot;540&quot; height=&quot;960&quot; filename=&quot;KakaoTalk_20170310_151013081.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;실행화면&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 540px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2362823458C2439D16&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2362823458C2439D16&quot; width=&quot;540&quot; height=&quot;960&quot; filename=&quot;KakaoTalk_20170310_151022223.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;실행 후 인식 화면&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;button type=&quot;button&quot; class=&quot;btn_more&quot; id=&quot;more258_0&quot; data-id=&quot;258_0&quot;&gt;더보기&lt;/button&gt;&lt;div class=&quot;moreless_content&quot; id=&quot;content258_0&quot; style=&quot;display: none;&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less258_0&quot; data-id=&quot;258_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;
  &lt;p class=&quot;txt_view&quot;&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/265A253958C259D532&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;MyApplication.z01&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/2465013658C259D509&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;MyApplication.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/p&gt;
&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less258_0&quot; data-id=&quot;258_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
  &lt;ol class=&quot;footnotes&quot;&gt;
    &lt;li id=&quot;footnote_258_1&quot;&gt;http://blog.naver.com/sbd38/220781971594 &lt;a href=&quot;#footnote_link_258_1&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;footnote_258_2&quot;&gt;http://mainia.tistory.com/4847 &lt;a href=&quot;#footnote_link_258_2&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;footnote_258_3&quot;&gt;http://jeongchul.tistory.com/339 &lt;a href=&quot;#footnote_link_258_3&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;footnote_258_4&quot;&gt;http://mommoo.tistory.com/39 &lt;a href=&quot;#footnote_link_258_4&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;footnote_258_5&quot;&gt;http://blog.naver.com/jinnabeaver/220865581019 &lt;a href=&quot;#footnote_link_258_5&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/258</guid>
      <comments>https://runicode.tistory.com/entry/1%EC%9D%BC-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B5%AC%EA%B8%80-api-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-%EC%9D%8C%EC%84%B1%EC%9D%B8%EC%8B%9D-%EC%95%B1-%EB%A7%8C%EB%93%A4%EA%B8%B0#entry258comment</comments>
      <pubDate>Fri, 10 Mar 2017 10:49:01 +0900</pubDate>
    </item>
    <item>
      <title>간단한 웹서버 구축하기</title>
      <link>https://runicode.tistory.com/entry/%EA%B0%84%EB%8B%A8%ED%95%9C-%EC%9B%B9%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0</link>
      <description>&lt;p style=&quot;text-align: left;&quot;&gt;파이썬이라면 다음 명령어로 현재 사용중인 컴퓨터를 간단히 웹서버로 만들 수 있습니다.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;2.x 기준&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding: 10px;&quot;&gt;&lt;p style=&quot;text-align: left;&quot;&gt;python -m SimpleHTTPServer &lt;i&gt;[port]&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;3.x 기준&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding: 10px;&quot;&gt;&lt;p style=&quot;text-align: left;&quot;&gt;python -m http.server &lt;i&gt;[port]&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;실행한 화면&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 677px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/277BF64058C0A4651C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F277BF64058C0A4651C&quot; width=&quot;677&quot; height=&quot;218&quot; filename=&quot;capt1.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;웹서버에 접근한 화면&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 683px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/25162E4058C0A4661B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F25162E4058C0A4661B&quot; width=&quot;683&quot; height=&quot;263&quot; filename=&quot;capt2.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/257</guid>
      <comments>https://runicode.tistory.com/entry/%EA%B0%84%EB%8B%A8%ED%95%9C-%EC%9B%B9%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0#entry257comment</comments>
      <pubDate>Thu, 9 Mar 2017 09:45:24 +0900</pubDate>
    </item>
    <item>
      <title>jQuery contextMenu 사용 예</title>
      <link>https://runicode.tistory.com/entry/jQuery-contextMenu-%EC%82%AC%EC%9A%A9-%EC%98%88</link>
      <description>&lt;p&gt;&lt;b&gt;jQuery contextMenu&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&amp;lt;link href=&quot;&amp;lt;c:url value='/js/map/contexmenu/jquery.contextMenu.css'/&amp;gt;&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&amp;lt;script src=&quot;&amp;lt;c:url value='/js/map/contexmenu/jquery.contextMenu.js'/&amp;gt;&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&amp;lt;script src=&quot;&amp;lt;c:url value='/js/map/contexmenu/jquery.ui.position.min.js'/&amp;gt;&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;$.contextMenu({&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; selector: '.test', // class&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; callback: function(key, options) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var m = &quot;clicked: &quot; + key;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; window.console &amp;amp;&amp;amp; console.log(m) || alert(m);&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items: {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;edit&quot;: {name: &quot;Edit&quot;, icon: &quot;edit&quot;},&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;cut&quot;: {name: &quot;Cut&quot;, icon: &quot;cut&quot;},&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;copy: {name: &quot;Copy&quot;, icon: &quot;copy&quot;},&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;paste&quot;: {name: &quot;Paste&quot;, icon: &quot;paste&quot;},&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;delete&quot;: {name: &quot;Delete&quot;, icon: &quot;delete&quot;},&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sep1&quot;: &quot;---------&quot;,&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;quit&quot;: {name: &quot;Quit&quot;, icon: function(){&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 'context-menu-icon context-menu-icon-quit';&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }}&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; });&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 512px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2627434458B4D9E532&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2627434458B4D9E532&quot; width=&quot;512&quot; height=&quot;480&quot; filename=&quot;small.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;ref : https://swisnl.github.io/jQuery-contextMenu/&lt;/p&gt;&lt;link href=&quot;&amp;lt;c:url value='/js/map/contexmenu/jquery.contextMenu.css'/&amp;gt;&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그나저나 소스코드 포스팅할 때 쓸 도구 좀 알아봐야 할 듯&lt;/p&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/254</guid>
      <comments>https://runicode.tistory.com/entry/jQuery-contextMenu-%EC%82%AC%EC%9A%A9-%EC%98%88#entry254comment</comments>
      <pubDate>Tue, 28 Feb 2017 11:02:55 +0900</pubDate>
    </item>
    <item>
      <title>크롬에서 focus()가 동작하지 않을 때</title>
      <link>https://runicode.tistory.com/entry/%ED%81%AC%EB%A1%AC%EC%97%90%EC%84%9C-focus%EA%B0%80-%EB%8F%99%EC%9E%91%ED%95%98%EC%A7%80-%EC%95%8A%EC%9D%84-%EB%95%8C</link>
      <description>&lt;p&gt;asis :&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class=&quot;default prettyprint prettyprinted&quot; style=&quot;margin-top: 0px; margin-bottom: 1em; padding: 5px; border: 0px; width: auto; max-height: 600px; overflow: auto; font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; background-color: rgb(239, 240, 241); color: rgb(57, 51, 24); word-wrap: normal;&quot;&gt;&lt;code style=&quot;margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; white-space: inherit;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;&quot;#one&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;&quot;input&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(16, 16, 148);&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(16, 16, 148);&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;&quot;#one&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;val&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;length &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; $&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;&quot;#two&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;focus&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;});&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;tobe :&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class=&quot;default prettyprint prettyprinted&quot; style=&quot;margin-top: 0px; margin-bottom: 1em; padding: 5px; border: 0px; width: auto; max-height: 600px; overflow: auto; font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; background-color: rgb(239, 240, 241); color: rgb(57, 51, 24); word-wrap: normal;&quot;&gt;&lt;code style=&quot;margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; white-space: inherit;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;&quot;#one&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;&quot;input&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(16, 16, 148);&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(16, 16, 148);&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;&quot;#one&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;val&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;length &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; 
        setTimeout&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(16, 16, 148);&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(){&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;
            $&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;&quot;#two&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;focus&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;},&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(125, 39, 39);&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(48, 51, 54);&quot;&gt;});&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;크롬 브라우저의 속도로 인하여 생기는 버그로 판단되며 setTimeOut로 최소한의 지연을 주어 오작동을 방지한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Select2 에서도 또한 동일한 버그가 있어 select2.js 를 수정하였다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Select2 4.0.3 / 1387L&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;asis :&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; container.on('close', function () {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // When the dropdown is closed, aria-expanded=&quot;false&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; self.$selection.attr('aria-expanded', 'false');&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; self.$selection.removeAttr('aria-activedescendant');&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; self.$selection.removeAttr('aria-owns');&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; self.$selection.focus();&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; self._detachCloseHandler(container);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; });&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;tobe :&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; container.on('close', function () {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // When the dropdown is closed, aria-expanded=&quot;false&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; self.$selection.attr('aria-expanded', 'false');&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; self.$selection.removeAttr('aria-activedescendant');&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; self.$selection.removeAttr('aria-owns');&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;setTimeout(function(){ &lt;/span&gt;self.$selection.focus(); &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;}, 1);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; self._detachCloseHandler(container);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; });&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ref :&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/17384464/jquery-focus-not-working-in-chrome&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://stackoverflow.com/questions/17384464/jquery-focus-not-working-in-chrome&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Work</category>
      <author>runicode</author>
      <guid isPermaLink="true">https://runicode.tistory.com/253</guid>
      <comments>https://runicode.tistory.com/entry/%ED%81%AC%EB%A1%AC%EC%97%90%EC%84%9C-focus%EA%B0%80-%EB%8F%99%EC%9E%91%ED%95%98%EC%A7%80-%EC%95%8A%EC%9D%84-%EB%95%8C#entry253comment</comments>
      <pubDate>Mon, 27 Feb 2017 14:30:17 +0900</pubDate>
    </item>
  </channel>
</rss>