<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>스터디 용 블로그</title>
    <link>https://wowstudy.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 25 Jul 2026 21:29:22 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>워후</managingEditor>
    <item>
      <title>[Java8] CompletableFuture에 대한 이해 및 사용법</title>
      <link>https://wowstudy.tistory.com/80</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f15f5f;&quot;&gt;1.&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;CompletableFuture에 대한 이해&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;[&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Future&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;의 단점 및 한계&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;]&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java5에 Future가 추가되면서 비동기 작업에 대한 결과값을 반환 받을 수 있게 되었다. 하지만 Future는 다음과 같은 한계점이 있었다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부에서 완료시킬 수 없고, get의 타임아웃 설정으로만&lt;span&gt;&amp;nbsp;&lt;/span&gt;완료 가능&lt;/li&gt;
&lt;li&gt;블로킹 코드(get)를 통해서만 이후의 결과를 처리할 수 있음&lt;/li&gt;
&lt;li&gt;여러 Future를 조합할 수 없음 ex) 회원 정보를 가져오고, 알림을 발송하는 등&lt;/li&gt;
&lt;li&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;Future는 외부에서 작업을 완료시킬 수 없고, 작업 완료는 오직 get 호출 시에 타임아웃으로만 가능하다. 또한 비동기 작업의 응답에 추가 작업을 하려면 get을 호출해야 하는데, get은 블로킹 호출이므로 좋지 않다. 또한 여러 Future들을 조합할 수도 없으며, 예외가 발생한 경우에 이를 위한 예외처리도 불가능하다. 그래서 Java8에서는 이러한 문제를 모두 해결한 CompletableFuture가 등장하게 되었다.&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;[&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Completable&lt;/span&gt;Future 인터페이스&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;]&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html&quot;&gt;CompletableFuture&lt;/a&gt;는 기존의 Future를 기반으로 외부에서 완료시킬 수 있어서 CompletableFuture라는 이름을 갖게 되었다. Future 외에도&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletionStage.html&quot;&gt;CompletionStage&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;인터페이스도 구현하고 있는데, CompletionStage는 작업들을 중첩시키거나 완료 후 콜백을 위해 추가되었다.&amp;nbsp;예를 들어 Future에서는 불가능했던 &quot;몇 초 이내에 응답이 안 오면 기본값을 반환한다.&quot; 와 같은 작업이 가능해진 것이다. 즉, Future의 진화된 형태로써&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;외부에서 작업을 완료시킬 수 있을 뿐만 아니라 콜백 등록 및 Future 조합 등이 가능&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f15f5f;&quot;&gt;2.&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;CompletableFuture의 기능들 및 예시코드&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;[&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Future&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;의 단점 및 한계&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;]&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CompletableFuture가 갖는 작업의 종류는 크게 다음과 같이 구분할 수 있는데, 이에 대해서는 자세히 코드로 살펴보도록 하자.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비동기 작업 실행&lt;/li&gt;
&lt;li&gt;작업 콜백&lt;/li&gt;
&lt;li&gt;작업 조합&lt;/li&gt;
&lt;li&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;비동기 작업 실행&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;runAsync
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반환값이 없는 경우&lt;/li&gt;
&lt;li&gt;비동기로 작업 실행 콜&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;supplyAsync
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반환값이 있는 경우&lt;/li&gt;
&lt;li&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;runAsync는 반환 값이 없으므로 Void 타입이며, 아래의 코드를 실행해보면 future가 별도의 쓰레드에서 실행됨을 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502572&quot; class=&quot;reasonml&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
void runAsync() throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;Void&amp;gt; future = CompletableFuture.runAsync(() -&amp;gt; {
        System.out.println(&quot;Thread: &quot; + Thread.currentThread().getName());
    });

    future.get();
    System.out.println(&quot;Thread: &quot; + Thread.currentThread().getName());
}&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;supplyAsync는 runAsync와 달리 반환값이 존재한다. 그래서 비동기 작업의 결과를 받아올 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502573&quot; class=&quot;reasonml&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
void supplyAsync() throws ExecutionException, InterruptedException {

    CompletableFuture&amp;lt;String&amp;gt; future = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;Thread: &quot; + Thread.currentThread().getName();
    });

    System.out.println(future.get());
    System.out.println(&quot;Thread: &quot; + Thread.currentThread().getName());
}&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;&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;runAsync와 supplyAsync는 기본적으로 자바7에 추가된 ForkJoinPool의 commonPool()을 사용해 작업을 실행할 쓰레드를 쓰레드 풀로부터 얻어 실행시킨다. 만약 원하는 쓰레드 풀을 사용하려면, ExecutorService를 파라미터로 넘겨주면 된다. 직접 비동기 작업에 대한 코드를 실행해보려면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/MangKyu/java-concurrency/blob/master/src/test/java/com/mangkyu/concurrency/java8/CompletableFutureRunTest.java&quot;&gt;깃허브&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;작업 콜백&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;thenApply
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반환 값을 받아서 다른 값을 반환함&lt;/li&gt;
&lt;li&gt;함수형 인터페이스 Function을 파라미터로 받음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;thenAccpet
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반환 값을 받아 처리하고 값을 반환하지 않음&lt;/li&gt;
&lt;li&gt;함수형 인터페이스 Consumer를 파라미터로 받음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;thenRun
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반환 값을 받지 않고 다른 작업을 실행함&lt;/li&gt;
&lt;li&gt;함수형 인터페이스 Runnable을 파라미터로 받음&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java8에는 다양한 함수형 인터페이스들이 추가되었는데, CompletableFuture 역시 이들을 콜백으로 등록할 수 있게 한다. 그래서 비동기 실행이 끝난 후에 전달 받은 작업 콜백을 실행시켜주는데,&amp;nbsp;thenApply는 값을 받아서 다른 값을 반환시켜주는 콜백이다.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502574&quot; class=&quot;livescript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
void thenApply() throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;String&amp;gt; future = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;Thread: &quot; + Thread.currentThread().getName();
    }).thenApply(s -&amp;gt; {
        return s.toUpperCase();
    });

    System.out.println(future.get());
}&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;thenAccept는 반환 값을 받아서 사용하고, 값을 반환하지는 않는 콜백이다.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502574&quot; class=&quot;livescript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
void thenAccept() throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;Void&amp;gt; future = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;Thread: &quot; + Thread.currentThread().getName();
    }).thenAccept(s -&amp;gt; {
        System.out.println(s.toUpperCase());
    });

    future.get();
}&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;thenRun은 반환 값을 받지 않고, 그냥 다른 작업을 실행하는 콜백이다. 작업 콜백 관련 추가 예시 코드들은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/MangKyu/java-concurrency/blob/master/src/test/java/com/mangkyu/concurrency/java8/CompletableFutureCallbackTest.java&quot;&gt;깃허브&lt;/a&gt;에서 참고하도록 하자.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502574&quot; class=&quot;livescript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
void thenRun() throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;Void&amp;gt; future = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;Thread: &quot; + Thread.currentThread().getName();
    }).thenRun(() -&amp;gt; {
        System.out.println(&quot;Thread: &quot; + Thread.currentThread().getName());
    });

    future.get();
}&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;작업 조합&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;thenCompose
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 작업이 이어서 실행하도록 조합하며, 앞선 작업의 결과를 받아서 사용할 수 있음&lt;/li&gt;
&lt;li&gt;함수형 인터페이스 Function을 파라미터로 받음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;thenCombine
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 작업을 독립적으로 실행하고, 둘 다 완료되었을 때 콜백을 실행함&lt;/li&gt;
&lt;li&gt;함수형 인터페이스 Function을 파라미터로 받음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;allOf
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 작업들을 동시에 실행하고, 모든 작업 결과에 콜백을 실행함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;anyOf
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&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;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;아래에서 살펴볼 thenCompose와 thenCombine 예제의 실행 결과는 같지만 동작 과정은 다르다. 먼저 thenCompose를 살펴보면 hello Future가 먼저 실행된 후에 반환된 값을 매개변수로 다음 Future를 실행한다.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502575&quot; class=&quot;livescript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
void thenCompose() throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;String&amp;gt; hello = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;Hello&quot;;
    });

    // Future 간에 연관 관계가 있는 경우
    CompletableFuture&amp;lt;String&amp;gt; future = hello.thenCompose(this::mangKyu);
    System.out.println(future.get());
}

private CompletableFuture&amp;lt;String&amp;gt; mangKyu(String message) {
    return CompletableFuture.supplyAsync(() -&amp;gt; {
        return message + &quot; &quot; + &quot;MangKyu&quot;;
    });
}&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;&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;하지만 thenCombine은 각각의 작업들이 독립적으로 실행되고, 얻어진 두 결과를 조합해서 작업을 처리한다.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502575&quot; class=&quot;livescript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
void thenCombine() throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;String&amp;gt; hello = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;Hello&quot;;
    });

    CompletableFuture&amp;lt;String&amp;gt; mangKyu = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;MangKyu&quot;;
    });

    CompletableFuture&amp;lt;String&amp;gt; future = hello.thenCombine(mangKyu, (h, w) -&amp;gt; h + &quot; &quot; + w);
    System.out.println(future.get());
}&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;&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;그 다음은 allOf와 anyOf를 살펴볼 차례이다. 아래의 코드를 실행해보면 모든 결과에 콜백이 적용됨을 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502576&quot; class=&quot;livescript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
void allOf() throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;String&amp;gt; hello = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;Hello&quot;;
    });

    CompletableFuture&amp;lt;String&amp;gt; mangKyu = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;MangKyu&quot;;
    });

    List&amp;lt;CompletableFuture&amp;lt;String&amp;gt;&amp;gt; futures = List.of(hello, mangKyu);

    CompletableFuture&amp;lt;List&amp;lt;String&amp;gt;&amp;gt; result = CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()]))
            .thenApply(v -&amp;gt; futures.stream().
                    map(CompletableFuture::join).
                    collect(Collectors.toList()));

    result.get().forEach(System.out::println);
}&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면에 anyOf의 경우에는 가장 빨리 끝난 1개의 작업에 대해서만 콜백이 실행됨을 확인할 수 있다. 관련 코드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/MangKyu/java-concurrency/blob/master/src/test/java/com/mangkyu/concurrency/java8/CompletableFutureComposeTest.java&quot;&gt;깃허브&lt;/a&gt;를 참고하도록 하자.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502576&quot; class=&quot;livescript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
void anyOf() throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;String&amp;gt; hello = CompletableFuture.supplyAsync(() -&amp;gt; {
        try {
            Thread.sleep(1000L);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

        return &quot;Hello&quot;;
    });

    CompletableFuture&amp;lt;String&amp;gt; mangKyu = CompletableFuture.supplyAsync(() -&amp;gt; {
        return &quot;MangKyu&quot;;
    });

    CompletableFuture&amp;lt;Void&amp;gt; future = CompletableFuture.anyOf(hello, mangKyu).thenAccept(System.out::println);
    future.get();
}&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;예외 처리&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;exeptionally
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;발생한 에러를 받아서 예외를 처리함&lt;/li&gt;
&lt;li&gt;함수형 인터페이스 Function을 파라미터로 받음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;handle, handleAsync
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(결과값, 에러)를 반환받아 에러가 발생한 경우와 아닌 경우 모두를 처리할 수 있음&lt;/li&gt;
&lt;li&gt;함수형 인터페이스 BiFunction을 파라미터로 받음&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각에 대해 throw하는 경우와 throw하지 않는 경우를 모두 실행시켜보도록 하자. 아래의 @ParameterizedTest는 동일한 테스트를 다른 파라미터로 여러 번 실행할 수 있도록 도와주는데, 실행해보면 throw 여부에 따라 실행 결과가 달라짐을 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1669184502577&quot; class=&quot;livescript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@ParameterizedTest
@ValueSource(booleans =  {true, false})
void exceptionally(boolean doThrow) throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;String&amp;gt; future = CompletableFuture.supplyAsync(() -&amp;gt; {
        if (doThrow) {
            throw new IllegalArgumentException(&quot;Invalid Argument&quot;);
        }

        return &quot;Thread: &quot; + Thread.currentThread().getName();
    }).exceptionally(e -&amp;gt; {
        return e.getMessage();
    });

    System.out.println(future.get());
}

java.lang.IllegalArgumentException: Invalid Argument
// Thread: ForkJoinPool.commonPool-worker-19&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 handle을 실행해보면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;throw 여부에 따라 실행 결과가 달라짐을 확인할 수 있다. 예외 처리 관련 예제 코드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/MangKyu/java-concurrency/blob/master/src/test/java/com/mangkyu/concurrency/java8/CompletableFutureExceptionTest.java&quot;&gt;깃허브&lt;/a&gt;에 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669184502577&quot; class=&quot;livescript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@ParameterizedTest
@ValueSource(booleans =  {true, false})
void handle(boolean doThrow) throws ExecutionException, InterruptedException {
    CompletableFuture&amp;lt;String&amp;gt; future = CompletableFuture.supplyAsync(() -&amp;gt; {
        if (doThrow) {
            throw new IllegalArgumentException(&quot;Invalid Argument&quot;);
        }

        return &quot;Thread: &quot; + Thread.currentThread().getName();
    }).handle((result, e) -&amp;gt; {
        return e == null
                ? result
                : e.getMessage();
    });

    System.out.println(future.get());
}&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;&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;그 외에도 아직 완료되지 않았으면 get을 바로 호출하고, 실패 시에 주어진 exception을 던지게 하는 completeExceptionally와 강제로 예외를 발생시키는 obtrudeException과 예외적으로 완료되었는지를 반환하는 isCompletedExceptionally 등과 같은 기능들도 있으니, 관련해서는 추가적으로 살펴보도록 하자.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관련 포스팅&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;&lt;a href=&quot;https://mangkyu.tistory.com/258&quot;&gt;Thread와&amp;nbsp;Runnable에&amp;nbsp;대한&amp;nbsp;이해&amp;nbsp;및&amp;nbsp;사용법&lt;/a&gt;&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;&lt;a href=&quot;https://mangkyu.tistory.com/259&quot;&gt;Callable,&amp;nbsp;Future&amp;nbsp;및&amp;nbsp;Executors,&amp;nbsp;Executor,&amp;nbsp;ExecutorService,&amp;nbsp;ScheduledExecutorService에&amp;nbsp;대한&amp;nbsp;이해&amp;nbsp;및&amp;nbsp;사용법&lt;/a&gt;&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;CompletableFuture에&amp;nbsp;대한&amp;nbsp;이해&amp;nbsp;및&amp;nbsp;사용법&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ol&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;출처 - &lt;a href=&quot;https://mangkyu.tistory.com/263&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mangkyu.tistory.com/263&lt;/a&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;</description>
      <category>JAVA</category>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/80</guid>
      <comments>https://wowstudy.tistory.com/80#entry80comment</comments>
      <pubDate>Wed, 23 Nov 2022 15:22:12 +0900</pubDate>
    </item>
    <item>
      <title>Sublime Text 3 기본 설정</title>
      <link>https://wowstudy.tistory.com/79</link>
      <description>&lt;h2 style=&quot;outline: 0px; transition: all 0.3s ease 0s; margin: 0px 0px 15px; position: relative; padding: 0px; border: 0px; vertical-align: baseline; background-image: initial; background-position: 0px 0px; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: rgb(17, 17, 17); font-family: Montserrat;&quot;&gt;1.사용자 설정&lt;/h2&gt;&lt;p&gt;&lt;kbd style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 2px 4px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(51, 51, 51); font-size: 13.5px; color: rgb(255, 255, 255); border-radius: 3px; box-shadow: rgba(0, 0, 0, 0.25) 0px -1px 0px inset;&quot;&gt;Preferences&amp;nbsp;&lt;i style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&amp;gt;&lt;/i&gt;&amp;nbsp;Settings&lt;/kbd&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&amp;nbsp;메뉴를 선택 후 아래 내용을 참고하여 작성합니다.&lt;/span&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;입력 양식은 JSON 입니다.&lt;/span&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;/p&gt;&lt;pre style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(255, 255, 255); color: rgb(94, 94, 94); font-size: 15px;&quot;&gt;&lt;code class=&quot;json hljs&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0.5em; border: 0px; vertical-align: baseline; background: rgb(35, 36, 31); font-size: 13.5px; color: rgb(248, 248, 242); border-radius: 4px; display: block; overflow-x: auto; text-size-adjust: none;&quot;&gt;{
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;always_show_minimap_viewport&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;bold_folder_labels&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;caret_style&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(230, 219, 116);&quot;&gt;&quot;phase&quot;&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;color_scheme&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(230, 219, 116);&quot;&gt;&quot;Monokai.sublime-color-scheme&quot;&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;default_line_ending&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(230, 219, 116);&quot;&gt;&quot;unix&quot;&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;draw_minimap_border&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;draw_white_space&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(230, 219, 116);&quot;&gt;&quot;all&quot;&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;ensure_newline_at_eof_on_save&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;fade_fold_buttons&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;false&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; font-size: 18pt;&quot;&gt;&quot;font_face&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: rgb(255, 187, 0); font-size: 18pt;&quot;&gt;&quot;Bitstream Vera Sans Mono&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;hljs-string&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(230, 219, 116);&quot;&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;font_size&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-number&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;13&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;highlight_line&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;highlight_modified_tabs&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;indent_guide_options&quot;&lt;/span&gt;:
    [
        &lt;span class=&quot;hljs-string&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(230, 219, 116);&quot;&gt;&quot;draw_normal&quot;&lt;/span&gt;,
        &lt;span class=&quot;hljs-string&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(230, 219, 116);&quot;&gt;&quot;draw_active&quot;&lt;/span&gt;
    ],
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;line_padding_bottom&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-number&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;2&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;line_padding_top&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-number&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;2&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;overlay_scroll_bars&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(230, 219, 116);&quot;&gt;&quot;enabled&quot;&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;rulers&quot;&lt;/span&gt;:
    [
        &lt;span class=&quot;hljs-number&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;80&lt;/span&gt;,
        &lt;span class=&quot;hljs-number&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;120&lt;/span&gt;
    ],
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;show_encoding&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;show_line_endings&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;tab_size&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-number&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;theme&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(230, 219, 116);&quot;&gt;&quot;Default.sublime-theme&quot;&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;translate_tabs_to_spaces&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;trim_trailing_white_space_on_save&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;,
    &lt;span class=&quot;hljs-attr&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&quot;word_wrap&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-literal&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; color: rgb(174, 129, 255);&quot;&gt;true&lt;/span&gt;
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;outline: 0px; transition: all 0.3s ease 0s; margin: 0px 0px 15px; position: relative; padding: 0px; border: 0px; vertical-align: baseline; background-image: initial; background-position: 0px 0px; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: rgb(17, 17, 17); font-family: Montserrat;&quot;&gt;설정 파일 항목 설명&lt;/h3&gt;&lt;table class=&quot;table&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background-image: initial; background-position: 0px 0px; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; display: block; overflow-x: auto; border-collapse: collapse; width: 728px; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;thead style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;th style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px rgb(76, 175, 80); text-align: left; color: white;&quot;&gt;항목&lt;/th&gt;&lt;th style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px rgb(76, 175, 80); text-align: left; color: white;&quot;&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;always_show_minimap_viewport&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;미니맵에서 현재 위치 시각화하기&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;bold_folder_labels&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;true(폴더 굵게 표시) / false(폴더 굵게 표시)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;caret_style&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;커서 스타일(&quot;solid&quot;,&quot;wide&quot;,&quot;blink&quot;, &quot;phase&quot;, &quot;smooth&quot;)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;color_scheme&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;문자 색상 테마&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;default_line_ending&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;줄바꿈 문자 형식 지정(system, windows, unix)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;draw_minimap_border&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;미니맵 현재 위치 시각화에 테두리 표기하기&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;draw_white_space&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;탭, 공백 시각화하기&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;ensure_newline_at_eof_on_save&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;저장 시 문서 마지막 줄에 빈 줄없으면 추가&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;fade_fold_buttons&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;true(코드 접기 미 사용) / false(코드 접기 사용)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;font_face&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;글꼴&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;font_size&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;글꼴 크기&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;highlight_line&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;현재 줄 강조&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;highlight_modified_tabs&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;변경된 파일 탭 색상 표시 true/false&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;indent_guide_options&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;들여 쓰기 선 표시(draw_noraml: 기본, draw_active: 현재 라인 기준)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;line_padding_bottom&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;줄 간격 하단 여백&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;line_padding_top&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;줄 간격 상단 여백&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;overlay_scroll_bars&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;스크롤 바 표시 방법(system, disabled)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;rulers&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;지정한 가로 문자열 위치에 라인 표시&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;show_encoding&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;상태 표시 줄에 파일 문자 코드 표시&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;show_line_endings&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;상태 표시 줄에 파일 개행 코드 표시&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;teb_size&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;탭 간격&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;theme&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;레이아웃 테마&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px; height: 34px;&quot;&gt;translate_tabs_to_spaces&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px; height: 34px;&quot;&gt;true(스페이스) / false(탭)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(242, 242, 242);&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;trim_trailing_white_space_on_save&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;저장 시 줄끝 공백 제거&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;word_wrap&lt;/td&gt;&lt;td style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 8px; border-width: 0px 0px 1px; border-top-style: initial; border-right-style: initial; border-bottom-style: solid; border-left-style: initial; border-top-color: initial; border-right-color: initial; border-bottom-color: rgb(221, 221, 221); border-left-color: initial; border-image: initial; vertical-align: baseline; background: 0px 0px;&quot;&gt;true(자동 줄 바꿈 사용) / false(자동 줄 바꿈 미 사용)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;outline: 0px; transition: all 0.3s ease 0s; margin: 0px 0px 15px; position: relative; padding: 0px; border: 0px; vertical-align: baseline; background-image: initial; background-position: 0px 0px; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: rgb(17, 17, 17); font-family: Montserrat;&quot;&gt;2. Package Control 설치&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;패키지를 사용하기 위해서는 우선 패키지 컨트롤러를 설치해야 합니다.&lt;/span&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;설치하기 위해서는 콘솔창에 파이썬(Python) 코드를 입력하면 됩니다.&lt;/span&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;콘솔창은&amp;nbsp;&lt;/span&gt;&lt;kbd style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 2px 4px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(51, 51, 51); font-size: 13.5px; color: rgb(255, 255, 255); border-radius: 3px; box-shadow: rgba(0, 0, 0, 0.25) 0px -1px 0px inset;&quot;&gt;Ctrl&amp;nbsp;&lt;i style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;+&lt;/i&gt;&amp;nbsp;`&lt;/kbd&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&amp;nbsp;혹은&amp;nbsp;&lt;/span&gt;&lt;kbd style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 2px 4px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(51, 51, 51); font-size: 13.5px; color: rgb(255, 255, 255); border-radius: 3px; box-shadow: rgba(0, 0, 0, 0.25) 0px -1px 0px inset;&quot;&gt;View&amp;nbsp;&lt;i style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&amp;gt;&lt;/i&gt;&amp;nbsp;Show Console&lt;/kbd&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&amp;nbsp;메뉴에서 확인 가능하며 콘솔창은 하단에 표시됩니다.&lt;/span&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;설치 코드는 아래 사이트에서 확인 가능합니다.&lt;/span&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;a href=&quot;https://sublime.wbond.net/installation&quot; target=&quot;_blank&quot; style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background-image: initial; background-position: 0px 0px; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: rgb(0, 87, 161); font-family: Montserrat; font-size: 15px;&quot;&gt;https://sublime.wbond.net/installation&lt;/a&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;설치 코드는 수시로 수정되고 있기 때문에 필요시 위 사이트를 방문하는게 좋습니다.&lt;/span&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;실행은&amp;nbsp;&lt;/span&gt;&lt;kbd style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 2px 4px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(51, 51, 51); font-size: 13.5px; color: rgb(255, 255, 255); border-radius: 3px; box-shadow: rgba(0, 0, 0, 0.25) 0px -1px 0px inset;&quot;&gt;Preferences&amp;nbsp;&lt;i style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;&amp;gt;&lt;/i&gt;&amp;nbsp;Package Control&lt;/kbd&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&amp;nbsp;혹은&amp;nbsp;&lt;/span&gt;&lt;kbd style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 2px 4px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(51, 51, 51); font-size: 13.5px; color: rgb(255, 255, 255); border-radius: 3px; box-shadow: rgba(0, 0, 0, 0.25) 0px -1px 0px inset;&quot;&gt;Ctrl&amp;nbsp;&lt;i style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;+&lt;/i&gt;&amp;nbsp;Shift&amp;nbsp;&lt;i style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px;&quot;&gt;+&lt;/i&gt;&amp;nbsp;p&lt;/kbd&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&amp;nbsp;실행 후 입력 창에서&amp;nbsp;&lt;/span&gt;&lt;kbd style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 2px 4px; border: 0px; vertical-align: baseline; background: 0px 0px rgb(51, 51, 51); font-size: 13.5px; color: rgb(255, 255, 255); border-radius: 3px; box-shadow: rgba(0, 0, 0, 0.25) 0px -1px 0px inset;&quot;&gt;Package Control:Install Package&lt;/kbd&gt;&lt;span style=&quot;color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&amp;nbsp;선택 후에 원하는 패키지를 선택하여 설치한다.&lt;/span&gt;&lt;br style=&quot;outline: 0px; transition: all 0.3s ease 0s; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px 2.5em; border: 0px; vertical-align: baseline; background-image: initial; background-position: 0px 0px; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; list-style: none; margin: 0.5em 0px; line-height: 1.5; color: rgb(94, 94, 94); font-family: Montserrat; font-size: 15px;&quot;&gt;&lt;li style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; list-style: none; margin: 5px 0px; line-height: 1.5;&quot;&gt;List Package: 설치된 패키지 목록 확인&lt;/li&gt;&lt;li style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; list-style: none; margin: 5px 0px; line-height: 1.5;&quot;&gt;Install Package: 패키지 설치&lt;/li&gt;&lt;li style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; list-style: none; margin: 5px 0px; line-height: 1.5;&quot;&gt;Remove Package: 패키지 삭제&lt;/li&gt;&lt;li style=&quot;outline: 0px; transition: all 0.3s ease 0s; padding: 0px; border: 0px; vertical-align: baseline; background: 0px 0px; list-style: none; margin: 5px 0px; line-height: 1.5;&quot;&gt;Update Package: 패키지 업데이트&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;출처 :&amp;nbsp;https://blog.gaerae.com/2014/03/sublime-text-3-default-settings.html&lt;/p&gt;</description>
      <category>유틸</category>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/79</guid>
      <comments>https://wowstudy.tistory.com/79#entry79comment</comments>
      <pubDate>Mon, 19 Nov 2018 13:24:57 +0900</pubDate>
    </item>
    <item>
      <title>Tortoise SVN 설치 및 기본사용법</title>
      <link>https://wowstudy.tistory.com/78</link>
      <description>&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;추가 참고 -&amp;nbsp;http://mobilegen.tistory.com/18&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;소스코드 관리 프로그램중 Tortoisesvn를 대해 기본적인 사용법이다.&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;서버 PC가 없는 관계(???)로 ,&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;내 PC에 있는 별도의 디스크를 Local 저장소로 사용할 예정이다.&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Tortoisesvn를 아래 사이트로 접속 후&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;a href=&quot;http://tortoisesvn.net/downloads.html&quot; style=&quot;color: rgb(102, 102, 102);&quot;&gt;http://tortoisesvn.net/downloads.html&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/133144424EF70DA609&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;32bit or 64bit중 선택해서 클릭 후, 아래 창이 뜨면 저장을 클릭후 적당한 디렉토리에 다운을 받고,&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/145F883D4EF70DA729&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;다시 전 화면으로 와서 밑으로 스크롤해서 언어팩중 한국어를 다운받는다.&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/110FD63B4EF70DA705&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;설치를 위해&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;다운받은 TortoiseSVN-1.7.3.22386-win32-svn-1.7.2.msi를 실행을 한다.&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1421553C4EF70DA71E&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&quot;실행&quot;클릭… 화면 뜨는데로 진행을 해준다&lt;span style=&quot;font-family: Wingdings;&quot;&gt;à&lt;/span&gt;&amp;nbsp;go&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1677AC404EF70DA930&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Next 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1575853B4EF70DA92B&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Agree후 next 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/13065A3A4EF70DA933&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Next 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1422703A4EF70DAB05&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Install 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/141B5A3E4EF70DAB01&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;설치중…..&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/16211C3C4EF70DAB1F&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Finish 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;탐색기 실행후 좌측 아무 디렉토리 선택 후 오른쪽마우스 버튼 클릭시,&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;아래 적색부분의 SVN Checkout 과 TortoiseSVN 메뉴가 나오면 정상적으로 설치가 된것이다.&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1917F5374EF70DAC32&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;메뉴를 한글로 보이기 위해 다운받은 한글팩을 설치해준다.(설치안 해도 무방)&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;LanguagePack_1.7.3.22386-win32-ko.msi 를 실행한다.&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/20195B3E4EF70DAC04&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;실행 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/123B65384EF70DAD0C&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Next 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/186CE9444EF70DAE13&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;설치중……………………..&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/191A26354EF70DB022&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Finish 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;탐새기 임의의 디렉토리 선택후 오른쪽 마우스 버튼 클릭하면 아래와 같이 한글 메뉴들이 보인다.&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/165369334EF70DB033&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;이제부터 저장소(repository)를 만들고 , 이곳에 소스나 data들을 저장 및 관리를 한다.&lt;/p&gt;&lt;ol style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 38pt;&quot;&gt;&lt;li&gt;저장소는 나의 경우 F:/repository/project1만들고&lt;/li&gt;&lt;li&gt;&lt;div&gt;생성된 디렉토리 안으로 들어가 우측 선택 후 오른쪽 마우스 클릭-&amp;gt; TortoiseSVN 커스 위치-&amp;gt;&quot; 현재위치에 저장소 생성(Y)&quot; 클릭&lt;/div&gt;&lt;p&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/186646334EF70DB00C&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1965BD434EF70DB138&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p&gt;&quot;폴더 구조 생성&quot; 클릭 ---&amp;gt; &quot;확인&quot; 클릭&lt;/p&gt;&lt;p&gt;(폴더구조 생성 클릭을 하면 project1안에 3개의 폴더 trunk,branch,tags가 생기지만,&lt;/p&gt;&lt;p&gt;보이지는 않는다. Trunk에 최초로 import후 check-out,commint를 주로 사용 하게 된다.)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;아래와 같은 디렉토리들이 project1안에 생성이 된다.&lt;/div&gt;&lt;p&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1538E3454EF70DB12A&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Repository/project1/ trunk로 improt할 project를 import를 시켜준다.&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Import 할때는 탐색기를 통해 해당 project 경로로 이동후&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;디렉토리 선택 후 TortiseSVn -&amp;gt; &quot;임포트&quot; 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1814073F4EF70DB136&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;ol style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 38pt;&quot;&gt;&lt;li&gt;저장소 URL를 위에서 생성한 저장소 경로가 안 나오면 아래 화면에서 우측 상단의 버튼으로&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;저장소 경로&amp;nbsp;&lt;a href=&quot;file:///F:/repository/project1/trunk&quot; style=&quot;color: rgb(102, 102, 102);&quot;&gt;file://F:/repository/project1/trunk&lt;/a&gt;&amp;nbsp;&quot; 를 선택 해주고 -&amp;gt; &quot;확인&quot; 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/202C04354EF70DB204&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;아래와 같이 저장소로 파일들이 import가 되고, 완료가 되면 좌측 하단에 import건수 표시가 되고 &quot;확인&quot; 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1619ED354EF70DB222&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;그다음에는 임포트를 받은 원래 project 작업공간 check-out를 해 준다.&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;저장소 디렉토리인 repoitory 오른쪽 마우스 클릭 -&amp;gt; SVN 체크아웃(K)클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/193EEC454EF70DB21F&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;체크아웃받을 디렉토리 익스포트(D)에 지정 후 &quot;확인&quot; 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/140C573B4EF70DB20C&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;목적지 경로로 파일들이 추가가 되며,&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;완료가 되면 -&amp;gt; &quot;확인&quot; 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px; margin-left: 36pt;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1408D1434EF70DB403&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;정상적으로 check-out이 되었으면 녹색 체크 표시로 나타난다.&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/19226B3A4EF70DB406&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Project1에서 수정작업 후 project1 디렉터리 내부를 보면&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/15243D354EF70DB511&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;위와 같이 수정된 파일은 적색의 느낌표로 표시되며,&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;Commit를 해 보자…&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/163D00394EF70DB631&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;SVN 커밋(C)를 클릭 하면 아래 화면과 같이 수정된 파일들이 뜨고 -&amp;gt; 확인 클릭(최근 메시지 박스에 내용도 필요한 내용이 있으면 적어준다.)&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/120A4A364EF70DB60B&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;commit이 정상적으로 되었으면 아래 창이 뜨고 -&amp;gt; &quot;확인&quot; 클릭&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/176B3B434EF70DB635&quot; alt=&quot;&quot; style=&quot;border: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;color: rgb(102, 102, 102); font-family: dotum; font-size: 12px; line-height: 18px;&quot;&gt;&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;출처 -&amp;nbsp;http://hotcoffee.tistory.com/entry/Tortoise-SVN-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EA%B8%B0%EB%B3%B8%EC%82%AC%EC%9A%A9%EB%B2%95&lt;/p&gt;</description>
      <category>유틸</category>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/78</guid>
      <comments>https://wowstudy.tistory.com/78#entry78comment</comments>
      <pubDate>Thu, 4 Aug 2016 23:17:54 +0900</pubDate>
    </item>
    <item>
      <title>SVN 서버 설치하기 - Visual SVN 이용</title>
      <link>https://wowstudy.tistory.com/77</link>
      <description>&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;소스코드 버전관리 시스템으로 SVN을 사용하기 위해 SVN 서버 소프트트웨어를 서버에, 사용자 PC에 SVN 클라이언트 소프트웨어를 설치해야 합니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;이 글에서는 SVN 서버 소프트웨어를 서버에 설치하는 내용을 설명합니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;SVN 서버 소프트웨어는 소스코드 버전관리 해야하는 작업자들이 접속할 수 있는 서버 머신에 설치해야 합니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;예를들어, 팀내에서 소스코드를 버전관리 해야하는 경우 팀내에서 운영 중인 사내의 팀서버에 설치하는 것이 좋습니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;만약, 외부와 협업이 필요한 경우 IDC 등에 SVN 서버 소프트웨어를 설치하면 외부 인원과도 소스코드 버전관리 할 수 있습니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;h1 style=&quot;margin: 30px 0px 15px; padding: 0px 10px 1px; font-weight: bolder; letter-spacing: -0.07em; font-size: 20px; border-width: 0px 0px 1px 5px; border-bottom-style: solid; border-left-style: solid; border-bottom-color: rgb(242, 242, 242); border-left-color: rgb(51, 170, 51); line-height: 30px; font-family: Tahoma; color: rgb(51, 51, 51);&quot;&gt;SVN 서버 소프트웨어&lt;/h1&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;SVN 서버 소프트웨어는 오픈 소프트웨어&amp;nbsp;부터 상용 소프트웨어까지 다양하게 선택할 수 있습니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;아래 링크를 참고해 원하는 플랫폼과 원하는 SVN 서버 소프트웨어를 설치할 수 있습니다.&lt;/p&gt;&lt;ul style=&quot;margin: 0px; padding: 0px 0px 0px 25px; border: 0px; line-height: 26px; font-family: Verdana, &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum; color: rgb(85, 85, 85);&quot;&gt;&lt;li style=&quot;margin: 0px 0px 2px; padding: 0px; border: 0px; line-height: 2; list-style-position: inside;&quot;&gt;&lt;a href=&quot;http://subversion.apache.org/packages.html#windows&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(71, 153, 0);&quot;&gt;http://subversion.apache.org/packages.html#windows&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; clear: none; float: none; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;margin: 0px; padding: 0px; display: inline-block; width: 605px; height: auto; max-width: 100%;&quot;&gt;&lt;span data-url=&quot;https://t1.daumcdn.net/cfile/tistory/2412B03656D3CF1F30&quot; data-lightbox=&quot;lightbox&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2412B03656D3CF1F30&quot; width=&quot;605&quot; height=&quot;152&quot; filename=&quot;svn_sw.png&quot; filemime=&quot;image/png&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile24.uf.tistory.com%2Fimage%2F2412B03656D3CF1F303886 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfile24.uf.tistory.com%2Fimage%2F2412B03656D3CF1F303886 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfile24.uf.tistory.com%2Fimage%2F2412B03656D3CF1F303886 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfile24.uf.tistory.com%2Fimage%2F2412B03656D3CF1F303886 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfile24.uf.tistory.com%2Fimage%2F2412B03656D3CF1F303886 480w&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;h2 style=&quot;margin: 20px 0px 0px; padding: 0px 0px 1px; font-weight: bolder; letter-spacing: -0.07em; font-size: 16px; border-width: 0px 0px 1px; border-style: initial; border-color: initial; line-height: 20px; font-family: Tahoma; color: rgb(71, 102, 0);&quot;&gt;❑ Visual SVN 설치&lt;/h2&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; line-height: 1.5;&quot;&gt;저는 윈도우에서 손쉽게 설치 및 사용할 수 있는 Visual SVN Server을 설치했습니다.&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin: 0px; padding: 0px 0px 0px 25px; border: 0px; line-height: 26px; font-family: Verdana, &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum; color: rgb(85, 85, 85);&quot;&gt;&lt;li style=&quot;margin: 0px 0px 2px; padding: 0px; border: 0px; line-height: 2; list-style-position: inside;&quot;&gt;&lt;a href=&quot;https://www.visualsvn.com/server/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(71, 153, 0);&quot;&gt;https://www.visualsvn.com/server/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;h3 style=&quot;margin: 10px 0px 8px; padding: 0px 0px 1px; font-weight: bolder; letter-spacing: -0.07em; font-size: 13px; border: 0px; line-height: 15px; font-family: Tahoma; color: rgb(51, 51, 51);&quot;&gt;라이선스&lt;/h3&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; line-height: 1.5;&quot;&gt;Visual SVN Server는 기능에 따라 Standard와 Enterprise로 구분되며 Standard는 회사에서도&amp;nbsp;무료로 설치(Avaliable for commercial use)할 수 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin: 0px; padding: 0px 0px 0px 25px; border: 0px; line-height: 26px; font-family: Verdana, &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum; color: rgb(85, 85, 85);&quot;&gt;&lt;li style=&quot;margin: 0px 0px 2px; padding: 0px; border: 0px; line-height: 2; list-style-position: inside;&quot;&gt;&lt;a href=&quot;https://www.visualsvn.com/server/licensing/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(71, 153, 0);&quot;&gt;https://www.visualsvn.com/server/licensing/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;h3 style=&quot;margin: 10px 0px 8px; padding: 0px 0px 1px; font-weight: bolder; letter-spacing: -0.07em; font-size: 13px; border: 0px; line-height: 15px; font-family: Tahoma; color: rgb(51, 51, 51);&quot;&gt;설치&lt;/h3&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; line-height: 1.5;&quot;&gt;본인의 환경에 따라 32 bit 또는 64 bit 설치 파일을 받아 설치 파일 실행 후 안내에 따라 설치 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;설치가 완료되면 시작 메뉴에서 &quot;VisualSVN Server Mnager&quot;를 찾아 실행하면 아래 화면이 표시됩니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; clear: none; float: none; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;margin: 0px; padding: 0px; display: inline-block; width: 605px; height: auto; max-width: 100%;&quot;&gt;&lt;span data-url=&quot;https://t1.daumcdn.net/cfile/tistory/2161DF3B56D3D23F2A&quot; data-lightbox=&quot;lightbox&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2161DF3B56D3D23F2A&quot; width=&quot;605&quot; height=&quot;460&quot; filename=&quot;visualsvn.png&quot; filemime=&quot;image/png&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile22.uf.tistory.com%2Fimage%2F2161DF3B56D3D23F2A2749 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfile22.uf.tistory.com%2Fimage%2F2161DF3B56D3D23F2A2749 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfile22.uf.tistory.com%2Fimage%2F2161DF3B56D3D23F2A2749 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfile22.uf.tistory.com%2Fimage%2F2161DF3B56D3D23F2A2749 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfile22.uf.tistory.com%2Fimage%2F2161DF3B56D3D23F2A2749 480w&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;h2 style=&quot;margin: 20px 0px 0px; padding: 0px 0px 1px; font-weight: bolder; letter-spacing: -0.07em; font-size: 16px; border-width: 0px 0px 1px; border-style: initial; border-color: initial; line-height: 20px; font-family: Tahoma; color: rgb(71, 102, 0);&quot;&gt;❑ 저장소 및 사용자 생성&lt;/h2&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;SVN &amp;nbsp;서버로 사용하기 위해서는&amp;nbsp;&lt;span style=&quot;margin: 0px; padding: 0px; line-height: 1.5;&quot;&gt;소스코드 저장소 &amp;nbsp;생성과 사용자를 추가해야 합니다.(이 작업은 지정된 관리자가 하게 됩니다.)&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;h3 style=&quot;margin: 10px 0px 8px; padding: 0px 0px 1px; font-weight: bolder; letter-spacing: -0.07em; font-size: 13px; border: 0px; line-height: 15px; font-family: Tahoma; color: rgb(51, 51, 51);&quot;&gt;저장소 생성&lt;/h3&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;소스코드 버전관리가 필요한 프로젝트 또는 서비스 별로 저장소를 생성합니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;왼편 트리메뉴에서 Repositories 항목 &amp;nbsp;선택 후 오른쪽 팬에서 우측 마우스 버튼을 이용해 저장소를 생성(Create New Repository...)합니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;저장소 유형, 저장소 이름, 저장소 구조를 선택합니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; text-align: center; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;table cellspacing=&quot;5&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; align=&quot;center&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;tbody style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;margin: 0px; padding: 0px; display: inline-block; width: 201px; height: auto; max-width: 100%;&quot;&gt;&lt;span data-url=&quot;https://t1.daumcdn.net/cfile/tistory/2776074B56D3D81530&quot; data-lightbox=&quot;lightbox&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2776074B56D3D81530&quot; width=&quot;201&quot; height=&quot;158&quot; filename=&quot;rep01.png&quot; filemime=&quot;image/png&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile10.uf.tistory.com%2Fimage%2F2776074B56D3D815302E3F 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfile10.uf.tistory.com%2Fimage%2F2776074B56D3D815302E3F 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfile10.uf.tistory.com%2Fimage%2F2776074B56D3D815302E3F 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfile10.uf.tistory.com%2Fimage%2F2776074B56D3D815302E3F 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfile10.uf.tistory.com%2Fimage%2F2776074B56D3D815302E3F 480w&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;margin: 0px; padding: 0px; display: inline-block; width: 201px; height: auto; max-width: 100%;&quot;&gt;&lt;span data-url=&quot;https://t1.daumcdn.net/cfile/tistory/2306F84B56D3D81621&quot; data-lightbox=&quot;lightbox&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2306F84B56D3D81621&quot; width=&quot;201&quot; height=&quot;158&quot; filename=&quot;rep02.png&quot; filemime=&quot;image/png&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile29.uf.tistory.com%2Fimage%2F2306F84B56D3D816212800 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfile29.uf.tistory.com%2Fimage%2F2306F84B56D3D816212800 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfile29.uf.tistory.com%2Fimage%2F2306F84B56D3D816212800 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfile29.uf.tistory.com%2Fimage%2F2306F84B56D3D816212800 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfile29.uf.tistory.com%2Fimage%2F2306F84B56D3D816212800 480w&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;margin: 0px; padding: 0px; display: inline-block; width: 201px; height: auto; max-width: 100%;&quot;&gt;&lt;span data-url=&quot;https://t1.daumcdn.net/cfile/tistory/2678D44B56D3D8162F&quot; data-lightbox=&quot;lightbox&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2678D44B56D3D8162F&quot; width=&quot;201&quot; height=&quot;158&quot; filename=&quot;rep03.png&quot; filemime=&quot;image/png&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2678D44B56D3D8162F6621 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2678D44B56D3D8162F6621 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2678D44B56D3D8162F6621 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2678D44B56D3D8162F6621 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2678D44B56D3D8162F6621 480w&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;접근권한(접근 권한은 사용자 추가 후 다시 조정합니다.) 확인 후 저장소 생성을 마칩니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; text-align: center; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;table cellspacing=&quot;5&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; align=&quot;center&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;tbody style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;margin: 0px; padding: 0px; display: inline-block; width: 302px; height: auto; max-width: 100%;&quot;&gt;&lt;span data-url=&quot;https://t1.daumcdn.net/cfile/tistory/2704A24B56D3D81723&quot; data-lightbox=&quot;lightbox&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2704A24B56D3D81723&quot; width=&quot;302&quot; height=&quot;238&quot; filename=&quot;rep04.png&quot; filemime=&quot;image/png&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile30.uf.tistory.com%2Fimage%2F2704A24B56D3D8172361E4 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfile30.uf.tistory.com%2Fimage%2F2704A24B56D3D8172361E4 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfile30.uf.tistory.com%2Fimage%2F2704A24B56D3D8172361E4 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfile30.uf.tistory.com%2Fimage%2F2704A24B56D3D8172361E4 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfile30.uf.tistory.com%2Fimage%2F2704A24B56D3D8172361E4 480w&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;margin: 0px; padding: 0px; display: inline-block; width: 302px; height: auto; max-width: 100%;&quot;&gt;&lt;span data-url=&quot;https://t1.daumcdn.net/cfile/tistory/23197A4B56D3D81713&quot; data-lightbox=&quot;lightbox&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/23197A4B56D3D81713&quot; width=&quot;302&quot; height=&quot;238&quot; filename=&quot;rep05.png&quot; filemime=&quot;image/png&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile4.uf.tistory.com%2Fimage%2F23197A4B56D3D81713AD2D 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfile4.uf.tistory.com%2Fimage%2F23197A4B56D3D81713AD2D 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfile4.uf.tistory.com%2Fimage%2F23197A4B56D3D81713AD2D 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfile4.uf.tistory.com%2Fimage%2F23197A4B56D3D81713AD2D 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfile4.uf.tistory.com%2Fimage%2F23197A4B56D3D81713AD2D 480w&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;h3 style=&quot;margin: 10px 0px 8px; padding: 0px 0px 1px; font-weight: bolder; letter-spacing: -0.07em; font-size: 13px; border: 0px; line-height: 15px; font-family: Tahoma; color: rgb(51, 51, 51);&quot;&gt;사용자 추가&lt;/h3&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;왼쪽 트리메뉴에서 Users 메뉴 선택 후 오른쪽 팬에서 사용자를 추가(Create user)합니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; clear: none; float: none; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;margin: 0px; padding: 0px; display: inline-block; width: 605px; height: auto; max-width: 100%;&quot;&gt;&lt;span data-url=&quot;https://t1.daumcdn.net/cfile/tistory/2609EF4B56D3D8181F&quot; data-lightbox=&quot;lightbox&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2609EF4B56D3D8181F&quot; width=&quot;605&quot; height=&quot;460&quot; filename=&quot;user.png&quot; filemime=&quot;image/png&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2609EF4B56D3D8181F2E03 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2609EF4B56D3D8181F2E03 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2609EF4B56D3D8181F2E03 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2609EF4B56D3D8181F2E03 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfile6.uf.tistory.com%2Fimage%2F2609EF4B56D3D8181F2E03 480w&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;저장소의 속성(Properties) 창의 Security 탭에서 접근 권한을 사용자 별로 조정합니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; clear: none; float: none; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;margin: 0px; padding: 0px; display: inline-block; width: 605px; height: auto; max-width: 100%;&quot;&gt;&lt;span data-url=&quot;https://t1.daumcdn.net/cfile/tistory/2471724B56D3D81933&quot; data-lightbox=&quot;lightbox&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2471724B56D3D81933&quot; width=&quot;605&quot; height=&quot;472&quot; filename=&quot;user2.png&quot; filemime=&quot;image/png&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile1.uf.tistory.com%2Fimage%2F2471724B56D3D8193398FB 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfile1.uf.tistory.com%2Fimage%2F2471724B56D3D8193398FB 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfile1.uf.tistory.com%2Fimage%2F2471724B56D3D8193398FB 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfile1.uf.tistory.com%2Fimage%2F2471724B56D3D8193398FB 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfile1.uf.tistory.com%2Fimage%2F2471724B56D3D8193398FB 480w&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;&lt;h3 style=&quot;margin: 10px 0px 8px; padding: 0px 0px 1px; font-weight: bolder; letter-spacing: -0.07em; font-size: 13px; border: 0px; line-height: 15px; font-family: Tahoma; color: rgb(51, 51, 51);&quot;&gt;기타 참고사항&lt;/h3&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px;&quot;&gt;기타 추가적인 내용은 아래 링크를 참고해 확인하시기 바랍니다.&lt;/div&gt;&lt;ul style=&quot;margin: 0px; padding: 0px 0px 0px 25px; border: 0px; line-height: 26px; font-family: Verdana, &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum; color: rgb(85, 85, 85);&quot;&gt;&lt;li style=&quot;margin: 0px 0px 2px; padding: 0px; border: 0px; line-height: 2; list-style-position: inside;&quot;&gt;VisualSVN Support :&amp;nbsp;&lt;a href=&quot;https://www.visualsvn.com/support/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(71, 153, 0);&quot;&gt;https://www.visualsvn.com/support/&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 2px; padding: 0px; border: 0px; line-height: 2; list-style-position: inside;&quot;&gt;구글 검색 &quot;VisualSVN 사용법&quot; :&amp;nbsp;&lt;a href=&quot;https://www.google.co.kr/search?q=visualsvn+import&amp;amp;oq=visualsvn+import&amp;amp;aqs=chrome..69i57j0l5.3498j0j4&amp;amp;sourceid=chrome&amp;amp;es_sm=91&amp;amp;ie=UTF-8&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(71, 153, 0);&quot;&gt;https://www.google.co.kr/search?q=visualsvn+import&amp;amp;oq=visualsvn+import&amp;amp;aqs=chrome..69i57j0l5.3498j0j4&amp;amp;sourceid=chrome&amp;amp;es_sm=91&amp;amp;ie=UTF-8&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin: 10px 0px 8px; padding: 0px 0px 1px; font-weight: bolder; letter-spacing: -0.07em; font-size: 13px; border: 0px; line-height: 15px; font-family: Tahoma; color: rgb(51, 51, 51);&quot;&gt;관련자료&lt;/h3&gt;&lt;div style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;div style=&quot;color: rgb(85, 85, 85); font-family: Verdana, ��������, NanumGothic, &amp;quot;���� ����&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, Gothic, ����, AppleGothic, sans-serif; font-size: 12px; line-height: 19.8px; margin: 0px; padding: 0px;&quot;&gt;&lt;hr style=&quot;margin: 0px; padding: 0px; border-color: black; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: solid none none; height: 1px;&quot;&gt;&lt;/div&gt;&lt;ul style=&quot;color: rgb(85, 85, 85); font-family: Verdana, &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum; font-size: 13px; line-height: 26px; margin: 0px; padding: 0px 0px 0px 25px; border: 0px;&quot;&gt;&lt;li style=&quot;margin: 0px 0px 2px; padding: 0px; border: 0px; line-height: 2; list-style-position: inside;&quot;&gt;RAD Studio IDE에서 SVN 사용하기 + TortoiseSVN 사용하기 :&amp;nbsp;&lt;a href=&quot;http://blog.hjf.pe.kr/418&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(71, 153, 0);&quot;&gt;http://blog.hjf.pe.kr/418&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;color: rgb(85, 85, 85);&quot;&gt;&lt;font face=&quot;Verdana, Apple SD Gothic Neo, Malgun Gothic, dotum&quot;&gt;&lt;span style=&quot;line-height: 26px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;color: rgb(85, 85, 85);&quot;&gt;&lt;font face=&quot;Verdana, Apple SD Gothic Neo, Malgun Gothic, dotum&quot;&gt;&lt;span style=&quot;line-height: 26px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Verdana, Apple SD Gothic Neo, Malgun Gothic, dotum&quot; style=&quot;color: rgb(85, 85, 85);&quot;&gt;&lt;span style=&quot;line-height: 26px;&quot;&gt;출처 -&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font color=&quot;#555555&quot; face=&quot;Verdana, Apple SD Gothic Neo, Malgun Gothic, dotum&quot;&gt;&lt;span style=&quot;line-height: 26px;&quot;&gt;http://blog.hjf.pe.kr/417&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>유틸</category>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/77</guid>
      <comments>https://wowstudy.tistory.com/77#entry77comment</comments>
      <pubDate>Thu, 4 Aug 2016 23:09:36 +0900</pubDate>
    </item>
    <item>
      <title>SiteMesh를 이용한 웹 페이지 데코레이션</title>
      <link>https://wowstudy.tistory.com/76</link>
      <description>&lt;div class=&quot;article&quot; style=&quot;width: 610px; font-size: 12px; font-family: dotum; color: rgb(102, 102, 102); overflow: hidden; line-height: 18px;&quot;&gt;&lt;div class=&quot;article&quot; style=&quot;width: 610px; overflow: hidden;&quot;&gt;SiteMesh를 이용하여 웹 페이지의 레이아웃을 처리하는 방법을 살펴본다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-size: 12pt;&quot;&gt;SiteMesh의 동작 방식과 설치&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;웹 어플리케이션을 구성하고 있는 웹 페이지들은 대부분은 페이지 레이아웃이 동일하게 구성되어 있다. 예를 들어, 미디어 다음의 스포츠 게시판을 보면, 각 페이지는 아래 그림과 동일한 형태로 구성되어 있는 것을 확인할 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;border: 1px solid rgb(221, 221, 221); padding: 5px 0px; margin: 5px 0px; display: inline-block; width: 431px; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;http://cfs11.tistory.com/image/10/tistory/2008/12/09/05/42/493d8698b0d04&quot; width=&quot;431&quot; height=&quot;390&quot; filename=&quot;fig01.jpg&quot; filemime=&quot;image/jpeg&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F10%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d8698b0d04 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F10%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d8698b0d04 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F10%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d8698b0d04 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F10%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d8698b0d04 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F10%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d8698b0d04 480w&quot; style=&quot;border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;위 그림에서 내용 부분을 제외한 나머지 헤더, 푸터, 좌측 메뉴, 그리고 우측 주요기사는 모든 페이지에서 동일한 위치에 나타낸다. 즉, 게시글 목록 페이지와 게시글 쓰기 페이지는 모두 위 그림과 동일한 레이아웃을 갖는 것이다.&lt;br /&gt;&lt;br /&gt;이렇게 동일한 레이아웃을 여러 페이지에 적용해야 할 때, 가장 쉽게 사용할 수 있는 방법이 &amp;lt;jsp:include&amp;gt;나 &amp;lt;%@ include %&amp;gt;를 사용하는 것이다. 하지만, 이는 중복된 코드를 발생시킬 가능성이 높기 때문에, Tiles나 Velocity가 제공하는 레이아웃 기능을 사용하여 구현하게 된다. 추가적으로 SiteMesh를 사용하여 레이아웃을 여러 페이지에 적용할 수 있다.&lt;br /&gt;&lt;br /&gt;Tiles나 Velocity 또는 &amp;lt;jsp:include&amp;gt;를 사용하는 방식이 전체 페이지 중 내용 부분에 해당하는 코드만을 생성하는 방식이라면, SiteMesh는 완전한 HTML 페이지를 생성한 뒤 Decorator 패턴을 사용하여 HTML 페이지에 레이아웃을 입히는 방식이다. 본 글에서는 SiteMesh의 동작방식에 대해서 살펴보고, SiteMesh를 사용하여 여러 웹 페이지에 레이아웃을 동일하게 적용하는 방법을 살펴볼 것이다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;strong&gt;SiteMesh의 동작 방식&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SiteMesh는 Tiles와 같은 프레임워크와 달리 완전한 HTML 코드로부터 레이아웃이 적용된 새로운 HTML 코드를 생성해낸다. 아래 그림은 SiteMesh의 동작방식을 설명한 것이다.&lt;br /&gt;&lt;br /&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;border: 1px solid rgb(221, 221, 221); padding: 5px 0px; margin: 5px 0px; display: inline-block; width: 491px; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;http://cfs11.tistory.com/image/24/tistory/2008/12/09/05/42/493d869a3c3a3&quot; width=&quot;491&quot; height=&quot;654&quot; filename=&quot;fig02.jpg&quot; filemime=&quot;image/jpeg&quot; srcset=&quot;http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F24%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d869a3c3a3 1920w, http://img1.daumcdn.net/thumb/R960x0/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F24%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d869a3c3a3 960w, http://img1.daumcdn.net/thumb/R720x0/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F24%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d869a3c3a3 720w, http://img1.daumcdn.net/thumb/R640x0.q70/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F24%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d869a3c3a3 640w, http://img1.daumcdn.net/thumb/R480x0.q70/?fname=http%3A%2F%2Fcfs11.tistory.com%2Fimage%2F24%2Ftistory%2F2008%2F12%2F09%2F05%2F42%2F493d869a3c3a3 480w&quot; style=&quot;border: 0px; cursor: pointer; max-width: 100%; height: auto;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;위 그림에서 데코레이터에 전달되는 HTML 페이지는 &amp;lt;html&amp;gt;, &amp;lt;head&amp;gt;, &amp;lt;body&amp;gt; 등을 포함한 완전한 HTML 페이지이다. 이때 데코레이터에 전달되는 HTML 페이지는 레이아웃과 관련된 내용은 포함되지 않는다. 데코레이터는 레이아웃 정보를 담고 있는 JSP 페이지로서, 앞서 생성한 HTML 페이지에 저장된 (&amp;lt;title&amp;gt; 등의) 메타 정보와 &amp;lt;body&amp;gt; 태그에 포함된 내용을 추출한 뒤, 레이아웃의 알맞은 위치에 추출한 내용을 삽입하여 최종 결과를 생성하게 된다.&lt;br /&gt;&lt;br /&gt;예를 들어, 앞서 그림에서 welcome.jsp의 경우를 살펴보자. welcome.jsp는 레이아웃과 관련된 코드를 생성하지 않고 단지 메타 정보와 내용 부분에 들어가는 정보만을 생성하게 된다. welcome.jsp가 생성한 HTML 페이지는 데코레이터에 전달된다. 데코레이터는 welcome.jsp가 생성한 내용으로부터 메타 정보와 BODY 부분을 추출한 뒤 데코레이터의 알맞은 위치에 삽입하여 최종 결과를 생성한다.&lt;br /&gt;&lt;span id=&quot;callbacknestjavacantistorycom1213678&quot; style=&quot;width: 1px; height: 1px; float: right;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;strong&gt;SiteMesh 설치&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SiteMesh는 서블릿 환경에서 동작하며, http://www.opensymphony.com/sitemesh/download.action 사이트에서 최신 버전을 다운로드 받을 수 있다. 이 글을 쓰는 시점에서 최신 버전은 2.3 버전으로서 sitemesh-2.3.jar 파일을 다운로드 받은 뒤, 웹 어플리케이션 콘텍스트의 WEB-INF/lib 디렉토리에 복사하면 설치가 완료된다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-size: 12pt;&quot;&gt;SiteMesh를 이용한 레이아웃 적용&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SiteMesh를 사용하여 웹 페이지에 레이아웃을 적용하기 위해서는 다음의 두 가지를 필요로 한다.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SiteMesh 설정 파일&lt;/li&gt;&lt;li&gt;데코레이터&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;strong&gt;SiteMesh 설정 1, web.xml&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SiteMesh를 설정하기 위해서는 먼저 SiteMesh가 제공하는 PageFilter(서블릿 필터)를 설정해주어야 한다. 아래 코는 설정 예이다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;?xml&amp;nbsp;version=&quot;1.0&quot;&amp;nbsp;encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;web-app&amp;nbsp;id=&quot;WebApp_ID&quot;&amp;nbsp;version=&quot;2.4&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;sitemesh&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;com.opensymphony.module.sitemesh.filter.PageFilter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/filter-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/filter&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;sitemesh&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;/div&gt;&lt;br /&gt;위 코드는 / 로 들어오는 모든 요청에 대해서 PageFilter를 적용한다고 설정하였다. PageFilter는 요청 URL과 매칭되는 데코레이터를 검색한 뒤, 데코레이터가 발견될 경우 결과 HTML에 매칭되는 데코레이터를 적용한다. 따라서, 데코레이터가 적용되어야 하는 URL의 경우 반드시 PageFilter에 매핑시켜주어야 한다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;strong&gt;SiteMesh 설정 2, decorators.xml 작성&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;web.xml 파일에 PageFilter 매핑을 설정한 다음에는, 실제 데코레이터에 대한 정보를 담고 있는 decorators.xml 파일을 작성해주어야 한다. decorators.xml 파일은 데코레이터에 대한 설정 정보를 담게 된다.&lt;br /&gt;&lt;br /&gt;decorators.xml 파일은 다음과 같은 형태로 데코레이터 목록을 기술한다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;decorators&amp;nbsp;defaultdir=&quot;/decorators&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator&amp;nbsp;name=&quot;submenu&quot;&amp;nbsp;page=&quot;submenu_decorator.jsp&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;pattern&amp;gt;/sub/*&amp;lt;/pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/decorator&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator&amp;nbsp;name=&quot;main&quot;&amp;nbsp;page=&quot;main_decorator.jsp&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;pattern&amp;gt;/*&amp;lt;/pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/decorator&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/decorators&amp;gt;&lt;/div&gt;&lt;br /&gt;위 코드에서 &amp;lt;decorators&amp;gt; 태그의 defaultdir 속성은 데코레이터 JSP가 위치할 경로를 의미한다. 이 경로는 웹 어플리케이션 콘텍스트 내에서의 경로를 의미한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;decorator&amp;gt; 태그는 한 개의 데코레이터를 설정한다. &amp;lt;decorator&amp;gt; 태그의 두 속성은 다음과 같다.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;name - 데코레이터의 이름&lt;/li&gt;&lt;li&gt;page - 데코레이터로 사용될 JSP 페이지&lt;/li&gt;&lt;/ul&gt;&amp;lt;pattern&amp;gt; 태그는 데코레이터를 적용할 패턴을 의미한다. 이 패턴은 서블릿 매핑에서의 패턴과 비슷하다. 예를 들어, /sub/submain1.jsp 나 /sub/menu/submenu1.jsp 로 요청이 들어올 경우 'submenu' 데코레이터가 적용되며, 그 외 /main.jsp나 /another/another1.jsp와 같이 /sub/* 에 포함되지 않는 요청의 경우는 'main' 데코레이터가 적용된다.&lt;br /&gt;&lt;br /&gt;만약 정확하게 일치하는 &amp;lt;pattern&amp;gt; 값이 존재할 경우 해당 데코레이터를 사용한다. 예를 들어, 아래의 설정을 보자.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator&amp;nbsp;name=&quot;submenu&quot;&amp;nbsp;page=&quot;submenu_decorator.jsp&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;pattern&amp;gt;/sub/*&amp;lt;/pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/decorator&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator&amp;nbsp;name=&quot;submain&quot;&amp;nbsp;page=&quot;submain_decorator.jsp&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;pattern&amp;gt;/sub/submain1.jsp&amp;lt;/pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/decorator&amp;gt;&lt;/div&gt;&lt;br /&gt;이 경우 /sub/submain1.jsp는 submenu 데코레이터와 submain 데코레이터에 모두 매핑되지만, 좀더 정확하게 일치하는 submain 데코레이터가 사용된다.&lt;br /&gt;&lt;br /&gt;한 개의 &amp;lt;decorator&amp;gt; 태그는 0개 이상의 &amp;lt;pattern&amp;gt; 태그를 포함할 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;strong&gt;서블릿 매핑 시 주의 사항&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;서블릿 매핑을 사용할 경우 &amp;lt;pattern&amp;gt; 값은 서블릿의 경로를 따른다. 예를 들어, 다음과 같이 서블릿 매핑을 설정했다고 하자.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;content&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/catalog/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;/div&gt;&lt;br /&gt;이 경우, 지정한 서블릿 매핑에 해당되는 요청에 데코레이터를 적용하고자 한다면, 다음과 같이decorators.xml의 &amp;lt;pattern&amp;gt; 태그의 값으로 서블릿 경로명을 지정해주어야 한다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator&amp;nbsp;name=&quot;catalog&quot;&amp;nbsp;page=&quot;catalog_decorator.jsp&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;pattern&amp;gt;/catalog&amp;lt;/pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/decorator&amp;gt;&lt;/div&gt;&lt;br /&gt;만약 서블릿 경로명이 아닌 /catalog/* 를 &amp;lt;pattern&amp;gt; 태그의 값으로 지정할 경우 해당 데코레이터가 적용되지 않는다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;strong&gt;데코레이터 작성&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SiteMesh의 데코레이터는 JSP 페이지로서, SiteMesh가 제공하는 커스텀 태그를 사용하여 결과 HTML 페이지를 데코레이션하게 된다. 아래 코드는 간단하게 작성해본 SiteMesh의 데코레이터 코드이다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;contentType=&quot;text/html;&amp;nbsp;charset=UTF-8&quot;&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix=&quot;decorator&quot;&amp;nbsp;uri=&quot;http://www.opensymphony.com/sitemesh/decorator&quot;&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;&amp;lt;decorator:title&amp;nbsp;default=&quot;테크리포트&quot;&amp;nbsp;/&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator:head&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;헤더&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;hr/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator:body&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;hr/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;푸터&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/div&gt;&lt;br /&gt;위 코드에서 눈여겨 볼 부분은 decorator로 시작하는 커스텀 태그이다. 사용자의 요청을 처리한 결과 페이지는 데코레이터에 전달되는데, 이때 커스텀 태그를 사용하여 전달된 페이지의 내용을 사용할 수 있게 된다. 예를 들어, &amp;lt;decorator:title&amp;gt; 커스텀 태그는 전달된 페이지의 &amp;lt;title&amp;gt; 태그의 값을 구하게 된다. 사용가능한 커스텀 태그는 다음과 같다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;strong&gt;&amp;lt;decorator:head /&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;HTML의 &amp;lt;head&amp;gt; 태그의 내용을 삽입한다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;strong&gt;&amp;lt;decorator:body /&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt; 태그의 내용을 삽입한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt; 태그에 명시된 프로퍼티의 값을 데코레이터 JSP에 삽입하고 싶다면 다음과 같이 &amp;lt;decorator:getProperty&amp;gt; 커스텀 태그를 사용하면 된다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;body&amp;nbsp;onload=&quot;&amp;lt;decorator:getProperty&amp;nbsp;property=&quot;body.onload&quot;&amp;nbsp;/&amp;gt;&quot;&amp;gt;&lt;br /&gt;…&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator:body&amp;nbsp;/&amp;gt;&lt;br /&gt;…&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;strong&gt;&amp;lt;decorator:title [ default=&quot;...&quot; ] /&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;title&amp;gt; 태그에 명시된 타이틀을 삽입한다. 만약 &amp;lt;title&amp;gt; 태그의 값이 발견되지 않을 경우 default 속성에 명시한 값을 삽입한다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;strong&gt;&amp;lt;decorator:getProperty property=&quot;.&quot; [default=&quot;.&quot;] [writeEntireProperty=&quot;.&quot; ]/&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;원본 HTML 페이지의 프로퍼티를 삽입한다. 이때 사용가능한 프로퍼티는 다음과 같이 생성된다.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HTML Tag:&lt;br /&gt;&amp;lt;html&amp;gt; 태그의 모든 속성이 프로퍼티로 추가된다.&lt;/li&gt;&lt;li&gt;TITLE Tag:&lt;br /&gt;&amp;lt;title&amp;gt; 태그의 내용이 'title' 프로퍼티로 추가된다.&lt;/li&gt;&lt;li&gt;META Tags:&lt;br /&gt;이름과 내용을 갖는 모든 &amp;lt;meta&amp;gt; 태그는 'meta.이름' 프로퍼티로 추가된다.&lt;/li&gt;&lt;li&gt;BODY Tag:&lt;br /&gt;모든 &amp;lt;body&amp;gt; 태그의 속성이 'body.속성이름' 프로퍼티로 추가된다.&lt;/li&gt;&lt;/ul&gt;&amp;lt;decorator:getProperty&amp;gt; 커스텀 태그에서 사용가능한 속성은 다음과 같다.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;property (필수) - 삽입할 프로퍼티의 이름(키)&lt;/li&gt;&lt;li&gt;default (선택) - 프로퍼티가 존재하지 않을 경우 삽입할 값&lt;/li&gt;&lt;li&gt;writeEntireProperty (선택) - 프로퍼티의 이름 및 이름 앞의 공백을 함께 삽입할 지의 여부를 지정한다. 허용되는 값은 'true', 'yes', 또는 '1' 이다.&lt;/li&gt;&lt;/ul&gt;예를 들어, 원본 페이지에서 다음과 같이 &amp;lt;body&amp;gt; 태그를 작성했다고 하자.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;body&amp;nbsp;onload=&quot;document.someform.somefield.focus();&quot;&amp;gt;&lt;/div&gt;&lt;br /&gt;그리고 데코레이터 JSP에서 다음과 같이 &amp;lt;decorator:getProperty&amp;gt; 커스텀 태그를 사용했다고 하자.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;body&amp;nbsp;bgcolor=&quot;White&quot;&amp;nbsp;&amp;lt;decorator:getProperty&amp;nbsp;property=&quot;body.onload&quot;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;writeEntireProperty=&quot;true&quot;&amp;nbsp;/&amp;gt;&amp;gt;&lt;/div&gt;&lt;br /&gt;이 경우 최종적으로 생성되는 코드는 다음과 같다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;body&amp;nbsp;bgcolor=&quot;White&quot;&amp;nbsp;onload=&quot;document.someform.somefield.focus();&quot;&amp;gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-size: 12pt;&quot;&gt;테스트 코드&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;strong&gt;데코레이션 될 JSP 코드&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;간단하게 SiteMesh의 데코레이터를 통해 레이아웃이 적용될 HTML 페이지를 생성하는 JSP 페이지를 다음과 같이 작성해보자. 이 JSP의 경로는 /sub/submain1.jsp 라고 하자.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;contentType=&quot;text/html;&amp;nbsp;charset=UTF-8&quot;&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;서브&amp;nbsp;메인&amp;nbsp;1&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;nbsp;type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.onload&amp;nbsp;=&amp;nbsp;function()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;서브&amp;nbsp;메인&amp;nbsp;1&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;strong&gt;데코레이터 JSP&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;데코레이터 JSP인 /decorators/submenu_decorator.jsp를 아래와 같이 작성해보았다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;contentType=&quot;text/html;&amp;nbsp;charset=UTF-8&quot;&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix=&quot;decorator&quot;&amp;nbsp;uri=&quot;http://www.opensymphony.com/sitemesh/decorator&quot;&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;&amp;lt;decorator:title&amp;nbsp;default=&quot;테크리포트&quot;&amp;nbsp;/&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator:head&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;공통&amp;nbsp;헤더&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;hr/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator:body&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;hr/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;공통&amp;nbsp;푸터&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/div&gt;&lt;br /&gt;데코레이터 JSP를 작성했으면 decorators.xml 파일에 등록해주어야 한다. 아래 코드는 등록 예이다. 앞서 원본 JSP의 경로를 /sub/submain1.jsp로 지정하였으므로, 아래 코드에서 &amp;lt;pattern&amp;gt;의 값을 '/sub/*'로 지정하였다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;decorators&amp;nbsp;defaultdir=&quot;/decorators&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;decorator&amp;nbsp;name=&quot;submenu&quot;&amp;nbsp;page=&quot;submenu_decorator.jsp&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;pattern&amp;gt;/sub/*&amp;lt;/pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/decorator&amp;gt;&lt;br /&gt;&amp;lt;/decorators&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;strong&gt;테스트 결과&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;이제 웹 브라우저에서 실제로 출력 결과를 확인해보자. 웹 브라우저에서 http://…/[contextPath]/sub/submain1.jsp를 입력한 뒤, 출력된 결과의 소스 코드는 다음과 같을 것이다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;서브&amp;nbsp;메인&amp;nbsp;1&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;nbsp;type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.onload&amp;nbsp;=&amp;nbsp;function()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;공통&amp;nbsp;헤더&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;hr/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;서브&amp;nbsp;메인&amp;nbsp;1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;hr/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;공통&amp;nbsp;푸터&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/div&gt;&lt;br /&gt;위 코드를 보면 원본 JSP가 출력한 결과가 데코레이터를 통해 알맞은 위치에 삽입된 것을 확인할 수 있다.&lt;br /&gt;&lt;br /&gt;관련링크:&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.opensymphony.com/sitemesh/&quot; style=&quot;color: rgb(102, 102, 102);&quot;&gt;SiteMesh 홈페이지&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://today.java.net/lpt/a/79&quot; style=&quot;color: rgb(102, 102, 102);&quot;&gt;Introduction to SiteMesh&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.onjava.com/lpt/a/5211&quot; style=&quot;color: rgb(102, 102, 102);&quot;&gt;ONJava.com의 'Advanced SiteMesh'&lt;/a&gt;&lt;/li&gt;&lt;li&gt;커스텀 데코레이터를 이용한 SiteMesh URL 패턴 매칭 기능 확장:&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/UsingCustomDecoratorMapperForSiteMeshURLPatternMatching&quot; style=&quot;color: rgb(102, 102, 102);&quot;&gt;http://javacan.tistory.com/entry/UsingCustomDecoratorMapperForSiteMeshURLPatternMatching&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class=&quot;tagTrail&quot; style=&quot;padding: 8px 5px 5px 30px; clear: both; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-image: url(&amp;quot;images/iconTag.gif&amp;quot;); background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: left center; background-repeat: no-repeat;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;tagTrail&quot; style=&quot;padding: 8px 5px 5px 30px; clear: both; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-image: url(&amp;quot;images/iconTag.gif&amp;quot;); background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: left center; background-repeat: no-repeat;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;actionTrail&quot; style=&quot;border-top: 1px dotted rgb(204, 204, 204); padding: 7px 5px 7px 0px; clear: both; font-family: Dotum, Verdana, AppleGothic, sans-serif;&quot;&gt;&lt;a href=&quot;http://javacan.tistory.com/entry/131#tb&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;&lt;span id=&quot;trackbackCount121&quot;&gt;트랙백&amp;nbsp;&lt;span class=&quot;cnt&quot; style=&quot;color: rgb(255, 102, 0);&quot;&gt;2&lt;/span&gt;개&lt;/span&gt;&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#rp&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;&lt;span id=&quot;commentCount121&quot;&gt;댓글&amp;nbsp;&lt;span class=&quot;cnt&quot; style=&quot;color: rgb(255, 102, 0);&quot;&gt;7&lt;/span&gt;개가 달렸습니다&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div id=&quot;entry121Comment&quot; style=&quot;font-family: Dotum, Verdana, AppleGothic, sans-serif;&quot;&gt;&lt;div class=&quot;comment&quot; style=&quot;width: 598px; border: 1px solid rgb(240, 240, 240); padding: 5px 5px 0px; overflow: hidden; background: rgb(249, 249, 249);&quot;&gt;&lt;div class=&quot;commentList&quot;&gt;&lt;ol style=&quot;padding: 0px; margin: 0px; list-style: none;&quot;&gt;&lt;li id=&quot;comment2461638&quot; style=&quot;border-bottom: 1px dashed rgb(153, 153, 153); margin: 0px 0px 7px; padding: 0px 0px 7px;&quot;&gt;&lt;div class=&quot;rp_secret hiddenComment&quot; style=&quot;color: rgb(255, 51, 0); padding-left: 20px; background: url(&amp;quot;images/iconSecret.gif&amp;quot;) no-repeat;&quot;&gt;&lt;span class=&quot;name&quot; style=&quot;color: rgb(102, 102, 102); font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;date&quot; style=&quot;font-stretch: normal; font-size: 0.9em; line-height: normal; font-family: Verdana, Helvetica, Arial, Gulim, sans-serif; color: rgb(119, 119, 119);&quot;&gt;2009.05.28 16:27&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;control&quot;&gt;&lt;a href=&quot;http://javacan.tistory.com/121#comment2461638&quot; class=&quot;address&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnAddress.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;modify&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnModifyDelete.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;write&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 13px; padding-bottom: 2px; background: url(&amp;quot;images/btnReply.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;p style=&quot;margin-top: 3px; margin-right: 0px; margin-left: 0px; padding: 0px;&quot;&gt;비밀댓글입니다&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li id=&quot;comment3954550&quot; style=&quot;border-bottom: 1px dashed rgb(153, 153, 153); margin: 0px 0px 7px; padding: 0px 0px 7px;&quot;&gt;&lt;div class=&quot;rp_general&quot;&gt;&lt;span class=&quot;name&quot; style=&quot;font-weight: bold;&quot;&gt;&lt;a href=&quot;http://blog.naver.com/fgmnkhs&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;김효선&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;date&quot; style=&quot;font-stretch: normal; font-size: 0.9em; line-height: normal; font-family: Verdana, Helvetica, Arial, Gulim, sans-serif; color: rgb(119, 119, 119);&quot;&gt;2010.03.03 14:21&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/toolbar/popup/abuseReport/?entryId=121&amp;amp;commentId=3954550&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;신고&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;control&quot;&gt;&lt;a href=&quot;http://javacan.tistory.com/121#comment3954550&quot; class=&quot;address&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnAddress.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;modify&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnModifyDelete.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;write&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 13px; padding-bottom: 2px; background: url(&amp;quot;images/btnReply.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;p style=&quot;margin-top: 3px; margin-right: 0px; margin-left: 0px; padding: 0px;&quot;&gt;담아갈께요~~~ 감사합니다~ ^^&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li id=&quot;comment4568747&quot; style=&quot;border-bottom: 1px dashed rgb(153, 153, 153); margin: 0px 0px 7px; padding: 0px 0px 7px;&quot;&gt;&lt;div class=&quot;rp_general&quot;&gt;&lt;span class=&quot;name&quot; style=&quot;font-weight: bold;&quot;&gt;sun&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;date&quot; style=&quot;font-stretch: normal; font-size: 0.9em; line-height: normal; font-family: Verdana, Helvetica, Arial, Gulim, sans-serif; color: rgb(119, 119, 119);&quot;&gt;2010.05.17 10:49&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/toolbar/popup/abuseReport/?entryId=121&amp;amp;commentId=4568747&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;신고&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;control&quot;&gt;&lt;a href=&quot;http://javacan.tistory.com/121#comment4568747&quot; class=&quot;address&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnAddress.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;modify&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnModifyDelete.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;write&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 13px; padding-bottom: 2px; background: url(&amp;quot;images/btnReply.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;p style=&quot;margin-top: 3px; margin-right: 0px; margin-left: 0px; padding: 0px;&quot;&gt;자세한 설명 넘 감사드려요~~&lt;br /&gt;완전 초보라 다 이해하지는 못했지만 그래도 도움이 많이 됐어요 ^ㅅ^&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li id=&quot;comment5220010&quot; style=&quot;border-bottom: 1px dashed rgb(153, 153, 153); margin: 0px 0px 7px; padding: 0px 0px 7px;&quot;&gt;&lt;div class=&quot;rp_general&quot;&gt;&lt;span class=&quot;name&quot; style=&quot;font-weight: bold;&quot;&gt;홍&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;date&quot; style=&quot;font-stretch: normal; font-size: 0.9em; line-height: normal; font-family: Verdana, Helvetica, Arial, Gulim, sans-serif; color: rgb(119, 119, 119);&quot;&gt;2010.09.01 15:31&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/toolbar/popup/abuseReport/?entryId=121&amp;amp;commentId=5220010&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;신고&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;control&quot;&gt;&lt;a href=&quot;http://javacan.tistory.com/121#comment5220010&quot; class=&quot;address&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnAddress.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;modify&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnModifyDelete.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;write&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 13px; padding-bottom: 2px; background: url(&amp;quot;images/btnReply.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;p style=&quot;margin-top: 3px; margin-right: 0px; margin-left: 0px; padding: 0px;&quot;&gt;굉장히 좋은글이네요.. 왜 써야하는지 어떻게쓰이는지 잘 정리한 내용같네요 ^^;;&lt;br /&gt;많은 도움 되었습니다.&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li id=&quot;comment8781633&quot; style=&quot;border-bottom: 1px dashed rgb(153, 153, 153); margin: 0px 0px 7px; padding: 0px 0px 7px;&quot;&gt;&lt;div class=&quot;rp_general&quot;&gt;&lt;span class=&quot;name&quot; style=&quot;font-weight: bold;&quot;&gt;주사위&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;date&quot; style=&quot;font-stretch: normal; font-size: 0.9em; line-height: normal; font-family: Verdana, Helvetica, Arial, Gulim, sans-serif; color: rgb(119, 119, 119);&quot;&gt;2012.06.26 15:10&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/toolbar/popup/abuseReport/?entryId=121&amp;amp;commentId=8781633&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;신고&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;control&quot;&gt;&lt;a href=&quot;http://javacan.tistory.com/121#comment8781633&quot; class=&quot;address&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnAddress.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;modify&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnModifyDelete.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;write&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 13px; padding-bottom: 2px; background: url(&amp;quot;images/btnReply.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;p style=&quot;margin-top: 3px; margin-right: 0px; margin-left: 0px; padding: 0px;&quot;&gt;http://javacan.tistory.com/entry/UsingCustomDecoratorMapperForSiteMeshURLPatternMatching&lt;br /&gt;&lt;br /&gt;이 글도 함께 링크걸어주셨으면 합니다. 여기 정리된 커스텀 데코레이터가 아니었다면 도저히 사이트메시를 못쓸뻔했습니다. 덕분에 잘 해결했습니다. 감사합니다.&lt;/p&gt;&lt;/div&gt;&lt;ul style=&quot;list-style: none; padding: 0px; margin: 0px;&quot;&gt;&lt;li id=&quot;comment8781961&quot; style=&quot;border: none; margin: 0px 0px 7px; padding: 5px 10px 5px 35px; background: url(&amp;quot;images/iconReComment.gif&amp;quot;) 12px 6px no-repeat;&quot;&gt;&lt;div class=&quot;rp_admin&quot; style=&quot;padding-left: 20px; background: url(&amp;quot;images/iconAdmin.gif&amp;quot;) no-repeat;&quot;&gt;&lt;span class=&quot;name&quot; style=&quot;font-weight: bold;&quot;&gt;&lt;a href=&quot;http://javacan.tistory.com/&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;madvirus&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;date&quot; style=&quot;font-stretch: normal; font-size: 0.9em; line-height: normal; font-family: Verdana, Helvetica, Arial, Gulim, sans-serif; color: rgb(119, 119, 119);&quot;&gt;2012.06.26 18:12&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/toolbar/popup/abuseReport/?entryId=121&amp;amp;commentId=8781961&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;신고&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;control&quot;&gt;&lt;a href=&quot;http://javacan.tistory.com/121#comment8781961&quot; class=&quot;address&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnAddress.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;modify&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnModifyDelete.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;p style=&quot;margin-top: 3px; margin-right: 0px; margin-left: 0px; padding: 0px;&quot;&gt;도움 되셨다니, 정말 기쁩니다. 말씀하신 대로 링크는 걸도록 하겠습니다.&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li id=&quot;comment9265455&quot; style=&quot;border-bottom: 1px dashed rgb(153, 153, 153); margin: 0px 0px 7px; padding: 0px 0px 7px;&quot;&gt;&lt;div class=&quot;rp_general&quot;&gt;&lt;span class=&quot;name&quot; style=&quot;font-weight: bold;&quot;&gt;&lt;a href=&quot;http://www.cyworld.com/kjangju&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;luck&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;date&quot; style=&quot;font-stretch: normal; font-size: 0.9em; line-height: normal; font-family: Verdana, Helvetica, Arial, Gulim, sans-serif; color: rgb(119, 119, 119);&quot;&gt;2012.09.11 14:18&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/toolbar/popup/abuseReport/?entryId=121&amp;amp;commentId=9265455&quot; style=&quot;color: rgb(51, 51, 51);&quot;&gt;신고&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;control&quot;&gt;&lt;a href=&quot;http://javacan.tistory.com/121#comment9265455&quot; class=&quot;address&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnAddress.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;modify&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 24px; padding-bottom: 2px; background: url(&amp;quot;images/btnModifyDelete.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://javacan.tistory.com/entry/131#&quot; class=&quot;write&quot; style=&quot;color: rgb(51, 51, 51); padding-left: 13px; padding-bottom: 2px; background: url(&amp;quot;images/btnReply.gif&amp;quot;) no-repeat;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;p style=&quot;margin-top: 3px; margin-right: 0px; margin-left: 0px; padding: 0px;&quot;&gt;사이트메시에 대한 궁금증을 풀어주셔서 감사합니다 ^^&amp;nbsp;&lt;br /&gt;잘 읽고 갑니다~&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li id=&quot;comment9265455&quot; style=&quot;border-bottom: 1px dashed rgb(153, 153, 153); margin: 0px 0px 7px; padding: 0px 0px 7px;&quot;&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;article&quot; style=&quot;width: 610px; font-size: 12px; font-family: dotum; color: rgb(102, 102, 102); overflow: hidden; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;article&quot; style=&quot;width: 610px; font-size: 12px; font-family: dotum; color: rgb(102, 102, 102); overflow: hidden; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;article&quot; style=&quot;width: 610px; font-size: 12px; font-family: dotum; color: rgb(102, 102, 102); overflow: hidden; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;article&quot; style=&quot;width: 610px; font-size: 12px; font-family: dotum; color: rgb(102, 102, 102); overflow: hidden; line-height: 18px;&quot;&gt;출처 -&amp;nbsp;http://javacan.tistory.com/entry/131&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>JAVA</category>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/76</guid>
      <comments>https://wowstudy.tistory.com/76#entry76comment</comments>
      <pubDate>Thu, 4 Aug 2016 00:14:22 +0900</pubDate>
    </item>
    <item>
      <title>공공데이터포털 오픈 API 사용</title>
      <link>https://wowstudy.tistory.com/75</link>
      <description>&lt;p&gt;&lt;a href=&quot;http://blog.naver.com/tmtsw/120191897875&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;출처 -&amp;nbsp;http://blog.naver.com/tmtsw/120191897875&lt;/a&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: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/215CB54256AE06F41E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F215CB54256AE06F41E&quot; width=&quot;500&quot; height=&quot;5194&quot; filename=&quot;img005.jpg&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;</description>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/75</guid>
      <comments>https://wowstudy.tistory.com/75#entry75comment</comments>
      <pubDate>Sun, 31 Jan 2016 22:07:41 +0900</pubDate>
    </item>
    <item>
      <title>윈도우에 아파치 설치 2.2.3 httpd.conf 완전분해</title>
      <link>https://wowstudy.tistory.com/74</link>
      <description>&lt;p&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;아파치2.2.3은 윈도XP에서도 동적공유객체(DSO:Dynamic Shared Object)와 다중처리 모듈(MPM:Multi-Processing Module) 모드로 작동 된다. 아파치 매뉴얼에 나와 있는 것을 근거로 한다면 MPM은 기존의 프로세스 기반(process-based) 서버 보다는 적은 시스템 자원으로 여러개의 요청을 처리한다고 기술되어져 있다. 이 MPM을 제어하기 위해서 중요한 지시어(directive)는 ThreadsPerChild이며, 자식 프로세스(child process)와 최대연결(MaxClients)을 어떻게 설정하느냐 그리고 얼마나 많은 스레드(threads)가 메모리에서 작동하느냐 또는 적절하게 무리없이 처리하느냐에 따라서 웹서버의 서비스 능력(요청에 대응) 및 성능이 결정된다. *** httpd.conf의 파일에 대한 기본적 설정을 파악해 보기. ***&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# This is the main Apache HTTP server configuration file. It contains the&lt;/p&gt;&lt;p&gt;# configuration directives that give the server its instructions.&lt;/p&gt;&lt;p&gt;# See &amp;lt;URL:http://httpd.apache.org/docs/2.2/&amp;gt; for detailed information.&lt;/p&gt;&lt;p&gt;# In particular, see&amp;nbsp;&lt;/p&gt;&lt;p&gt;# &amp;lt;URL:http://httpd.apache.org/docs/2.2/mod/directives.html&amp;gt;&lt;/p&gt;&lt;p&gt;# for a discussion of each configuration directive.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Do NOT simply read the instructions in here without understanding&lt;/p&gt;&lt;p&gt;# what they do. They're here only as hints or reminders. If you are unsure&lt;/p&gt;&lt;p&gt;# consult the online docs. You have been warned.&amp;nbsp;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Configuration and logfile names: If the filenames you specify for many&lt;/p&gt;&lt;p&gt;# of the server's control files begin with &quot;/&quot; (or &quot;drive:/&quot; for Win32), the&lt;/p&gt;&lt;p&gt;# server will use that explicit path. If the filenames do *not* begin&lt;/p&gt;&lt;p&gt;# with &quot;/&quot;, the value of ServerRoot is prepended -- so &quot;logs/foo.log&quot;&lt;/p&gt;&lt;p&gt;# with ServerRoot set to &quot;C:/Program Files/Apache2.2&quot; will be interpreted by the&lt;/p&gt;&lt;p&gt;# server as &quot;C:/Program Files/Apache2.2/logs/foo.log&quot;.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# NOTE: Where filenames are specified, you must use forward slashes&lt;/p&gt;&lt;p&gt;# instead of backslashes (e.g., &quot;c:/apache&quot; instead of &quot;c:\apache&quot;).&lt;/p&gt;&lt;p&gt;# If a drive letter is omitted, the drive on which Apache.exe is located&lt;/p&gt;&lt;p&gt;# will be used by default. It is recommended that you always supply&lt;/p&gt;&lt;p&gt;# an explicit drive letter in absolute paths, however, to avoid&lt;/p&gt;&lt;p&gt;# confusion.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# ThreadsPerChild: constant number of worker threads in the server process&lt;/p&gt;&lt;p&gt;# MaxRequestsPerChild: maximum number of requests a server process serves&lt;/p&gt;&lt;p&gt;ThreadsPerChild 250&lt;/p&gt;&lt;p&gt;MaxRequestsPerChild 0&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 윈도XP에 보면 작업관리자에 프로세스탭이 있는데 웹사이트에 방문자가 오면 페이지를 보여주기 위해서 해당 프로세스가 떠 있다가 이를 응답하면서 서비스를 해주게 되는데 이렇게 서비스를 하기 위해서 메모리에 떠 있는 프로세스내에는 워커 스레드(worker threads)라는 것들이 실질적인 요청을 받아 처리한다. ThreadsPerChild는 하나의 프로세스당 몇개의 워커 스레드를 일정하게 유지하고 있을 것인가를 결정한다. 윈도우용 아파치2.2.x의 ThreadsPerChild 기본값은 250개이다. 보다 빠른 CPU와 보다 많은 메모리에 따라서 이 개수를 늘려서 보다 많은 웹사이트 방문자를 수용할 수 있으므로, 윈앤위처럼 주메모리가 128Mb라면 매우적은 방문자만을 수용할 밖에 없다. 그렇지 않다면 일반 웹페이지와는 달리 이미지 사용을 최대한 자제해서 페이지를 구성해야 한다. MaxRequestsPerChild는 프로세스 하나가 몇개의 요청을 처리하느냐를 결정하는데 1000이면 1000번의 요청을 처리한 후 소멸되고, 0이면 서비스후에 소멸되지 않고 그 다음 요청을 계속 받아들이게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# ServerRoot: The top of the directory tree under which the server's&lt;/p&gt;&lt;p&gt;# configuration, error, and log files are kept.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Do not add a slash at the end of the directory path. If you point&lt;/p&gt;&lt;p&gt;# ServerRoot at a non-local disk, be sure to point the LockFile directive&lt;/p&gt;&lt;p&gt;# at a local disk. If you wish to share the same ServerRoot for multiple&lt;/p&gt;&lt;p&gt;# httpd daemons, you will need to change at least LockFile and PidFile.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;ServerRoot &quot;C:/Program Files/Apache2.2&quot;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 지시어 ServerRoot는 아파치를 운영하고 유지할 때 필요한 여러가지 파일이나 디렉토리들이 유지되는 최상위 위치를 지정한다. 아파치 설치시 사용자정의(custom)로 선택해서 변경했다면 그때 변경된 위치에 따라서 기본값이 다르다. 간단히 말해 아파치가 설치된 경로가 서버루트(ServerRoot)가 된다. 아파치에서 경로를 설정할 때 유의해할 점은 백슬래쉬가 아니고 슬래쉬(/)를 사용한다는 것이다. 그리고 &quot;c:/apache2&quot;나 윈도우의 전통적인 프로그램 설치 경로인 &quot;C:/Program Files/&quot; 하위에 설치되어도 무방하지만 경로가 정확해야 이 디렉터리를 기준으로 아파치관련 부속파일을 경로를 연결해서 사용할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Listen: Allows you to bind Apache to specific IP addresses and/or&lt;/p&gt;&lt;p&gt;# ports, instead of the default. See also the &amp;lt;VirtualHost&amp;gt;&lt;/p&gt;&lt;p&gt;# directive.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Change this to Listen on specific IP addresses as shown below to&amp;nbsp;&lt;/p&gt;&lt;p&gt;# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#Listen 12.34.56.78:80&lt;/p&gt;&lt;p&gt;Listen 80&lt;/p&gt;&lt;p&gt;&amp;nbsp;아이피 영역을 지정해서 사용자들을 분산시키는 등 로드밸런싱과 관련사항은 여기서 제외하므로 기본값 listen [포트]와 관련된 사항은 제외하고, Listen은 실질적으로 아파치를 통해서 서비스하는 호스트 컴퓨터의 IP(1대는 생략가능)와 웹서비스 기본 포트 80이 기본값이다. 이 포트를 통해서 웹서버는 요청을 받아 들이게 된다. 그러나 8000또는 8080처럼 포트를 바꾸어 서비스를 할 수 있으며, 이 때 윈도XP의 방화벽을 확인하고 해당 포트를 개방해 주어야 한다. 8000포트 또는 8080포트를 사용할 경우 http://도메인:8000 또는 http://도메인:8080올 서비스를 하게 되지만, 무료로 포트포워딩을 서비스 받아서 직접 http://도메인으로 연결이 가능하다. 포트포워딩은 대부분 일반 사용자들이 가정에 웹서비스를 하지 못하도록 ISP측에서 이를 막아 놓았을 경우 포트포워딩을 이용한다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Dynamic Shared Object (DSO) Support&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# To be able to use the functionality of a module which was built as a DSO you&lt;/p&gt;&lt;p&gt;# have to place corresponding `LoadModule' lines at this location so the&lt;/p&gt;&lt;p&gt;# directives contained in it are actually available _before_ they are used.&lt;/p&gt;&lt;p&gt;# Statically compiled modules (those listed by `httpd -l') do not need&lt;/p&gt;&lt;p&gt;# to be loaded here.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Example:&lt;/p&gt;&lt;p&gt;# LoadModule foo_module modules/mod_foo.so&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;각 모듈에 대해서 아래URL을 통해서 기능을 파악할 수 있다.&lt;/p&gt;&lt;p&gt;http://httpd.apache.org/docs/2.2/ko/mod/&lt;/p&gt;&lt;p&gt;http://httpd.apache.org/docs/2.2/mod/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;LoadModule actions_module modules/mod_actions.so&lt;/p&gt;&lt;p&gt;LoadModule alias_module modules/mod_alias.so&lt;/p&gt;&lt;p&gt;LoadModule asis_module modules/mod_asis.so&lt;/p&gt;&lt;p&gt;LoadModule auth_basic_module modules/mod_auth_basic.so&lt;/p&gt;&lt;p&gt;#LoadModule auth_digest_module modules/mod_auth_digest.so&lt;/p&gt;&lt;p&gt;#LoadModule authn_anon_module modules/mod_authn_anon.so&lt;/p&gt;&lt;p&gt;#LoadModule authn_dbm_module modules/mod_authn_dbm.so&lt;/p&gt;&lt;p&gt;LoadModule authn_default_module modules/mod_authn_default.so&lt;/p&gt;&lt;p&gt;LoadModule authn_file_module modules/mod_authn_file.so&lt;/p&gt;&lt;p&gt;#LoadModule authz_dbm_module modules/mod_authz_dbm.so&lt;/p&gt;&lt;p&gt;LoadModule authz_default_module modules/mod_authz_default.so&lt;/p&gt;&lt;p&gt;LoadModule authz_groupfile_module modules/mod_authz_groupfile.so&lt;/p&gt;&lt;p&gt;LoadModule authz_host_module modules/mod_authz_host.so&lt;/p&gt;&lt;p&gt;LoadModule authz_user_module modules/mod_authz_user.so&lt;/p&gt;&lt;p&gt;LoadModule autoindex_module modules/mod_autoindex.so&lt;/p&gt;&lt;p&gt;#LoadModule cern_meta_module modules/mod_cern_meta.so&lt;/p&gt;&lt;p&gt;LoadModule cgi_module modules/mod_cgi.so&lt;/p&gt;&lt;p&gt;#LoadModule dav_module modules/mod_dav.so&lt;/p&gt;&lt;p&gt;#LoadModule dav_fs_module modules/mod_dav_fs.so&lt;/p&gt;&lt;p&gt;#LoadModule deflate_module modules/mod_deflate.so&lt;/p&gt;&lt;p&gt;LoadModule dir_module modules/mod_dir.so&lt;/p&gt;&lt;p&gt;LoadModule env_module modules/mod_env.so&lt;/p&gt;&lt;p&gt;#LoadModule expires_module modules/mod_expires.so&lt;/p&gt;&lt;p&gt;#LoadModule file_cache_module modules/mod_file_cache.so&lt;/p&gt;&lt;p&gt;#LoadModule headers_module modules/mod_headers.so&lt;/p&gt;&lt;p&gt;LoadModule imagemap_module modules/mod_imagemap.so&lt;/p&gt;&lt;p&gt;LoadModule include_module modules/mod_include.so&lt;/p&gt;&lt;p&gt;#LoadModule info_module modules/mod_info.so&lt;/p&gt;&lt;p&gt;LoadModule isapi_module modules/mod_isapi.so&lt;/p&gt;&lt;p&gt;LoadModule log_config_module modules/mod_log_config.so&lt;/p&gt;&lt;p&gt;LoadModule mime_module modules/mod_mime.so&lt;/p&gt;&lt;p&gt;#LoadModule mime_magic_module modules/mod_mime_magic.so&lt;/p&gt;&lt;p&gt;#LoadModule proxy_module modules/mod_proxy.so&lt;/p&gt;&lt;p&gt;#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so&lt;/p&gt;&lt;p&gt;#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so&lt;/p&gt;&lt;p&gt;#LoadModule proxy_connect_module modules/mod_proxy_connect.so&lt;/p&gt;&lt;p&gt;#LoadModule proxy_http_module modules/mod_proxy_http.so&lt;/p&gt;&lt;p&gt;#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so&lt;/p&gt;&lt;p&gt;LoadModule negotiation_module modules/mod_negotiation.so&lt;/p&gt;&lt;p&gt;#LoadModule rewrite_module modules/mod_rewrite.so&lt;/p&gt;&lt;p&gt;LoadModule setenvif_module modules/mod_setenvif.so&lt;/p&gt;&lt;p&gt;#LoadModule speling_module modules/mod_speling.so&lt;/p&gt;&lt;p&gt;#LoadModule status_module modules/mod_status.so&lt;/p&gt;&lt;p&gt;#LoadModule unique_id_module modules/mod_unique_id.so&lt;/p&gt;&lt;p&gt;LoadModule userdir_module modules/mod_userdir.so&lt;/p&gt;&lt;p&gt;#LoadModule usertrack_module modules/mod_usertrack.so&lt;/p&gt;&lt;p&gt;#LoadModule vhost_alias_module modules/mod_vhost_alias.so&lt;/p&gt;&lt;p&gt;#LoadModule ssl_module modules/mod_ssl.so&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 지시어 LoadModule은 아파치 실행시에 필요로하는 기능들을 가진 파일(so)을 불러오는 기능을 수행한다. 예를들어 mod_vhost_alias.so이라는 모듈을 Load해야 virtualhost로 IP재사용이 가능하게 해서 여러개의 사이트를 연결할 수 있는데 이처럼 특정한 기능을 수행하는 모듈이 아파치 실행파일 httpd.exe와 함께 작동하도록 하게해서 필요한 기능은 주석(#)처리를 함으로써 load 또는 unload가 가능한 것이 동적공유객체(DSO)이다. 위에 목록은 아파치 2.2.3 for 윈도우에서의 기본 설정상태이다. 모듈을 Load하는 만큼 메모리를 소모하게 되므로 불필요한 기능은 unload하는 것이 효율적이다. 뿐만 아니라 서드파티(3th-Party) 모듈(so)도 쉽게 load해서 사용할 수 있는 것이 장점이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#리눅스에서 아파치2.2.3을 운영하는 경험상 mod_authz_host.so mod_log_config.so mod_setenvif.so mod_mime.so mod_dir.so mod_userdir.so 로 6개정도의 모듈만으로 기본 운영이 된다. 그러나 CGI를 구현하기 위해서는 PHP 모듈, Perl 모듈, 그리고 DOS공격을 대비한 모듈, 프록시 관련 모듈, 웹방화벽 모듈, chroot 모듈, 대역폭 스로틀링 등 여러가지 가지 보조 기능들을 추가해서 운영하게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# ServerAdmin: Your address, where problems with the server should be&lt;/p&gt;&lt;p&gt;# e-mailed. This address appears on some server-generated pages, such&lt;/p&gt;&lt;p&gt;# as error documents. e.g. admin@your-domain.com&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;ServerAdmin admin@winnwe.com&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 사이트 관리자의 메일을 설정하는 SeverAdmin 지시어이다. 오류가 발생할 때 나타나게 되므로 관리자가 미처 발견하지 못하는 오류나 또는 장애발생시 친절한 방문자로 부터 연락을 받을 수도 있다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# ServerName gives the name and port that the server uses to identify itself.&lt;/p&gt;&lt;p&gt;# This can often be determined automatically, but we recommend you specify&lt;/p&gt;&lt;p&gt;# it explicitly to prevent problems during startup.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# If your host doesn't have a registered DNS name, enter its IP address here.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;ServerName 127.0.0.1:80&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 서버이름 지시어 ServerName은 정식도메인이나 유동IP 포트포워딩을 통한 무료 서브도메인처럼 도메인 이름을 입력하는 것이 보통이지만 영향을 받지는 않는다. DNS에 정식으로 등록되지 않았다면 127.0.0.1이나 호스트 IP를 입력하라고 하는데 localhost 또는 로컬컴퓨터 이름도 무방하다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# DocumentRoot: The directory out of which you will serve your&lt;/p&gt;&lt;p&gt;# documents. By default, all requests are taken from this directory, but&lt;/p&gt;&lt;p&gt;# symbolic links and aliases may be used to point to other locations.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;DocumentRoot &quot;C:/Program Files/Apache2.2/htdocs&quot;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 지시어 DocumentRoot는 실제 웹사이트를 운영하는 경우의 기본적인 웹사이트의 루트(root)가 된다. 예를들어 웹사이트를 운영하기 위해서 &quot;D:/www/myweb&quot;을 루트로 지정한다. 아파치기 실행되는 로컬 컴퓨터상에서 기본 위치는 DocumentRoot 지시어로 지정을 하고 이 디렉토리에 대한 접근제어(Access Control)는 Directory 지시어로 설정한다. 초보자들이 혼란스러워 하는 경우가 403권한없음 오류인데 자신이 원하는 폴더를 DocumentRoot 지정했으면, 그다음은 Directory 지시어를 통해서 해당 폴더에 대한 접근을 설정해 주어야 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Each directory to which Apache has access can be configured with respect&lt;/p&gt;&lt;p&gt;# to which services and features are allowed and/or disabled in that&lt;/p&gt;&lt;p&gt;# directory (and its subdirectories).&amp;nbsp;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# First, we configure the &quot;default&quot; to be a very restrictive set of&amp;nbsp;&lt;/p&gt;&lt;p&gt;# features.&amp;nbsp;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&amp;lt;Directory /&amp;gt;&lt;/p&gt;&lt;p&gt;Options FollowSymLinks&lt;/p&gt;&lt;p&gt;AllowOverride None&lt;/p&gt;&lt;p&gt;Order deny,allow&lt;/p&gt;&lt;p&gt;Deny from all&lt;/p&gt;&lt;p&gt;Satisfy all&lt;/p&gt;&lt;p&gt;&amp;lt;/Directory&amp;gt;&lt;/p&gt;&lt;p&gt;아파치 디렉터리에 대한 접근제어(Access control) 설정은 Directory [경로]로 지정한다. 여기서 FollowSymLinks는 심볼릭링크(윈도우의 경우 단축아이콘)를 보안상 사용하지 않는 것이 유리하고, AllowOverride는 인증(.htaccess)에 관여하고 Order는 차단(Deny) 및 허용(Allow)에 대한 기본값을 설정하는데 Deny,Allow는 차단이 기본값이지만 Allow,Deny는 허용을 기본값을 한다. 먼저 Order로 기본값을 설정한 다음 Deny from 과 Allow from으로 차단 및 허용을 지정한다. Satisfy all은 Allow form에 해당하는 경우만 허용하는데 Allow from이 지정되지 않았으므로 모두 Deny가 된다. 시스템 루트이므로 모두 차단된다고 할 수 있다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Note that from this point forward you must specifically allow&lt;/p&gt;&lt;p&gt;# particular features to be enabled - so if something's not working as&lt;/p&gt;&lt;p&gt;# you might expect, make sure that you have specifically enabled it&lt;/p&gt;&lt;p&gt;# below.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# This should be changed to whatever you set DocumentRoot to.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#&amp;lt;Directory &quot;C:/Program Files/Apache2.2/htdocs&quot;&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아파치 기본 설정은 C:/Program Files/Apache2.2/htdoc가 DocumentRoot이다. 이 DocumentRoot를 변경함으로써 자신의 원하는 사이트의 루트를 설정하게 된다 예를들면 d:/www/mysite라는 윈도XP의 폴더로 DocumentRoot를 설정했다면, d:/www/mysite라는 폴더를 Directory 지시어를 통해서 접근 설정을 해주어야 한다. 그렇지 않으면 권한없음(403) 오류를 출력하게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;Directory &quot;C:/www/mysite&quot;&amp;gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Possible values for the Options directive are &quot;None&quot;, &quot;All&quot;,&lt;/p&gt;&lt;p&gt;# or any combination of:&lt;/p&gt;&lt;p&gt;# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Note that &quot;MultiViews&quot; must be named *explicitly* --- &quot;Options All&quot;&lt;/p&gt;&lt;p&gt;# doesn't give it to you.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# The Options directive is both complicated and important. Please see&lt;/p&gt;&lt;p&gt;# http://httpd.apache.org/docs/2.2/mod/core.html#options&lt;/p&gt;&lt;p&gt;# for more information.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;Options Indexes FollowSymLinks&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# AllowOverride controls what directives may be placed in .htaccess files.&lt;/p&gt;&lt;p&gt;# It can be &quot;All&quot;, &quot;None&quot;, or any combination of the keywords:&lt;/p&gt;&lt;p&gt;# Options FileInfo AuthConfig Limit&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;AllowOverride None&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Controls who can get stuff from this server.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;Order allow,deny&lt;/p&gt;&lt;p&gt;Allow from all&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/Directory&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# DirectoryIndex: sets the file that Apache will serve if a directory&lt;/p&gt;&lt;p&gt;# is requested.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&amp;lt;IfModule dir_module&amp;gt;&lt;/p&gt;&lt;p&gt;DirectoryIndex index.html&lt;/p&gt;&lt;p&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;IfModule지사자에 의해서 Dir모듈이(mod_dir.so)이 로드되어 졌을때 조건부 설정되며 DirectoryIndex 지시어는 디렉터리의 인덱스페이지를 설정한다. 인덱스 페이지는 파일이름 없이 디렉터리를 요청할 시 기본적으로 연결되는 파일이름이다. 동적페이지가 아닌 경우 index.html 또는 index.htm을 사용한다. 하나 이상의 파일을 순서대로 나열할 경우 앞쪽에 위치할 수록 우선순위가 높다. 예를들면 DirectoryIndex index.html, index.htm, index.php로 지정하면, html, htm, php순으로 우선순위가 부여된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# The following lines prevent .htaccess and .htpasswd files from being&amp;nbsp;&lt;/p&gt;&lt;p&gt;# viewed by Web clients.&amp;nbsp;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&amp;lt;FilesMatch &quot;^\.ht&quot;&amp;gt;&lt;/p&gt;&lt;p&gt;Order allow,deny&lt;/p&gt;&lt;p&gt;Deny from all&lt;/p&gt;&lt;p&gt;&amp;lt;/FilesMatch&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;FilesMatch 지시어는 정규표현식(regular expression)으로 특정한 파일형식을 지정해서 해당 파일에 대한 접근을 설정할 수 있다. 위에 설정은 확장자 ht를 가지는 모든 파일은 인정하지 않고 무시해 버린다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# ErrorLog: The location of the error log file.&lt;/p&gt;&lt;p&gt;# If you do not specify an ErrorLog directive within a &amp;lt;VirtualHost&amp;gt;&lt;/p&gt;&lt;p&gt;# container, error messages relating to that virtual host will be&lt;/p&gt;&lt;p&gt;# logged here. If you *do* define an error logfile for a &amp;lt;VirtualHost&amp;gt;&lt;/p&gt;&lt;p&gt;# container, that host's errors will be logged there and not here.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;ErrorLog logs/error.log&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아파치 오류를 기록하는 파일을 지정한다. 아파치가 정상작동을 하지 않을 경우 가장먼저 확인해야할 파일이다. 이 파일의 경로와 연결되는 것은 이미 위에서 ServerRoot를 통해서 지정을 했으므로 ServerRoot/logs/error.log파일이 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# LogLevel: Control the number of messages logged to the error_log.&lt;/p&gt;&lt;p&gt;# Possible values include: debug, info, notice, warn, error, crit,&lt;/p&gt;&lt;p&gt;# alert, emerg.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;LogLevel warn&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;오류를 기록하는 수준을 지정한다. 기본값은 warn이다. 접속량이 많은 경우 이 로그를 기록하는 자체도 성능에 영향을 줄 수 있으며, 갑자기 서버가 느려지는 경우 로그파일이 비대해 지지 않았는지를 먼저 점검해야 한다. 그러나 그 이전에 적정크기가 되면 새로운 파일로 로그가 기록해주는 것이 좋은 방법이다. 예를들면 3~5Mb 크기 단위로 로그가 기록되도록 해준다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;IfModule log_config_module&amp;gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# The following directives define some format nicknames for use with&lt;/p&gt;&lt;p&gt;# a CustomLog directive (see below).&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;mod_log_config는 이용한 기록 아래의 아파치 문서를 참조한다.&lt;/p&gt;&lt;p&gt;http://httpd.apache.org/docs/2.2/ko/mod/mod_log_config.html&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;LogFormat &quot;%h %l %u %t \&quot;%r\&quot; %&amp;gt;s %b \&quot;%i\&quot; \&quot;%i\&quot;&quot; combined&lt;/p&gt;&lt;p&gt;LogFormat &quot;%h %l %u %t \&quot;%r\&quot; %&amp;gt;s %b&quot; common&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;mod_logio를 이용하는 방법은 아래의 아파치 문서를 참조한다.&lt;/p&gt;&lt;p&gt;http://httpd.apache.org/docs/2.2/ko/mod/mod_logio.html&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;IfModule logio_module&amp;gt;&lt;/p&gt;&lt;p&gt;# You need to enable mod_logio.c to use %I and %O&lt;/p&gt;&lt;p&gt;LogFormat &quot;%h %l %u %t \&quot;%r\&quot; %&amp;gt;s %b \&quot;%i\&quot; \&quot;%i\&quot; %I %O&quot; combinedio&lt;/p&gt;&lt;p&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# The location and format of the access logfile (Common Logfile Format).&lt;/p&gt;&lt;p&gt;# If you do not define any access logfiles within a &amp;lt;VirtualHost&amp;gt;&lt;/p&gt;&lt;p&gt;# container, they will be logged here. Contrariwise, if you *do*&lt;/p&gt;&lt;p&gt;# define per-&amp;lt;VirtualHost&amp;gt; access logfiles, transactions will be&lt;/p&gt;&lt;p&gt;# logged therein and *not* in this file.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;CustomLog logs/access.log common&lt;/p&gt;&lt;p&gt;access.log와 error.log 2개만이 설정되어져 있으나 로그파일은 사용자 정의해서 얼마든지 다른 형식으로 저장할 수 있다. mod_rewrite 모듈을 이용할 때도 전용 로그를 생성하고 기록할 수 있다. 로그파일도 성능에 영향을 받는다는 것을 잊어선 안된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# If you prefer a logfile with access, agent, and referer information&lt;/p&gt;&lt;p&gt;# (Combined Logfile Format) you can use the following directive.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#CustomLog logs/access.log combined&lt;/p&gt;&lt;p&gt;combined는 사용자 정의로 여러가지 정보를 조합해서 사용한다는 것이고 commin은 공통적으로 사용된다는 레이블 이상의 의미는 없다.&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;IfModule alias_module&amp;gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Redirect: Allows you to tell clients about documents that used to&amp;nbsp;&lt;/p&gt;&lt;p&gt;# exist in your server's namespace, but do not anymore. The client&amp;nbsp;&lt;/p&gt;&lt;p&gt;# will make a new request for the document at its new location.&lt;/p&gt;&lt;p&gt;# Example:&lt;/p&gt;&lt;p&gt;# Redirect permanent /foo http://127.0.0.1/bar&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Redirect 지시어는 특정한 위치로 재지향(Redirect)할 때 쓴다.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Alias: Maps web paths into filesystem paths and is used to&lt;/p&gt;&lt;p&gt;# access content that does not live under the DocumentRoot.&lt;/p&gt;&lt;p&gt;# Example:&lt;/p&gt;&lt;p&gt;# Alias /webpath /full/filesystem/path&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;별칭(Alias)을 사용할 수 있는 지시어 Alias는 경로(path)를 짧게 줄이는데 사요한다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# If you include a trailing / on /webpath then the server will&lt;/p&gt;&lt;p&gt;# require it to be present in the URL. You will also likely&lt;/p&gt;&lt;p&gt;# need to provide a &amp;lt;Directory&amp;gt; section to allow access to&lt;/p&gt;&lt;p&gt;# the filesystem path.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# ScriptAlias: This controls which directories contain server scripts.&amp;nbsp;&lt;/p&gt;&lt;p&gt;# ScriptAliases are essentially the same as Aliases, except that&lt;/p&gt;&lt;p&gt;# documents in the target directory are treated as applications and&lt;/p&gt;&lt;p&gt;# run by the server when requested rather than as documents sent to the&lt;/p&gt;&lt;p&gt;# client. The same rules about trailing &quot;/&quot; apply to ScriptAlias&lt;/p&gt;&lt;p&gt;# directives as to Alias.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;ScriptAlias /cgi-bin/ &quot;C:/Program Files/Apache2.2/cgi-bin/&quot;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;디렉터리를 짧게 줄이는 별칭(Alias)에 스크립전용을 뜻하는 지시어 ScriptAlias는 긴 디렉터리 경로는 짧게 줄이는데 사용한다. cgi-bin이라는 cgi전용 디렉터리를 만들어 이곳에서만 실행이 가능하도록 설정한다. 그러나 홈과 이하 전체의 하위 디렉터리에서 cgi를 실행하려면 아래의 Derectory 지시어가 들어가 부분을 제거한다. 다시말해 별도로 cgi-bin에 대한 접근설정을 별도로 할 필요가 없으며, 홈디렉터리에 대한 접근 권한을 설정할 경우 Options +ExecCGI를 추가해 주면 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Perl CGI가 작동하지 않는 경우는 대표적으로 2가지 경우이다. 첫번째 500 오류로 내부서버 오류(Internal Server Error)가 발생하는 경우는 Perl 인터프리터 경로가 틀렸을 경우이고, 403 오류로 권한 금지(Access Forbidden)가 표기하는 경우는 Directory 지시어를 통해서 CGI가 실행되도록 설정되지 못한 경우이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# &quot;C:/Program Files/Apache2.2/cgi-bin&quot; should be changed to whatever your ScriptAliased&lt;/p&gt;&lt;p&gt;# CGI directory exists, if you have that configured.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&amp;lt;Directory &quot;C:/Program Files/Apache2.2/cgi-bin&quot;&amp;gt;&lt;/p&gt;&lt;p&gt;AllowOverride None&lt;/p&gt;&lt;p&gt;Options None&lt;/p&gt;&lt;p&gt;Order allow,deny&lt;/p&gt;&lt;p&gt;Allow from all&lt;/p&gt;&lt;p&gt;&amp;lt;/Directory&amp;gt;&lt;/p&gt;&lt;p&gt;CGI wrapPer로써 특정 디렉터리에서만 CGI가 실행되도록 제한한다. PHP가 워낙 성능이 강력하고 국내 웹환경이 아파치 웹서버에는 PHP가 필수적 사용되므로 특정 디렉터리내에서 CGI가 실행되도록 하는 경우는 이제 거의 드물 것이다. 아파치 메뉴얼에도 웹서버 보안이 잘된다면 특정 디렉터리로 제한을 두지 않아도 상관이 없다고 한다. mod_cgi(d)를 통해서 Perl CGI를 구현하지 않으려면 제거해도 무방하다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&amp;nbsp;&lt;/p&gt;&lt;p&gt;# Apache parses all CGI scripts for the shebang line by default.&lt;/p&gt;&lt;p&gt;# This comment line, the first line of the script, consists of the symbols&lt;/p&gt;&lt;p&gt;# pound (#) and exclamation (!) followed by the path of the program that&amp;nbsp;&lt;/p&gt;&lt;p&gt;# can execute this specific script. For a perl script, with perl.exe in&lt;/p&gt;&lt;p&gt;# the C:\Program Files\Perl directory, the shebang line should be:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#!c:/program files/perl/perl&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;펄(Perl) CGI를 사용할 때 파일의 첫번째 라인에 Perl 인터프리(해석기: Interpreter)가 설치된 경로를 #!와 함께 기술한다. 만약 펄 인터프리터가 설치되어 있지 않으면 아래 사이트에서 간단히 이름만 입력하고 윈도우용(win32)의 zip나 msi로 다운로드 받아 설치할 수 있다. 2006년 11월 현재 최신 버젼은 5.8.8.819이다&lt;/p&gt;&lt;p&gt;다운로드: http://www.activestate.com/store/activeperl/download/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다운로드후에 Pel설치 경로를 특별히 변경하지 않으면 #!C:/Perl에 설치가 되고 실행파일 perl.exe를 지정해서 #!C:/Perl/bin/perl.exe 을 항상 Perl CGI 파일의 맨앞에 위치시킨다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Note you _must_not_ indent the actual shebang line, and it must be the&lt;/p&gt;&lt;p&gt;# first line of the file. Of course, CGI processing must be enabled by&amp;nbsp;&lt;/p&gt;&lt;p&gt;# the appropriate ScriptAlias or Options ExecCGI directives for the files&amp;nbsp;&lt;/p&gt;&lt;p&gt;# or directory in question.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# However, Apache on Windows allows either the Unix behavior above, or can&lt;/p&gt;&lt;p&gt;# use the Registry to match files by extention. The command to execute&amp;nbsp;&lt;/p&gt;&lt;p&gt;# a file of this type is retrieved from the registry by the same method as&amp;nbsp;&lt;/p&gt;&lt;p&gt;# the Windows Explorer would use to handle double-clicking on a file.&lt;/p&gt;&lt;p&gt;# These script actions can be configured from the Windows Explorer View menu,&amp;nbsp;&lt;/p&gt;&lt;p&gt;# 'Folder Options', and reviewing the 'File Types' tab. Clicking the Edit&lt;/p&gt;&lt;p&gt;# button allows you to modify the Actions, of which Apache 1.3 attempts to&lt;/p&gt;&lt;p&gt;# perform the 'Open' Action, and failing that it will try the shebang line.&lt;/p&gt;&lt;p&gt;# This behavior is subject to change in Apache release 2.0.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Each mechanism has it's own specific security weaknesses, from the means&lt;/p&gt;&lt;p&gt;# to run a program you didn't intend the website owner to invoke, and the&lt;/p&gt;&lt;p&gt;# best method is a matter of great debate.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# To enable the this Windows specific behavior (and therefore -disable- the&lt;/p&gt;&lt;p&gt;# equivilant Unix behavior), uncomment the following directive:&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#ScriptInterpreterSource registry&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;hello.pl파일의 내용을 아래와 같이 작성을 했다고 한다면&lt;/p&gt;&lt;p&gt;#!C:/Perl/bin/perl.exe&amp;nbsp;&lt;/p&gt;&lt;p&gt;print &quot;Content-type: text/html\n\n&quot;;&lt;/p&gt;&lt;p&gt;print &quot;Hello, World.&quot;;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ScriptInterpreterSource registry를 활성화하면 Perl 해석기 경로인 #!C:/Perl/bin/perl.exe를 생략할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# The directive above can be placed in individual &amp;lt;Directory&amp;gt; blocks or the&lt;/p&gt;&lt;p&gt;# .htaccess file, with either the 'registry' (Windows behavior) or 'script'&amp;nbsp;&lt;/p&gt;&lt;p&gt;# (Unix behavior) option, and will override this server default option.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# DefaultType: the default MIME type the server will use for a document&lt;/p&gt;&lt;p&gt;# if it cannot otherwise determine one, such as from filename extensions.&lt;/p&gt;&lt;p&gt;# If your server contains mostly text or HTML documents, &quot;text/plain&quot; is&lt;/p&gt;&lt;p&gt;# a good value. If most of your content is binary, such as applications&lt;/p&gt;&lt;p&gt;# or images, you may want to use &quot;application/octet-stream&quot; instead to&lt;/p&gt;&lt;p&gt;# keep browsers from trying to display binary files as though they are&lt;/p&gt;&lt;p&gt;# text.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;DefaultType text/plain&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;웹서버가 데이타를 전송하는 문서 형식(인터넷 매체)을 지정한다. 기본형식은 단순한 텍스트(plain text)이지만, 지금의 웹 컨텐츠들은 단순한 텍스트 형식만이 아닌 여러가지 다영한 형태의 데이타를 전송하는데, 데이타를 전송하기 전에 먼저 어떤 형식의 데이타를 전송하다는 헤더(Header) 정보를 먼저 전송함으로써 클라이언트 측은 이러한 정보를 받아 데이타에 따른 적절한 프로그램을 작동시키게 된다. 예를들면 PDF문서를 웹서버가 전송할 때 클라이언트 컴퓨터인 윈도XP의 Acrobat Reader가 설치되어져 있어 폴더옵션에 파일형식이 등록되어져 있다면 웹브라우져에 Acrobat Reader가 작동되어져 PDF 문서가 열리게 된다. 이 경우 application/pdf 라는 MIME 형식(Type)을 지정함으로써 가능하다. application형식만이 전송효율을 높히기 위한 텍스트를 압축 전송하는 기술도 사용되므로 이러한 형식에 대한 MIME 형식 정보를 설정해 준다. 동적 페이지를 생성하는 Perl CGI 스크립트, PHP 스크립트들도 이러한 형식을 지정해주어야만 올바르게 웹브라우져에서 출력된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;IfModule mime_module&amp;gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# TypesConfig points to the file containing the list of mappings from&lt;/p&gt;&lt;p&gt;# filename extension to MIME-type.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;TypesConfig conf/mime.types&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MIME형식 지정되어져 있는 형식파일이 저장되어져 있는 위치와 파일이름이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# AddType allows you to add to or override the MIME configuration&lt;/p&gt;&lt;p&gt;# file specified in TypesConfig for specific file types.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#AddType application/x-gzip .tgz&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# AddEncoding allows you to have certain browsers uncompress&lt;/p&gt;&lt;p&gt;# information on the fly. Note: Not all browsers support this.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#AddEncoding x-compress .Z&lt;/p&gt;&lt;p&gt;#AddEncoding x-gzip .gz .tgz&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# If the AddEncoding directives above are commented-out, then you&lt;/p&gt;&lt;p&gt;# probably should define those extensions to indicate media types:&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;AddType application/x-compress .Z&lt;/p&gt;&lt;p&gt;AddType application/x-gzip .gz .tgz&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# AddHandler allows you to map certain file extensions to &quot;handlers&quot;:&lt;/p&gt;&lt;p&gt;# actions unrelated to filetype. These can be either built into the server&lt;/p&gt;&lt;p&gt;# or added with the Action directive (see below)&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# To use CGI scripts outside of ScriptAliased directories:&lt;/p&gt;&lt;p&gt;# (You will also need to add &quot;ExecCGI&quot; to the &quot;Options&quot; directive.)&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#AddHandler cgi-script .cgi&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Perl CGI를 작동시키려면 .pl을 아래처럼 추가해 준다.&lt;/p&gt;&lt;p&gt;AddHandler cgi-script .cgi .pl&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# For type maps (negotiated resources):&lt;/p&gt;&lt;p&gt;#AddHandler type-map var&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Filters allow you to process content before it is sent to the client.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# To parse .shtml files for server-side includes (SSI):&lt;/p&gt;&lt;p&gt;# (You will also need to add &quot;Includes&quot; to the &quot;Options&quot; directive.)&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#AddType text/html .shtml&lt;/p&gt;&lt;p&gt;#AddOutputFilter INCLUDES .shtml&lt;/p&gt;&lt;p&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# The mod_mime_magic module allows the server to use various hints from the&lt;/p&gt;&lt;p&gt;# contents of the file itself to determine its type. The MIMEMagicFile&lt;/p&gt;&lt;p&gt;# directive tells the module where the hint definitions are located.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#MIMEMagicFile conf/magic&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;인터넷 문서(RFC)의 형식이 지정되어져 있지 않을 때 파일의 내용을 통해 자동적으로 결정하게 되는데 MIMEMagicFile 지시어를 통해서 conf폴더의 하위의 magic파일을 힌트삼아서 문서 형식을 결정하게 된다.&lt;/p&gt;&lt;p&gt;참조: http://httpd.apache.org/docs/2.2/mod/mod_mime_magic.html#mimemagicfile&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Customizable error responses come in three flavors:&lt;/p&gt;&lt;p&gt;# 1) plain text 2) local redirects 3) external redirects&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Some examples:&lt;/p&gt;&lt;p&gt;#ErrorDocument 500 &quot;The server made a boo boo.&quot;&lt;/p&gt;&lt;p&gt;#ErrorDocument 404 /missing.html&lt;/p&gt;&lt;p&gt;#ErrorDocument 404 &quot;/cgi-bin/missing_handler.pl&quot;&lt;/p&gt;&lt;p&gt;#ErrorDocument 402 http://127.0.0.1/subscription_info.html&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 하드코드된 오류 메시지(hardcoded error message)로 아파치가 가진 기본적인 오류 메시지(페이지)는 흰색 바탕화면에 검은색 글씨로 그리 보기 좋은 페이지는 아니지만, 사용자정의를 통해서 향상된 오류 페이지를 구성할 수 있다. 위에 설명에 1. 텍스트 방식(사용자정의 메시지 포함), 2. 로컬사이트로 재지향, 3, 외부사이트로 재지향이 가능하다는 예를 보여주고 있다. 재지향(리다이렉트:redirect)을 좀 특별히 서브도메인을 만들고 오류 전용 페이지를 멋지게 디자인해서 보여주는 경우도 있다. 그러나 ErrorDocument 지시어는 굳이 사용하지 않아도 무방하다.&lt;/p&gt;&lt;p&gt;참조: http://httpd.apache.org/docs/2.2/mod/core.html#errordocument&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# EnableMMAP and EnableSendfile: On systems that support it,&amp;nbsp;&lt;/p&gt;&lt;p&gt;# memory-mapping or the sendfile syscall is used to deliver&lt;/p&gt;&lt;p&gt;# files. This usually improves server performance, but must&lt;/p&gt;&lt;p&gt;# be turned off when serving from networked-mounted&amp;nbsp;&lt;/p&gt;&lt;p&gt;# filesystems or if support for these functions is otherwise&lt;/p&gt;&lt;p&gt;# broken on your system.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;#EnableMMAP off&lt;/p&gt;&lt;p&gt;#EnableSendfile off&lt;/p&gt;&lt;p&gt;EnableMMAP은 메모리대응 (memory-mapping) 또는 메모리멥핑이라고 해서 디바이스 드라이버와 관련된 지식이 있을 경우 제대로 이해가 가능한 옵션인데 실제 아파치 성능향상에 영향을 주는 옵션이지만 자칫 역효과가 발생해서 서버의 성능을 떨어트리고 안정성을 해치는 경우가 있다고 하므로 기본값을 유지한다. EnableSendfile은 커널이 지원하는 메카니즘을 통해서 파일을 전송한다.&lt;/p&gt;&lt;p&gt;참조: http://httpd.apache.org/docs/2.2/mod/core.html#enablemmap&lt;/p&gt;&lt;p&gt;참조: http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Supplemental configuration&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# The configuration files in the conf/extra/ directory can be&amp;nbsp;&lt;/p&gt;&lt;p&gt;# included to add extra features or to modify the default configuration of&amp;nbsp;&lt;/p&gt;&lt;p&gt;# the server, or you may simply copy their contents here and change as&amp;nbsp;&lt;/p&gt;&lt;p&gt;# necessary.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;httpd.conf를 기능별로 분리해서 include함으로써 관리가 용이하다. 사용하지 않거나 필요하지 않은 파일은 주석처리해서 Include하지 않아도 된다. 윈앤위처럼 메모리 적은 상태로 서버를 운영하는 경우 다중 언어처리나 자동 인덱스, 그리고 웹서버에 대한 리얼타임 정보, 아파치 메뉴얼, 웹개발 도구관련 모듈은 Load하지 않는다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Server-pool management (MPM specific)&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-mpm.conf&lt;/p&gt;&lt;p&gt;Include conf/extra/mpm.conf&lt;/p&gt;&lt;p&gt;# 위에서 말한 다중처리 모듈(MPM)을 설정하는 파일&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Multi-language error messages&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-multilang-errordoc.conf&lt;/p&gt;&lt;p&gt;# 에러 메시지를 다중언어로 지원하도록 설정하는 파일&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Fancy directory listings&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-autoindex.conf&lt;/p&gt;&lt;p&gt;# 자동 인덱스 생성을 위해 설정을 하는 파일&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Language settings&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-languages.conf&lt;/p&gt;&lt;p&gt;# 다중 언어를 지원하기 위한 설정을 하는 파일&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# User home directories&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-userdir.conf&lt;/p&gt;&lt;p&gt;# 사용자 디렉터리에 대한 설정을 하는 파일&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Real-time info on requests and configuration&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-info.conf&lt;/p&gt;&lt;p&gt;# 운영되는 웹서버에 관한 상태나 정보출력을 설정하는 파일&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Virtual hosts&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-vhosts.conf&lt;/p&gt;&lt;p&gt;# IP재사용을 위한 가상호스트(VirtaulHost)를 설정하는 파일&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Local access to the Apache HTTP Server Manual&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-manual.conf&lt;/p&gt;&lt;p&gt;# 아파치 메뉴얼을 직접 웹사이트에서 이용하기 위해 설정하는 파일&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Distributed authoring and versioning (WebDAV)&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-dav.conf&lt;/p&gt;&lt;p&gt;# 웹사이트 개발 도구 WebDAV를 지원하는 모듈을 설정하는 파일&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Various default settings&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-default.conf&lt;/p&gt;&lt;p&gt;# 아파치 웹서버가 작동하기 위한 기본적인 설정 파일 - 아파일은 특별히 변경할 필요가 있을 경우는 수정된 값을 사용하지만, 대부분의 경우 기본값을 유지한 상태로 아파치는 잘 작동을 한다. 그러나 윈앤위사이트 처럼 조금이라도 아파치 성능을 끌어 올릴 필요 경우라면 많은 시행착오를 통해서 MPM과 함께 최적의 값을 찾아야 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 아파치기 2.0.xx에서는 httpd.conf가 하나로 구성된 것이 기본이었으나 2.2.x 부터는 분리되어졌다. 그러나 이것은 분리되던 묶여있던 상관이 없다. Include 지시어에 의해서 해당 위치에 해당 파일이 포함되는 것일 뿐이다. 분리되었을 경우는 편집상 편리함이 있기도 하고 반면에 불편한 경우도 있다. 다음번 웹로그에서 httpd.conf의 하위 디렉토리 extra에 위치한 부속 파일들을 분석하기로 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# Secure (SSL/TLS) connections&lt;/p&gt;&lt;p&gt;#Include conf/extra/httpd-ssl.conf&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;# Note: The following must must be present to support&lt;/p&gt;&lt;p&gt;# starting without SSL on platforms with no /dev/random equivalent&lt;/p&gt;&lt;p&gt;# but a statically compiled-in mod_ssl.&lt;/p&gt;&lt;p&gt;#&lt;/p&gt;&lt;p&gt;&amp;lt;IfModule ssl_module&amp;gt;&lt;/p&gt;&lt;p&gt;SSLRandomSeed startup builtin&lt;/p&gt;&lt;p&gt;SSLRandomSeed connect builtin&lt;/p&gt;&lt;p&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 지시어 IfModule ssl_module은 보안 소켓 레이어(SSL:Secure Sockets Layer) 모듈이 Load되어질 때 해당하는데, 인터넷을 통해서 비공개문서를 전송하기 위해서 네트스케이프(Netscape)에 의해 개발된 프로토콜의 일종이다. SSL 서버는 http가 아니고 https로 구분할 수 있다. 비용을 들여서 정식으로 SSL인증서를 필요로 하기 때문에 상업 사이트외에 일반적인 웹사이트에서는 사용되지 경우느 드물지만, SSL을 사용함으로써 클라이언트와 서버간의 암호화된 통신을 사용함으로 신뢰성을 높힐 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이제껏 httpd.conf 주설정 파일에 대한 내용을 살펴보았다. 보다 자세한 사항은 Extra하위 파일에서 다룬다.&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;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://agol.egloos.com/4811966&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;출처 -&amp;nbsp;&lt;/a&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;&lt;a href=&quot;http://agol.egloos.com/4811966&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://agol.egloos.com/4811966&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>웹</category>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/74</guid>
      <comments>https://wowstudy.tistory.com/74#entry74comment</comments>
      <pubDate>Fri, 15 Jan 2016 22:52:40 +0900</pubDate>
    </item>
    <item>
      <title>Genymotion Eclipse 연동 시 문제 There are no Categorized items</title>
      <link>https://wowstudy.tistory.com/73</link>
      <description>&lt;p&gt;이클립스에서 Genymotion을 연동하기 위해 Install new Software 메뉴에서&amp;nbsp;http://plugins.genymotion.com/eclipse 입력 시 설치할 수 있는 목록이 나타나지 않고,&lt;/p&gt;&lt;p&gt;There are no Categorized items 라고 나타나는 경우가 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이때 하단의&amp;nbsp;&lt;b&gt;검색 옵션에서&amp;nbsp;Group items by category 항목을 체크 해제&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: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2765BB3E569111E921&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2765BB3E569111E921&quot; width=&quot;500&quot; height=&quot;391&quot; filename=&quot;room015.png&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;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;+Genymotion in Eclipse&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;추가 설정 및 실행 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;1) 설치를 완료한 후에는 Ecelipse - Window - Preference - Genymobile 에서&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;line-height: 1.5; font-size: 10pt;&quot;&gt;Genymotion이 설치된 위치를 지정해놓아야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;예) D:\Dev\Ge&lt;/span&gt;nymobile\Genymotion&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;2) Genymotion으로 앱을 실행하려면 먼저 Genymotion로 가상 기기를 실행하여 띄워놓는다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;3) 이클립스에서 Genymotion 가상 기기에 설치할 앱 프로젝트를 선택한다.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;4) 그 다음 아래 사진과 같이 Genymotion 아이콘을 클릭하여&amp;nbsp;실행할 수&amp;nbsp;있다.&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: 398px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2717EE3456911BFD27&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2717EE3456911BFD27&quot; width=&quot;398&quot; height=&quot;139&quot; filename=&quot;room017.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;아이콘을 직접 클릭하여 실행(Ctrl+6으로도 가능)&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: left; 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: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/25425D3C56911C1333&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F25425D3C56911C1333&quot; width=&quot;500&quot; height=&quot;349&quot; filename=&quot;room018.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;Run As -&amp;gt; Android Application -&amp;gt; Android Device Chooser&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>이클립스</category>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/73</guid>
      <comments>https://wowstudy.tistory.com/73#entry73comment</comments>
      <pubDate>Sat, 9 Jan 2016 22:58:06 +0900</pubDate>
    </item>
    <item>
      <title>WebView 사용 시 여백 생기는 문제</title>
      <link>https://wowstudy.tistory.com/72</link>
      <description>&lt;p&gt;RelativeLayout 이면&amp;nbsp;LinearLayout 으로 변경하면 된다.&lt;/p&gt;</description>
      <category>안드로이드</category>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/72</guid>
      <comments>https://wowstudy.tistory.com/72#entry72comment</comments>
      <pubDate>Tue, 22 Dec 2015 19:16:18 +0900</pubDate>
    </item>
    <item>
      <title>안드로이드의 HOSTS파일 수정하기</title>
      <link>https://wowstudy.tistory.com/71</link>
      <description>&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;안드로이드도 호스트파일을 수정할 수 있다. 위치는 리눅스와 비슷하게 /system/etc/hosts이다.&lt;/p&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;내 안드로이드의 hosts 파일을 보고 싶다면, 다음과 같은 방법을 통해 pc로 가져올 수 있다.&lt;/p&gt;&lt;div id=&quot;crayon-55e7aff63ad2c099693940&quot; class=&quot;crayon-syntax crayon-theme-github crayon-font-consolas crayon-os-pc print-yes notranslate crayon-wrapped&quot; data-settings=&quot; minimize scroll-mouseover wrap&quot; style=&quot;font-family: Monaco, MonacoRegular, 'Courier New', monospace; margin: 12px 0px; outline: 0px; padding: 0px; vertical-align: baseline; box-sizing: border-box; width: 474px; color: rgb(43, 43, 43); height: auto; border: 1px solid rgb(222, 222, 222) !important; overflow: hidden !important; position: relative !important; direction: ltr !important; line-height: 15px !important; background-color: rgb(248, 248, 255) !important;&quot;&gt;&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-left-width: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; position: relative; overflow: hidden; z-index: 4; border-bottom-width: 1px !important; border-bottom-style: solid !important; border-bottom-color: rgb(222, 222, 222) !important; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; height: 18px !important; line-height: 18px !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;span class=&quot;crayon-title&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;&lt;/span&gt;&lt;div class=&quot;crayon-tools&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; position: absolute; right: 0px; font-weight: inherit !important; height: 18px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-button crayon-nums-button crayon-pressed&quot; title=&quot;줄 번호 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -32px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-plain-button&quot; title=&quot;일반 코드 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -48px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-wrap-button crayon-pressed&quot; title=&quot;줄 바꿈 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -112px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-copy-button&quot; title=&quot;복사&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -16px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-popup-button&quot; title=&quot;새 창에서 보기&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px 0px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class=&quot;crayon-language&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 8px 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;Default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-plain-wrap&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; outline: 0px; vertical-align: baseline; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; height: auto !important; background: 0px 50%;&quot;&gt;&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;&quot; style=&quot;color: rgb(0, 0, 0); margin: 0px; max-width: 100%; vertical-align: top; overflow: hidden; border: 0px; border-radius: 0px; padding-top: 0px; padding-right: 5px; padding-left: 5px; width: 472px; height: 42px; position: absolute; opacity: 0; box-shadow: none; word-wrap: normal; resize: none; tab-size: 4; z-index: 0; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; font-size: 12px !important; line-height: 15px !important; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;&lt;div class=&quot;crayon-main&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; overflow: hidden; position: relative; z-index: 1; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; background: 0px 50%;&quot;&gt;&lt;table class=&quot;crayon-table&quot; style=&quot;font-size: 14px; font-style: inherit; font-weight: inherit; margin-left: 0px; outline: 0px; vertical-align: baseline; line-height: 1.28571; border: none !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px !important; border-collapse: collapse !important; border-spacing: 0px !important; width: auto !important; table-layout: auto !important; background: none !important;&quot;&gt;&lt;tbody style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;tr class=&quot;crayon-row&quot; style=&quot;font-style: inherit; font-weight: inherit; outline: 0px; border: none !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;show&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; white-space: nowrap; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-55e7aff63ad2c099693940-1&quot; style=&quot;border-top-width: 0px; border-right-width: 1px !important; border-bottom-width: 0px; border-left-width: 0px; border-right-style: solid !important; border-right-color: rgb(222, 222, 222) !important; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; text-align: right !important; height: 15px; line-height: inherit !important; min-width: 1.2em !important; color: rgb(170, 170, 170) !important; background: 0px 50%;&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;crayon-code&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; width: 446px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); white-space: pre; overflow: visible; tab-size: 4; border: none !important; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: none !important;&quot;&gt;&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-55e7aff63ad2c099693940-1&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; height: inherit; word-break: break-all; font-size: inherit !important; font-weight: inherit !important; line-height: inherit !important; white-space: pre-wrap !important; background: 0px 50%;&quot;&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;crayon-e&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: teal !important;&quot;&gt;adb &lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;pull&lt;/span&gt;&lt;span class=&quot;crayon-h&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;system&lt;/span&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;etc&lt;/span&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-i&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; font-size: inherit !important; font-weight: inherit !important; line-height: inherit !important;&quot;&gt;hosts&lt;/span&gt;&lt;span class=&quot;crayon-h&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(51, 51, 51) !important;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;hosts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;필요하다면 꺼낸 hosts 파일을 메모장과 같은 에디터로&amp;nbsp;수정한다. 다음과 같이 추가하면&amp;nbsp;된다. 예를 들어 도메인이 sub.example.com이고, 아이피가 10.20.30.40이라면 아래와 같이 파일의 마지막 줄에&amp;nbsp;추가한다.&lt;/p&gt;&lt;div id=&quot;crayon-55e7aff63ad3c353710824&quot; class=&quot;crayon-syntax crayon-theme-github crayon-font-consolas crayon-os-pc print-yes notranslate crayon-wrapped&quot; data-settings=&quot; minimize scroll-mouseover wrap&quot; style=&quot;font-family: Monaco, MonacoRegular, 'Courier New', monospace; margin: 12px 0px; outline: 0px; padding: 0px; vertical-align: baseline; box-sizing: border-box; width: 474px; color: rgb(43, 43, 43); height: auto; border: 1px solid rgb(222, 222, 222) !important; overflow: hidden !important; position: relative !important; direction: ltr !important; line-height: 15px !important; background-color: rgb(248, 248, 255) !important;&quot;&gt;&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-left-width: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; position: relative; overflow: hidden; z-index: 4; border-bottom-width: 1px !important; border-bottom-style: solid !important; border-bottom-color: rgb(222, 222, 222) !important; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; height: 18px !important; line-height: 18px !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;span class=&quot;crayon-title&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;&lt;/span&gt;&lt;div class=&quot;crayon-tools&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; position: absolute; right: 0px; font-weight: inherit !important; height: 18px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-button crayon-nums-button crayon-pressed&quot; title=&quot;줄 번호 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -32px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-plain-button&quot; title=&quot;일반 코드 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -48px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-wrap-button crayon-pressed&quot; title=&quot;줄 바꿈 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -112px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-copy-button&quot; title=&quot;복사&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -16px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-popup-button&quot; title=&quot;새 창에서 보기&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px 0px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class=&quot;crayon-language&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 8px 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;Default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-plain-wrap&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; outline: 0px; vertical-align: baseline; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; height: auto !important; background: 0px 50%;&quot;&gt;&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;&quot; style=&quot;color: rgb(0, 0, 0); margin: 0px; max-width: 100%; vertical-align: top; overflow: hidden; border: 0px; border-radius: 0px; padding-top: 0px; padding-right: 5px; padding-left: 5px; width: 472px; height: 57px; position: absolute; opacity: 0; box-shadow: none; word-wrap: normal; resize: none; tab-size: 4; z-index: 0; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; font-size: 12px !important; line-height: 15px !important; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;&lt;div class=&quot;crayon-main&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; overflow: hidden; position: relative; z-index: 1; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; background: 0px 50%;&quot;&gt;&lt;table class=&quot;crayon-table&quot; style=&quot;font-size: 14px; font-style: inherit; font-weight: inherit; margin-left: 0px; outline: 0px; vertical-align: baseline; line-height: 1.28571; border: none !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px !important; border-collapse: collapse !important; border-spacing: 0px !important; width: auto !important; table-layout: auto !important; background: none !important;&quot;&gt;&lt;tbody style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;tr class=&quot;crayon-row&quot; style=&quot;font-style: inherit; font-weight: inherit; outline: 0px; border: none !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;show&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; white-space: nowrap; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-55e7aff63ad3c353710824-1&quot; style=&quot;border-top-width: 0px; border-right-width: 1px !important; border-bottom-width: 0px; border-left-width: 0px; border-right-style: solid !important; border-right-color: rgb(222, 222, 222) !important; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; text-align: right !important; height: 15px; line-height: inherit !important; min-width: 1.2em !important; color: rgb(170, 170, 170) !important; background: 0px 50%;&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;crayon-num crayon-striped-num&quot; data-line=&quot;crayon-55e7aff63ad3c353710824-2&quot; style=&quot;border-top-width: 0px; border-right-width: 1px !important; border-bottom-width: 0px; border-left-width: 0px; border-right-style: solid !important; border-right-color: rgb(222, 222, 222) !important; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; text-align: right !important; height: 15px; line-height: inherit !important; min-width: 1.2em !important; color: rgb(170, 170, 170) !important; background: 0px 50%;&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;crayon-code&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; width: 446px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); white-space: pre; overflow: visible; tab-size: 4; border: none !important; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: none !important;&quot;&gt;&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-55e7aff63ad3c353710824-1&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; height: inherit; word-break: break-all; font-size: inherit !important; font-weight: inherit !important; line-height: inherit !important; white-space: pre-wrap !important; background: 0px 50%;&quot;&gt;&lt;span class=&quot;crayon-sy&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(51, 51, 51) !important;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(51, 51, 51) !important;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(51, 51, 51) !important;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;crayon-line crayon-striped-line&quot; id=&quot;crayon-55e7aff63ad3c353710824-2&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; height: inherit; word-break: break-all; font-size: inherit !important; font-weight: inherit !important; line-height: inherit !important; white-space: pre-wrap !important; background: 0px 50%;&quot;&gt;&lt;span class=&quot;crayon-cn&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 153, 153) !important;&quot;&gt;10.20.30.40&lt;/span&gt;&lt;span class=&quot;crayon-h&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(51, 51, 51) !important;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;example&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(51, 51, 51) !important;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;그리고, 수정한 hosts 을 아래와 같은 명령어로 덮어 씌울 수 있다.&lt;/p&gt;&lt;div id=&quot;crayon-55e7aff63ad44142260239&quot; class=&quot;crayon-syntax crayon-theme-github crayon-font-consolas crayon-os-pc print-yes notranslate crayon-wrapped&quot; data-settings=&quot; minimize scroll-mouseover wrap&quot; style=&quot;font-family: Monaco, MonacoRegular, 'Courier New', monospace; margin: 12px 0px; outline: 0px; padding: 0px; vertical-align: baseline; box-sizing: border-box; width: 474px; color: rgb(43, 43, 43); height: auto; border: 1px solid rgb(222, 222, 222) !important; overflow: hidden !important; position: relative !important; direction: ltr !important; line-height: 15px !important; background-color: rgb(248, 248, 255) !important;&quot;&gt;&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-left-width: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; position: relative; overflow: hidden; z-index: 4; border-bottom-width: 1px !important; border-bottom-style: solid !important; border-bottom-color: rgb(222, 222, 222) !important; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; height: 18px !important; line-height: 18px !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;span class=&quot;crayon-title&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;&lt;/span&gt;&lt;div class=&quot;crayon-tools&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; position: absolute; right: 0px; font-weight: inherit !important; height: 18px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-button crayon-nums-button crayon-pressed&quot; title=&quot;줄 번호 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -32px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-plain-button&quot; title=&quot;일반 코드 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -48px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-wrap-button crayon-pressed&quot; title=&quot;줄 바꿈 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -112px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-copy-button&quot; title=&quot;복사&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -16px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-popup-button&quot; title=&quot;새 창에서 보기&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px 0px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class=&quot;crayon-language&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 8px 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;Default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-plain-wrap&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; outline: 0px; vertical-align: baseline; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; height: auto !important; background: 0px 50%;&quot;&gt;&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;&quot; style=&quot;color: rgb(0, 0, 0); margin: 0px; max-width: 100%; vertical-align: top; overflow: hidden; border: 0px; border-radius: 0px; padding-top: 0px; padding-right: 5px; padding-left: 5px; width: 472px; height: 42px; position: absolute; opacity: 0; box-shadow: none; word-wrap: normal; resize: none; tab-size: 4; z-index: 0; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; font-size: 12px !important; line-height: 15px !important; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;&lt;div class=&quot;crayon-main&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; overflow: hidden; position: relative; z-index: 1; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; background: 0px 50%;&quot;&gt;&lt;table class=&quot;crayon-table&quot; style=&quot;font-size: 14px; font-style: inherit; font-weight: inherit; margin-left: 0px; outline: 0px; vertical-align: baseline; line-height: 1.28571; border: none !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px !important; border-collapse: collapse !important; border-spacing: 0px !important; width: auto !important; table-layout: auto !important; background: none !important;&quot;&gt;&lt;tbody style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;tr class=&quot;crayon-row&quot; style=&quot;font-style: inherit; font-weight: inherit; outline: 0px; border: none !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;show&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; white-space: nowrap; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-55e7aff63ad44142260239-1&quot; style=&quot;border-top-width: 0px; border-right-width: 1px !important; border-bottom-width: 0px; border-left-width: 0px; border-right-style: solid !important; border-right-color: rgb(222, 222, 222) !important; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; text-align: right !important; height: 15px; line-height: inherit !important; min-width: 1.2em !important; color: rgb(170, 170, 170) !important; background: 0px 50%;&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;crayon-code&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; width: 446px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); white-space: pre; overflow: visible; tab-size: 4; border: none !important; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: none !important;&quot;&gt;&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-55e7aff63ad44142260239-1&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; height: inherit; word-break: break-all; font-size: inherit !important; font-weight: inherit !important; line-height: inherit !important; white-space: pre-wrap !important; background: 0px 50%;&quot;&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;crayon-e&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: teal !important;&quot;&gt;adb &lt;/span&gt;&lt;span class=&quot;crayon-i&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; font-size: inherit !important; font-weight: inherit !important; line-height: inherit !important;&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;crayon-h&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(51, 51, 51) !important;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;hosts&lt;/span&gt;&lt;span class=&quot;crayon-h&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;system&lt;/span&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;etc&lt;/span&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;hosts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;파일을 push하거나 pull할 때, root 권한이 필요하다.&amp;nbsp; 이 때, 일반 소비자에게 배포된 바이너리로는 접근할 권한이 없다.&amp;nbsp;엔지니어 바이너리를 사용하는데 안되는 개발자라면 아래와 단말을 remount 시켜 root 권한을 획득하여 파일을 push/pull할 수 있다.&lt;/p&gt;&lt;div id=&quot;crayon-55e7aff63ad4b199107398&quot; class=&quot;crayon-syntax crayon-theme-github crayon-font-consolas crayon-os-pc print-yes notranslate crayon-wrapped&quot; data-settings=&quot; minimize scroll-mouseover wrap&quot; style=&quot;font-family: Monaco, MonacoRegular, 'Courier New', monospace; margin: 12px 0px; outline: 0px; padding: 0px; vertical-align: baseline; box-sizing: border-box; width: 474px; color: rgb(43, 43, 43); height: auto; border: 1px solid rgb(222, 222, 222) !important; overflow: hidden !important; position: relative !important; direction: ltr !important; line-height: 15px !important; background-color: rgb(248, 248, 255) !important;&quot;&gt;&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-left-width: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; position: relative; overflow: hidden; z-index: 4; border-bottom-width: 1px !important; border-bottom-style: solid !important; border-bottom-color: rgb(222, 222, 222) !important; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; height: 18px !important; line-height: 18px !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;span class=&quot;crayon-title&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;&lt;/span&gt;&lt;div class=&quot;crayon-tools&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; position: absolute; right: 0px; font-weight: inherit !important; height: 18px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-button crayon-nums-button crayon-pressed&quot; title=&quot;줄 번호 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -32px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-plain-button&quot; title=&quot;일반 코드 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -48px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-wrap-button crayon-pressed&quot; title=&quot;줄 바꿈 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -112px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-copy-button&quot; title=&quot;복사&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -16px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-popup-button&quot; title=&quot;새 창에서 보기&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px 0px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class=&quot;crayon-language&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 8px 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;Default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-plain-wrap&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; outline: 0px; vertical-align: baseline; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; height: auto !important; background: 0px 50%;&quot;&gt;&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;&quot; style=&quot;color: rgb(0, 0, 0); margin: 0px; max-width: 100%; vertical-align: top; overflow: hidden; border: 0px; border-radius: 0px; padding-top: 0px; padding-right: 5px; padding-left: 5px; width: 472px; height: 42px; position: absolute; opacity: 0; box-shadow: none; word-wrap: normal; resize: none; tab-size: 4; z-index: 0; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; font-size: 12px !important; line-height: 15px !important; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;&lt;div class=&quot;crayon-main&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; overflow: hidden; position: relative; z-index: 1; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; background: 0px 50%;&quot;&gt;&lt;table class=&quot;crayon-table&quot; style=&quot;font-size: 14px; font-style: inherit; font-weight: inherit; margin-left: 0px; outline: 0px; vertical-align: baseline; line-height: 1.28571; border: none !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px !important; border-collapse: collapse !important; border-spacing: 0px !important; width: auto !important; table-layout: auto !important; background: none !important;&quot;&gt;&lt;tbody style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;tr class=&quot;crayon-row&quot; style=&quot;font-style: inherit; font-weight: inherit; outline: 0px; border: none !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;show&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; white-space: nowrap; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-55e7aff63ad4b199107398-1&quot; style=&quot;border-top-width: 0px; border-right-width: 1px !important; border-bottom-width: 0px; border-left-width: 0px; border-right-style: solid !important; border-right-color: rgb(222, 222, 222) !important; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; text-align: right !important; height: 15px; line-height: inherit !important; min-width: 1.2em !important; color: rgb(170, 170, 170) !important; background: 0px 50%;&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;crayon-code&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; width: 446px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); white-space: pre; overflow: visible; tab-size: 4; border: none !important; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: none !important;&quot;&gt;&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-55e7aff63ad4b199107398-1&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; height: inherit; word-break: break-all; font-size: inherit !important; font-weight: inherit !important; line-height: inherit !important; white-space: pre-wrap !important; background: 0px 50%;&quot;&gt;&lt;span class=&quot;crayon-o&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;crayon-e&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: teal !important;&quot;&gt;adb &lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;remount&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;마지막으로 주의할 점이 있다면, hosts 파일의 마지막 줄에 꼭 엔터를 쳐서 빈 줄을 넣도록 하자.&lt;/p&gt;&lt;div id=&quot;crayon-55e7aff63ad51832795867&quot; class=&quot;crayon-syntax crayon-theme-github crayon-font-consolas crayon-os-pc print-yes notranslate crayon-wrapped&quot; data-settings=&quot; minimize scroll-mouseover wrap&quot; style=&quot;font-family: Monaco, MonacoRegular, 'Courier New', monospace; margin: 12px 0px; outline: 0px; padding: 0px; vertical-align: baseline; box-sizing: border-box; width: 474px; color: rgb(43, 43, 43); height: auto; border: 1px solid rgb(222, 222, 222) !important; overflow: hidden !important; position: relative !important; direction: ltr !important; line-height: 15px !important; background-color: rgb(248, 248, 255) !important;&quot;&gt;&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-left-width: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; position: relative; overflow: hidden; z-index: 4; border-bottom-width: 1px !important; border-bottom-style: solid !important; border-bottom-color: rgb(222, 222, 222) !important; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; height: 18px !important; line-height: 18px !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;span class=&quot;crayon-title&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;&lt;/span&gt;&lt;div class=&quot;crayon-tools&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; position: absolute; right: 0px; font-weight: inherit !important; height: 18px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-button crayon-nums-button crayon-pressed&quot; title=&quot;줄 번호 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -32px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-plain-button&quot; title=&quot;일반 코드 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -48px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-wrap-button crayon-pressed&quot; title=&quot;줄 바꿈 토글&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: -24px 0px no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) -24px -112px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-copy-button&quot; title=&quot;복사&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px -16px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-button crayon-popup-button&quot; title=&quot;새 창에서 보기&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: 15px; display: inline; position: relative; width: 24px; font-size: inherit !important; font-weight: inherit !important; float: left !important; background: 0px 50% no-repeat;&quot;&gt;&lt;div class=&quot;crayon-button-icon&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: -8px 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 24px; position: absolute; left: 0px; top: 9px; font-size: inherit !important; font-weight: inherit !important; height: 16px !important; line-height: inherit !important; background: url(http://sunphiz.me/wp/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png) 0px 0px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class=&quot;crayon-language&quot; style=&quot;border: 0px; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 8px 0px 4px !important; vertical-align: baseline; float: left; height: inherit; line-height: inherit !important; color: rgb(102, 102, 102) !important;&quot;&gt;Default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crayon-plain-wrap&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; outline: 0px; vertical-align: baseline; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; height: auto !important; background: 0px 50%;&quot;&gt;&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;&quot; style=&quot;color: rgb(0, 0, 0); margin: 0px; max-width: 100%; vertical-align: top; overflow: hidden; border: 0px; border-radius: 0px; padding-top: 0px; padding-right: 5px; padding-left: 5px; width: 472px; height: 42px; position: absolute; opacity: 0; box-shadow: none; word-wrap: normal; resize: none; tab-size: 4; z-index: 0; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; font-size: 12px !important; line-height: 15px !important; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;&lt;div class=&quot;crayon-main&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: 472px; overflow: hidden; position: relative; z-index: 1; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; background: 0px 50%;&quot;&gt;&lt;table class=&quot;crayon-table&quot; style=&quot;font-size: 14px; font-style: inherit; font-weight: inherit; margin-left: 0px; outline: 0px; vertical-align: baseline; line-height: 1.28571; border: none !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px !important; border-collapse: collapse !important; border-spacing: 0px !important; width: auto !important; table-layout: auto !important; background: none !important;&quot;&gt;&lt;tbody style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;tr class=&quot;crayon-row&quot; style=&quot;font-style: inherit; font-weight: inherit; outline: 0px; border: none !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;show&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background-image: initial; background-attachment: initial; background-color: rgb(238, 238, 238) !important; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 50%; background-repeat: initial;&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; white-space: nowrap; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-55e7aff63ad51832795867-1&quot; style=&quot;border-top-width: 0px; border-right-width: 1px !important; border-bottom-width: 0px; border-left-width: 0px; border-right-style: solid !important; border-right-color: rgb(222, 222, 222) !important; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; text-align: right !important; height: 15px; line-height: inherit !important; min-width: 1.2em !important; color: rgb(170, 170, 170) !important; background: 0px 50%;&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;crayon-code&quot; style=&quot;border: 0px; font-size: 14px; font-style: inherit; outline: 0px; width: 446px; font-family: Consolas, ConsolasRegular, 'Courier New', monospace !important; margin: 0px !important; padding: 0px !important; vertical-align: top !important; background: 0px 50%;&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding-right: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); white-space: pre; overflow: visible; tab-size: 4; border: none !important; font-size: 12px !important; padding-top: 5px !important; padding-bottom: 3px !important; line-height: 15px !important; background: none !important;&quot;&gt;&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-55e7aff63ad51832795867-1&quot; style=&quot;border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px 5px; vertical-align: baseline; height: inherit; word-break: break-all; font-size: inherit !important; font-weight: inherit !important; line-height: inherit !important; white-space: pre-wrap !important; background: 0px 50%;&quot;&gt;&lt;span class=&quot;crayon-cn&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 153, 153) !important;&quot;&gt;10.20.30.40&lt;/span&gt;&lt;span class=&quot;crayon-h&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 111, 224) !important;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(51, 51, 51) !important;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;example&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(51, 51, 51) !important;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-v&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit !important; font-style: inherit; font-weight: inherit !important; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; height: inherit; line-height: inherit !important; color: rgb(0, 45, 122) !important;&quot;&gt;com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;빈 줄을 넣지 않으면 hosts 파일에 선언한 도메인 중에서 마지막 줄이 적용되지 않을 수 있다.&lt;/p&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href=&quot;http://sunphiz.me/wp/archives/517&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;출처 -&amp;nbsp;안드로이드의 HOSTS파일 수정하기(http://sunphiz.me/wp/archives/517)&lt;/a&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;border: 0px; font-family: Lato, sans-serif; font-size: 16px; margin: 0px 0px 24px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(43, 43, 43); line-height: 24px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <author>워후</author>
      <guid isPermaLink="true">https://wowstudy.tistory.com/71</guid>
      <comments>https://wowstudy.tistory.com/71#entry71comment</comments>
      <pubDate>Thu, 3 Sep 2015 11:28:32 +0900</pubDate>
    </item>
  </channel>
</rss>