<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Solution developer</title>
    <link>https://gethlemn.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 13 Jul 2026 22:49:05 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>SDeveloper</managingEditor>
    <item>
      <title>[React] 간단한 테스트 사이트 만들기 - 프로젝트 생성하기</title>
      <link>https://gethlemn.tistory.com/73</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Json Data를 제공하는 간단한 웹 사이트를 만들려고 한다.&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;b&gt;1. 프로젝트 생성하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1) npx&amp;nbsp;create-react-app&amp;nbsp;testHome&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- vscode에서 terminal을 실행해 npx create-react-app 명령어를 통해 프로젝트를 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 이 때 npx가 깔려있지 않은 경우, install npx에 대한 여부를 묻는다. y를 입력하여 설치하자.&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;pre id=&quot;code_1651057092664&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;E:\workspcae&amp;gt;npx create-react-app test_home

Creating a new React app in E:\workspcae\test_home.

Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts with cra-template...


  cd test_home
  npm start

Happy hacking!&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 성공적으로 npx가 설치되고, 리액트 프로젝트가 생성되면 위와같이 cd, npm 명령어를 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - cd를 통해 디렉토리 이동 후, npm 명령어를 실행해보자.&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;2) npm start&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 정상적으로 start 되고 나면, 아래와 같이 react 화면이 열린다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1052&quot; data-origin-height=&quot;834&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qpStu/btrAynnoWyA/b1rq9XDsCMk7zP3XFKse4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qpStu/btrAynnoWyA/b1rq9XDsCMk7zP3XFKse4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qpStu/btrAynnoWyA/b1rq9XDsCMk7zP3XFKse4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqpStu%2FbtrAynnoWyA%2Fb1rq9XDsCMk7zP3XFKse4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1052&quot; height=&quot;834&quot; data-origin-width=&quot;1052&quot; data-origin-height=&quot;834&quot;/&gt;&lt;/span&gt;&lt;/figure&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;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;</description>
      <category>React</category>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/73</guid>
      <comments>https://gethlemn.tistory.com/73#entry73comment</comments>
      <pubDate>Wed, 27 Apr 2022 21:54:45 +0900</pubDate>
    </item>
    <item>
      <title>[Git] git desktop에 기존 local project 연결하기</title>
      <link>https://gethlemn.tistory.com/72</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;i&gt;Git Desktop에 기존 local project를 연결해보자.&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. git desktop 설치하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://desktop.github.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://desktop.github.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1625215255631&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;GitHub Desktop&quot; data-og-description=&quot;Simple collaboration from your desktop&quot; data-og-host=&quot;desktop.github.com&quot; data-og-source-url=&quot;https://desktop.github.com/&quot; data-og-url=&quot;https://desktop.github.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/crapAp/hyKKEduoKD/sH79v16EJnnTwUj9rCcBc0/img.png?width=1920&amp;amp;height=1320&amp;amp;face=0_0_1920_1320,https://scrap.kakaocdn.net/dn/4EcEf/hyKKB9orFT/ep5LrKGxFVKNxk2NMv39b1/img.png?width=1920&amp;amp;height=1320&amp;amp;face=0_0_1920_1320,https://scrap.kakaocdn.net/dn/EHijb/hyKKKSL9yv/3jC7JM2EO8NYze73ehD440/img.png?width=850&amp;amp;height=532&amp;amp;face=0_0_850_532&quot;&gt;&lt;a href=&quot;https://desktop.github.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://desktop.github.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/crapAp/hyKKEduoKD/sH79v16EJnnTwUj9rCcBc0/img.png?width=1920&amp;amp;height=1320&amp;amp;face=0_0_1920_1320,https://scrap.kakaocdn.net/dn/4EcEf/hyKKB9orFT/ep5LrKGxFVKNxk2NMv39b1/img.png?width=1920&amp;amp;height=1320&amp;amp;face=0_0_1920_1320,https://scrap.kakaocdn.net/dn/EHijb/hyKKKSL9yv/3jC7JM2EO8NYze73ehD440/img.png?width=850&amp;amp;height=532&amp;amp;face=0_0_850_532');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub Desktop&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Simple collaboration from your desktop&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;desktop.github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.&amp;nbsp; Create a New Repository on your hand drive... 클릭&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;799&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dei2Yw/btq8GoZ7C6R/bIpfEVkHKamzhn27QgcvxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dei2Yw/btq8GoZ7C6R/bIpfEVkHKamzhn27QgcvxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dei2Yw/btq8GoZ7C6R/bIpfEVkHKamzhn27QgcvxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdei2Yw%2Fbtq8GoZ7C6R%2FbIpfEVkHKamzhn27QgcvxK%2Fimg.png&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;799&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;3. Name에 프로젝트명을 입력하고, Local Path에 workspace 위치를 등록한다.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1201&quot; data-origin-height=&quot;828&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHYkog/btq8Gn1eT9G/VSnPRKqu9WF3XeAovgUGe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHYkog/btq8Gn1eT9G/VSnPRKqu9WF3XeAovgUGe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHYkog/btq8Gn1eT9G/VSnPRKqu9WF3XeAovgUGe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHYkog%2Fbtq8Gn1eT9G%2FVSnPRKqu9WF3XeAovgUGe0%2Fimg.png&quot; data-origin-width=&quot;1201&quot; data-origin-height=&quot;828&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Git</category>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/72</guid>
      <comments>https://gethlemn.tistory.com/72#entry72comment</comments>
      <pubDate>Fri, 2 Jul 2021 18:00:14 +0900</pubDate>
    </item>
    <item>
      <title>[Socket] 간단한 TCP Socket Server 테스트</title>
      <link>https://gethlemn.tistory.com/71</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;i&gt;간단한 TCP Socket Server를 구현해보자&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 해당 프로그램은 Connect시, Server와 Client가 라인별로 데이터를 주고 받을 수 있도록 구성되어있다.&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;1. Server Class를 생성한다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 9876포트를 바인딩하는 ServerSocket을 생성한다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ServerSocket server = new ServerSocket(9876)&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;3. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Listen 상태로 대기한다.&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Socket&amp;nbsp;socket&amp;nbsp;=&amp;nbsp;server.accept();&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;4. Client에서 송신한 Inputstream을 읽어드린다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;InputStream&amp;nbsp;is&amp;nbsp;=&amp;nbsp;socket.getInputStream();&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;5. line단위를 String으로 변환한다.&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;InputStreamReader&amp;nbsp;isr&amp;nbsp;=&amp;nbsp;new&amp;nbsp;InputStreamReader(is); &lt;br /&gt;BufferedReader&amp;nbsp;br&amp;nbsp;=&amp;nbsp;new&amp;nbsp;BufferedReader(isr); &lt;br /&gt;String&amp;nbsp;line&amp;nbsp;=&amp;nbsp;br.readLine();&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;6. Client에게 응답을 전달한다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OutputStream&amp;nbsp;os&amp;nbsp;=&amp;nbsp;socket.getOutputStream(); &lt;br /&gt;os.write(&quot;hello&quot;.getBytes(&quot;UTF-8&quot;));&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;7. Telnet을 통해 Test해본다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cmd&amp;gt; telnet 127.0.0.1:9876&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;354&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo4WAZ/btq8duN6p7j/s07bv4GkNuWrTrgkGsVgK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo4WAZ/btq8duN6p7j/s07bv4GkNuWrTrgkGsVgK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo4WAZ/btq8duN6p7j/s07bv4GkNuWrTrgkGsVgK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo4WAZ%2Fbtq8duN6p7j%2Fs07bv4GkNuWrTrgkGsVgK1%2Fimg.png&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;354&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1624780308283&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package itji.example.socket.server;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {
	public static void main(String[] args) {
		new MyServer().start();
	}

	private void start() {
		System.out.println(&quot;Server start&quot;);

		try {
			// 1. Server Socket 생성, port 바인딩
			ServerSocket server = new ServerSocket(9876);
			
			// 2. Connent Listen 상태로 대기
			Socket socket = server.accept();
			while (true) {
				// 3. Client에서 송신한 데이터 읽기
				InputStream is = socket.getInputStream();

				// 4. line별 데이터 수신하기
				InputStreamReader isr = new InputStreamReader(is);
				BufferedReader br = new BufferedReader(isr);
				String line = br.readLine();
				System.out.println(line);

				// 6. 응답 메세지 전송
				OutputStream os = socket.getOutputStream();
				os.write(&quot;OK! \n&quot;.getBytes(&quot;UTF-8&quot;));
				os.flush();

			}
		} catch (Exception e) {
			System.out.println(&quot;Server excpetion: &quot; + e.getMessage());
		}
	}
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/71</guid>
      <comments>https://gethlemn.tistory.com/71#entry71comment</comments>
      <pubDate>Sun, 27 Jun 2021 17:10:58 +0900</pubDate>
    </item>
    <item>
      <title>[Git] Eclipse Java Project Git Hub 연동하기 (Egit)</title>
      <link>https://gethlemn.tistory.com/70</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;i&gt;Eclipse로 개발한 Java Project를 GitHub에 연동해보자.&lt;/i&gt;&lt;/span&gt;&lt;/h2&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;1. GitHub 로그인&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Start a Project 또는 상단의 +버튼 클릭하여 NewRepository 선택&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;534&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be8LpU/btq8aNtIFxA/aWL0vSGM1GxPj47LE8k3p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be8LpU/btq8aNtIFxA/aWL0vSGM1GxPj47LE8k3p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be8LpU/btq8aNtIFxA/aWL0vSGM1GxPj47LE8k3p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe8LpU%2Fbtq8aNtIFxA%2FaWL0vSGM1GxPj47LE8k3p0%2Fimg.png&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;534&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Repository name을 작성하고 Create repository를 클릭한다.&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;1551&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWhCoX/btq8dSfkJNm/SEnw3t4Zxh2KgGaueNz4mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWhCoX/btq8dSfkJNm/SEnw3t4Zxh2KgGaueNz4mk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWhCoX/btq8dSfkJNm/SEnw3t4Zxh2KgGaueNz4mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWhCoX%2Fbtq8dSfkJNm%2FSEnw3t4Zxh2KgGaueNz4mk%2Fimg.png&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;1551&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 이클립스 우측 상단의 버튼을 클릭하여, Open Perspective 팝업을 열고, Git을 선택한다.&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;759&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xImlC/btq8dyVyA7Y/HObXxaPyNrwShA9cBVRojK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xImlC/btq8dyVyA7Y/HObXxaPyNrwShA9cBVRojK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xImlC/btq8dyVyA7Y/HObXxaPyNrwShA9cBVRojK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxImlC%2Fbtq8dyVyA7Y%2FHObXxaPyNrwShA9cBVRojK%2Fimg.png&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;759&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. Clone a Git repository를 선택한다.&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;706&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HbXuY/btq8btnZzRp/CKmcYXpej3h9dLNDerKvwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HbXuY/btq8btnZzRp/CKmcYXpej3h9dLNDerKvwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HbXuY/btq8btnZzRp/CKmcYXpej3h9dLNDerKvwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHbXuY%2Fbtq8btnZzRp%2FCKmcYXpej3h9dLNDerKvwk%2Fimg.png&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;706&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6.&amp;nbsp; Next 후 Finish를 선택하여 완료한다.&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. Project 우클릭 후, Team &amp;gt; Share project를 클릭한다.&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;785&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6B5YD/btq8aCkAmRZ/yHhF0sqRMJAhyh05doivLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6B5YD/btq8aCkAmRZ/yHhF0sqRMJAhyh05doivLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6B5YD/btq8aCkAmRZ/yHhF0sqRMJAhyh05doivLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6B5YD%2Fbtq8aCkAmRZ%2FyHhF0sqRMJAhyh05doivLK%2Fimg.png&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;785&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. Git 선택&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;485&quot; width=&quot;433&quot; height=&quot;344&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu9yuX/btq8a0MhxHb/VaOYBWzhxkih6TvM88yM80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu9yuX/btq8a0MhxHb/VaOYBWzhxkih6TvM88yM80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu9yuX/btq8a0MhxHb/VaOYBWzhxkih6TvM88yM80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu9yuX%2Fbtq8a0MhxHb%2FVaOYBWzhxkih6TvM88yM80%2Fimg.png&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;485&quot; width=&quot;433&quot; height=&quot;344&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9. Repository에 아까 추가한 Repository를 선택하고, Target Location이 정상적으로 변경되었는지 확인한다.&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;582&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byJebh/btq8cgn9Mj3/Mhbwce3x9JRgRxIYZt9PFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byJebh/btq8cgn9Mj3/Mhbwce3x9JRgRxIYZt9PFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byJebh/btq8cgn9Mj3/Mhbwce3x9JRgRxIYZt9PFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyJebh%2Fbtq8cgn9Mj3%2FMhbwce3x9JRgRxIYZt9PFK%2Fimg.png&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;582&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;10. Finish를 선택하여 완료한다.&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;11.&amp;nbsp; 프로젝트 우클릭 &amp;gt; Team &amp;gt; Commit을 클릭하여 git에 소스코드를 올려보자.&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1827&quot; data-origin-height=&quot;638&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmxPJL/btq8cF86V87/kDdF0Oj9Z97sdnXD5tqEi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmxPJL/btq8cF86V87/kDdF0Oj9Z97sdnXD5tqEi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmxPJL/btq8cF86V87/kDdF0Oj9Z97sdnXD5tqEi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmxPJL%2Fbtq8cF86V87%2FkDdF0Oj9Z97sdnXD5tqEi1%2Fimg.png&quot; data-origin-width=&quot;1827&quot; data-origin-height=&quot;638&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;12. Commit and Push 버튼을 누르고 Finish 처리한다.&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;13. Git Repository에서 확인해본다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스코드가 커밋된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1550&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tjPog/btq8b1qoe6s/Iq2fwxmN3KKSk9z32Md7D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tjPog/btq8b1qoe6s/Iq2fwxmN3KKSk9z32Md7D1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tjPog/btq8b1qoe6s/Iq2fwxmN3KKSk9z32Md7D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtjPog%2Fbtq8b1qoe6s%2FIq2fwxmN3KKSk9z32Md7D1%2Fimg.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1550&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Git</category>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/70</guid>
      <comments>https://gethlemn.tistory.com/70#entry70comment</comments>
      <pubDate>Sat, 26 Jun 2021 15:06:07 +0900</pubDate>
    </item>
    <item>
      <title>[Jetty] 간단한 Web Client 만들기</title>
      <link>https://gethlemn.tistory.com/69</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Jetty를 이용한 Client를 만들어 보자.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&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 style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. MyClient 생성&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;(1) 이전에 생성한 서버인 http://127.0.0.1:8080/를 호출하는 Client를 생성해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;(2) Get 방식으로 호출하도록하며, Content를 출력하도록 하자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1624684601845&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package itji.example.jetty.client;

import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.api.ContentResponse;
import org.eclipse.jetty.http.HttpMethod;

public class MyClient {
	
	public static void main(String[] args) throws Exception {
		HttpClient httpClient = new HttpClient();
		httpClient.start();
		
		ContentResponse res = httpClient.newRequest(&quot;http://127.0.0.1:8080/&quot;).method(HttpMethod.GET).send();
		System.out.println(res.getContentAsString());
		System.exit(0);
	}

}
&lt;/code&gt;&lt;/pre&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 style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. 테스트를 위해 MyServer를 기동하여 둔다.&lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. MyServer 기동 후, MyClient를 실행한다.&lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4. MyClient로그에 MyServer에서 write한 Content가 출력되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;143&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0R5SE/btq8c1DMSdE/FiTt6bmOPD2miOAdPZRmn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0R5SE/btq8c1DMSdE/FiTt6bmOPD2miOAdPZRmn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0R5SE/btq8c1DMSdE/FiTt6bmOPD2miOAdPZRmn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0R5SE%2Fbtq8c1DMSdE%2FFiTt6bmOPD2miOAdPZRmn1%2Fimg.png&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;143&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&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;</description>
      <category>Jetty</category>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/69</guid>
      <comments>https://gethlemn.tistory.com/69#entry69comment</comments>
      <pubDate>Sat, 26 Jun 2021 14:19:09 +0900</pubDate>
    </item>
    <item>
      <title>[Jetty] 간단한 Web Server 만들기</title>
      <link>https://gethlemn.tistory.com/68</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;127.0.0.1:8080 으로 접속 가능한 Web Server 띄우기&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&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;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Web Server를 띄우기 위해서, Server가 될 main class와 servlet이 될 class를 생성해보자.&lt;/span&gt;&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 style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. MyServer class 생성&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;(1) 127.0.0.1:8080으로 접속 가능한 ServerConnector를 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;(2) request가 전달되면, 요청에 대한 응답을 처리할 Servlet을 정의해 둔다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* 서블릿 핸들러는 Request가 들어오면, path와 매핑된 서블릿에 클래스에 Request를 전달하고 응답 content를 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1624682635446&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package itji.example.jetty.server;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.servlet.ServletHandler;

public class MyServer {

	public static void main(String[] args) throws Exception {
		new MyServer().start();
	}

	private void start() throws Exception{
    	// 1. Web Server, Server Connector 생성
		Server server = new Server();
		ServerConnector httpConector = new ServerConnector(server);
		httpConector.setHost(&quot;127.0.0.1&quot;);
		httpConector.setPort(8080);
		server.addConnector(httpConector);
		
        // 2. Servlet Handler 매핑
		ServletHandler servletHandler = new ServletHandler();
		servletHandler.addServletWithMapping(MyServlet.class, &quot;/&quot;);
		server.setHandler(servletHandler);
		
        // 3. Web Server start
		server.start();
		server.join();
		
	}
	
}
&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. MyServlet class 생성&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;(1) http status code를 200으로 리턴한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;(2) Content에 &quot;Welcome to my server.&quot;)를 작성한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1624682849348&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package itji.example.jetty.server;

import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class MyServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
		res.setStatus(200);
		res.getWriter().write(&quot;Welcome to my server.&quot;);
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. MyServer를 기동한다.&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Run As &amp;gt; Java Application&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4. http://127.0.0.1:8080/에 접속해본다.&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2CWZj/btq8a8j4vCj/z8tfk2eQxKY4M83xC3L9D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2CWZj/btq8a8j4vCj/z8tfk2eQxKY4M83xC3L9D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2CWZj/btq8a8j4vCj/z8tfk2eQxKY4M83xC3L9D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2CWZj%2Fbtq8a8j4vCj%2Fz8tfk2eQxKY4M83xC3L9D0%2Fimg.png&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;접속이 되는 것을 확인할 수 있고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;content 또한 확인이 가능하다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Jetty</category>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/68</guid>
      <comments>https://gethlemn.tistory.com/68#entry68comment</comments>
      <pubDate>Sat, 26 Jun 2021 13:51:18 +0900</pubDate>
    </item>
    <item>
      <title>[Jetty] Eclipse에서 Jetty library 적용하기</title>
      <link>https://gethlemn.tistory.com/67</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;i&gt;Jetty library를 적용한 Java Project를 시작해보자.&lt;/i&gt;&lt;/span&gt;&lt;/h2&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 style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. eclipse에서&lt;b&gt; 버전에 맞는 Jetty&lt;/b&gt;를 다운로드 한다.&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(1) java 8 : DOWNLOAD &amp;gt; 9.4.42 버전 다운로드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(2) java 11 : DOWNLOAD &amp;gt; 11.0.5 버전 다운로드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://www.eclipse.org/jetty/download.php&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.eclipse.org/jetty/download.php&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1624678656353&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Jetty Downloads | The Eclipse Foundation&quot; data-og-description=&quot;The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks.&quot; data-og-host=&quot;www.eclipse.org&quot; data-og-source-url=&quot;https://www.eclipse.org/jetty/download.php&quot; data-og-url=&quot;https://www.eclipse.org/jetty/download.php&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ctg8C5/hyKGkzllNU/9j34HVKhXToHLvJMmdrQq1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/bh91dE/hyKGpAGXc2/UfWhK5ldS8R0GKik5taNoK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://www.eclipse.org/jetty/download.php&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.eclipse.org/jetty/download.php&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ctg8C5/hyKGkzllNU/9j34HVKhXToHLvJMmdrQq1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/bh91dE/hyKGpAGXc2/UfWhK5ldS8R0GKik5taNoK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Jetty Downloads | The Eclipse Foundation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.eclipse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;1551&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Abtt8/btq8ce4NEF6/JkvUQQxyurIQGyzqjbIOmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Abtt8/btq8ce4NEF6/JkvUQQxyurIQGyzqjbIOmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Abtt8/btq8ce4NEF6/JkvUQQxyurIQGyzqjbIOmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAbtt8%2Fbtq8ce4NEF6%2FJkvUQQxyurIQGyzqjbIOmK%2Fimg.png&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;1551&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. jetty library를 관리할 lib 폴더를 생성해둔다.&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;maven repository 경로를 사용하지 않는다면, eclipse home에 lib 디렉토리를 추가한다.&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. 다운로드한 파일을 압축 해제 후 lib 디렉토리로 이동하여,&lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;lib 디렉토리에 있는 jetty* jar 파일을 2번 에서 생성한 lib 폴더로 복사한다.&lt;/span&gt;&lt;/h3&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;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;- jetty-server-9.4.42.v20210604&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;- jetty-client-9.4.42.v20210604&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;- jetty-http-9.4.42.v20210604&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;- jetty-servlet-9.4.42.v20210604 등..&amp;nbsp;&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;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;필요한 jar 파일만 옮겨주어도 된다. 저는 모든 jetty*를 옮겨두었습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;620&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GwLsV/btq8c1DI7GF/ZHL1KXTmirrES8fvJV27z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GwLsV/btq8c1DI7GF/ZHL1KXTmirrES8fvJV27z1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GwLsV/btq8c1DI7GF/ZHL1KXTmirrES8fvJV27z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGwLsV%2Fbtq8c1DI7GF%2FZHL1KXTmirrES8fvJV27z1%2Fimg.png&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;620&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&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;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4. eclipse에서&amp;nbsp; java build Path &amp;gt; Libraries &amp;gt; Add External JARs를 선택하여 아까 복사한 jar를 library에 추가한다.&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;1141&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckCsoA/btq79WDKPju/wK9rmTvOLzWIRNknwUrZE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckCsoA/btq79WDKPju/wK9rmTvOLzWIRNknwUrZE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckCsoA/btq79WDKPju/wK9rmTvOLzWIRNknwUrZE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckCsoA%2Fbtq79WDKPju%2FwK9rmTvOLzWIRNknwUrZE1%2Fimg.png&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;1141&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;5. Apply Close를 누르고, Jetty를 import한다.&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;268&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beyAwL/btq8bs3ydZt/lRUjKMlJPLzLGshxldL2Hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beyAwL/btq8bs3ydZt/lRUjKMlJPLzLGshxldL2Hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beyAwL/btq8bs3ydZt/lRUjKMlJPLzLGshxldL2Hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeyAwL%2Fbtq8bs3ydZt%2FlRUjKMlJPLzLGshxldL2Hk%2Fimg.png&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;268&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Jetty</category>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/67</guid>
      <comments>https://gethlemn.tistory.com/67#entry67comment</comments>
      <pubDate>Sat, 26 Jun 2021 12:54:49 +0900</pubDate>
    </item>
    <item>
      <title>/bin/bash^M: bad interpreter:  No such file or directory 해결 방법</title>
      <link>https://gethlemn.tistory.com/66</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;[원인]&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Window 환경에서 sh 작성 후, linux 환경에서 실행하여 발생한 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;window에서 사용한 개행 문자가 linux에서는 인식되지 못해 발생하는 문제이다&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;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;[해결방법]&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. vi에서 ^M 삭제하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1) vi -b [파일명]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(2) ^M 직접 삭제하고 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. sed 명령어로 ^M 삭제하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1) sed -i &lt;span style=&quot;color: #000000;&quot;&gt;'s/\r$//'&lt;/span&gt; [파일명]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(2) 실행&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;3. vi 에서 fileformat 설정하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1) vi [파일명]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(2) fileformat 설정&amp;nbsp;&lt;span style=&quot;color: #4d5156;&quot;&gt;:&lt;/span&gt;set&lt;span style=&quot;color: #4d5156;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;fileformat=unix&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #4d5156;&quot;&gt;(3) 실행&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/66</guid>
      <comments>https://gethlemn.tistory.com/66#entry66comment</comments>
      <pubDate>Fri, 25 Jun 2021 14:44:28 +0900</pubDate>
    </item>
    <item>
      <title>[JVM] JAVA JVM, GC 설정 방법</title>
      <link>https://gethlemn.tistory.com/65</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;209&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0V56u/btq7JQRtKgD/D1Gbwnf4mCFaVOWxQWaEP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0V56u/btq7JQRtKgD/D1Gbwnf4mCFaVOWxQWaEP1/img.png&quot; data-alt=&quot;출처)&amp;amp;amp;nbsp;https://asfirstalways.tistory.com/158&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0V56u/btq7JQRtKgD/D1Gbwnf4mCFaVOWxQWaEP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0V56u%2Fbtq7JQRtKgD%2FD1Gbwnf4mCFaVOWxQWaEP1%2Fimg.png&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;209&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처)&amp;nbsp;https://asfirstalways.tistory.com/158&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. 전체 Heap 메모리 크기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-Xms : 초기값&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-Xmx : 최대값&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ex) -Xms1200m -Xmx1200m&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* WAS의 경우 통상 2GB~4GB로 설정하여 사용함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;[설정 방법]&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1) 평상시 사용하는 Heap 크기와 동일하게 적용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2) Heap 사용량이 최소값으로 사용되던 중 특정 시점에 증가되는 경우 최소 값과 최대값을 다르게 설정한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3) Heap Size 확장이 자주 발생하거나 조절할 필요가 없을 경우 최소값과 최대값을 동일하게 설정한다.&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;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. New 영역 크기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-Xmn&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:NewSize&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ex) -Xmn -XX:newSize=400m&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* New 영역을 늘려주면 Full GC 발생 횟수를 줄일 수 있음.&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;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. New 영역과 Old 영역간의 비율&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:NewRatio&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ex) -XX:NewRatio=2&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* New 영역 크기 = (Heap 전체 크기) / (NewRatio + 1)&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;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;[설정 방법] - 2, 3&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1) NewSize와 NewRatio를 동일하게 설정했을 경우 큰 값을 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2) 대부분 객체는 New 영역의 설정이 전반적인 성능에 영향을 준다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3) New 영역이 작은 경우, Old로 넘어가는 메모리의 양이 많아 Full Gc가 자주 발생한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4) 일반적으로 전체 영역의 10%로 설정한다.&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;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;4. Eden, Survivor 영역 비율&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:SurvivorRatio&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ex) -XX:SurvivorRatio=8&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* Survivor 영역의 크기 = (New 영역 전체 크기) / (Survivor + 2)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:UseAdapiveSizePolicy와 함께 사용해야하나, 빈번한 GC로 성능이 저하되는 경우가 있음.&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;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;5. Perm 영역 크기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:PermSize&amp;nbsp; &amp;nbsp; &amp;nbsp;: 초기값&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:maxPerSize&amp;nbsp; : 최대값&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:PermSize=64m -XX:MaxPermSize=64m&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* 일반적으로 초기값, 최대값을 동일하게 가져가며 Perm영역 확장시 Full GC가 발생한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* JDK 1.8 버전부터는 해당 옵션이 삭제되었다.&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;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;6. Metaspace 영역 크기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:MetaspaceSize&amp;nbsp; &amp;nbsp; &amp;nbsp; : 초기값&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:MaxMetaspaceSize : 최대값&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;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;7. HeapDump생성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:+HeapDumpOnOutOfMemoryError&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-XX:HeapDumpPath&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* 해당 옵션을 사용하여야 메모리 부족으로 장애가 발생하여도 원인을 빠르게 찾을 수 있다.&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;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;8. 기동모드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-server&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-client&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* 일반적으로 server모드로 기동하며 client모드의 경우에는 빠른 시작과 적은 메모리 사용에 최적화되어 있다.&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;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;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;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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/65</guid>
      <comments>https://gethlemn.tistory.com/65#entry65comment</comments>
      <pubDate>Mon, 21 Jun 2021 22:43:59 +0900</pubDate>
    </item>
    <item>
      <title>[MSA] 환경 배포 전략</title>
      <link>https://gethlemn.tistory.com/64</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;[배포 전략 유형]&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 롤링(Rolling), 램피드(Ramped)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순하게 서버를 구성하는 배포 전략으로 구 버전에서 신 버전으로 트래픽을 점진적으로 배포하는 전략이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 블루 그린(Blue Green)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구 버전을 Blue, 신 버전을 Green이라 부른다. 구 버전과 신 버전을 동시에 운영하여, 실제 환경과 동일하게 신 버전을 구성하여 테스트 할 수 있다. 테스트가 완료된 이후, 로드 밸런서를 통해 실제 트래픽을 신 버전으로 바라보게 한다. 또는 문제가 발생한 경우, 기존 환경으로 RollBack한다. 단점으로는 두 버전이 운영되어야 하여 비용이 두배로 발생한다.&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;3. 카나리(Canary)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카나리아라는 이름을 가진 유독가스 누출을 알리기 위한 새에서 따온 배포 전략방식이다. 특정 user에게만 배포 후 정상적이면 전체 대상으로 배포 내용을 확장하는 방식이다. 이런 방식은 A/B 테스트가 가능하게 한다.&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;4. A/B Testing&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교군을 나누고 A/B 버전의 서비스를 제공한다. 두가지 버전이 테스트 될 수 있도록 한다.&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;5. 쉐도우(Shadow)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구 버전의 요청이 신 버전에도 처리 될 수 있도록 요청을 복제한다. 구 버전에서 발생한 부하를 신 버전에서도 검증한 후 배포한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT</category>
      <author>SDeveloper</author>
      <guid isPermaLink="true">https://gethlemn.tistory.com/64</guid>
      <comments>https://gethlemn.tistory.com/64#entry64comment</comments>
      <pubDate>Mon, 21 Jun 2021 21:13:54 +0900</pubDate>
    </item>
  </channel>
</rss>